Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Created by
brew bumpCreated with
brew bump-formula-pr.release notes
A push to a remote works by uploading the missing content and then adding references to it in the remote datastore. If the remote is running a GC during the push, it is possible for the newly added data to be collected and no longer be available when the references are added.
This should cause a transient failure which is safe is retry. There were a couple bugs which could instead cause a panic. This makes some changes to safeguard against those case.
This avoids delivering the chunk more than once, which parts of the application layer are not expecting.
This PR fixes index coll to use pointer receivers, and consolidates some errors to use the ones defined in GMS
companion pr: implement
if [not] existslogic for DDL aroundviews andindexes dolthub/go-mysql-server#3006This Pr implements issue #7623.
Includes the following changes:
dolt_stashessystem table to view current stashes. Currently read-only.dolt_stash()stored procedure to use in the server context. Must be given a specific command (push, pop, clear, or drop) and a stash name.dolt_preview_merge_conflictstable functionThis table function shows which rows are conflicting for a table between two branches. Will error if there are schema conflicts
dolt_preview_merge_conflicts_summarytable functionThis table function shows which tables are conflicting between two branches and how many data and/or schema conflicts there are for each table
go-mysql-server
insert...select...returningFixes dolthub/dolt#9248
leftandinstrfunctionfixes: Using LEFT on TEXT column fails with "invalid type: *val.TextStorage" dolthub/dolt#9322
*inreturningclausespart of dolthub/dolt#9248
UPDATE ... FROMin DoltgresMinor changes to support
UPDATE ... FROMin Doltgres (Add support forUPDATE ... FROMdolthub/doltgresql#1536)While working on this, I noticed a few issues with the
UPDATE ... JOINsupport in GMS:UPDATE ... JOINinPlanBuilder.buildUpdate()and in the analyzer rulemodifyUpdateExprsForJoin. Not allUPDATE ... JOINstatements can be handled in PlanBuilder, because some statements, likeIN SUBQUERY, are transformed into a join during analysis, so we need logic in the analyzer to identifyUPDATE ... JOINplans after that transformation. To reduce the duplication, I removed the logic from PlanBuilder and now we rely on on themodifyUpdateExprsForJoinrule to mark allUPDATE ... JOINplans.plan.GetUpdatable()to get a reference to the table being updated, butUPDATE ... JOINcan update multiple tables. TheGetUpdatable()APIs should be refactored to model this, otherwise we cannot accurately track multiple tables being modified and apply all the correct triggers/constraints.UPDATE ... JOINnever honors foreign key constraints, due to limitations in the concrete typeUpdateJoin.GetUpdatable()returns. TheupdatableJoinTabletype does not implementsql.ForeignKeyTable, so GMS is unable to load any foreign key constraints from it. This also needs to be handled in a future PR.hasSingleOutputAs part of adding support for
IS NULLandIS NOT NULLimplementations that can match Postgres's behavior for records, I've been digging through the references toexpression.IsNullin GMS so that we can have a separate implementation for Doltgres that GMS can still analyze correctly.One reference to
expression.IsNullis in thehasSingleOutputwhich is used to determine if an expression result has a single row or more than one row. The only expression implementation I was able to find that actually returns multiple rows isplan.Subquery, so I simplified this function to remove the reference toexpression.IsNull.insert...returning...queriespart of dolthub/dolt#9248
insert...returning *currently doesn't work. Similar to dolthub/doltgresql#1432This is a proposed fix for Dolt issue: Dolt start time of queries in logs is all pinned to the connection open start time dolthub/dolt#8909
I'm not certain if we want to just add this field or replace connect time. I think this implementation is safer.
if [not] existslogic for DDL aroundviews andindexesThis PR adds support for queries:
create view if not exists ...create index if not exists ...alter table ... add index if not exists ...drop index if exists ...fixes:
IF (NOT) EXISTSdoes not work for someCREATE ...- andDROP-Statements dolthub/dolt#9293companion pr: add
if not existsoption tocreate viewdolthub/vitess#417vitess
returninga reserved keywordPart of dolthub/dolt#9248
Making
returninga reserved keyword allows forreturningclause in all types of insert statementsinsert...returning...(most cases)Part of dolthub/dolt#9248
Insert...returning...statements work withinsert_data_aliasandSET assignment_listcases. The following examples (from the MariaDB documentation) work.insert...returning...to work withinsert_data_selectcases. TheRETURNINGclause is not supported for the following and would lead to a syntax error.RETURNINGclause, there was a grammar conflict because the parser was not able to distinguish between a column alias and the 'RETURNING' keyword. This could be resolved by makingRETURNINGa reserved keyword, but we decided against that sinceRETURNINGis a non-reserved keyword in MySQL (doc).I ran into a similar conflict with
insert_data_aliascases because the parser was not able to distinguish between a table alias and theRETURNINGkeyword. This was resolved by addingRETURNINGtonon_reserved_keyword2. This meansRETURNINGcan't be used as a table alias and may cause some customer issues but the likelihood is very low.Also removed TestSingle from parse_test.go (we already have TestSingleSQL)
if not existsoption tocreate viewsyntax for:
IF (NOT) EXISTSdoes not work for someCREATE ...- andDROP-Statements dolthub/dolt#9293Introduced in MySQL 9.1: https://dev.mysql.com/doc/refman/9.1/en/create-view.html
Closed Issues
IF (NOT) EXISTSdoes not work for someCREATE ...- andDROP-StatementsView the full release notes at https://github.com/dolthub/dolt/releases/tag/v1.55.0.