diff --git a/go.mod b/go.mod index 4ef6657bcb..547d88719c 100644 --- a/go.mod +++ b/go.mod @@ -6,11 +6,11 @@ require ( github.com/PuerkitoBio/goquery v1.8.1 github.com/cockroachdb/apd/v2 v2.0.3-0.20200518165714-d020e156310a github.com/cockroachdb/errors v1.7.5 - github.com/dolthub/dolt/go v0.40.5-0.20250423233358-e6c48f54f70d + github.com/dolthub/dolt/go v0.40.5-0.20250429163255-1fa4dcfad6a8 github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad - github.com/dolthub/go-mysql-server v0.19.1-0.20250423225005-2d6449f73e2b + github.com/dolthub/go-mysql-server v0.19.1-0.20250428224756-b9931b05c831 github.com/dolthub/sqllogictest/go v0.0.0-20240618184124-ca47f9354216 github.com/dolthub/vitess v0.0.0-20250423221552-f731ee5c5379 github.com/fatih/color v1.13.0 diff --git a/go.sum b/go.sum index 35a5070424..c4f067c4f5 100644 --- a/go.sum +++ b/go.sum @@ -256,8 +256,8 @@ github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12 h1:IdqX7J8vi/Kn3T3Ee0VzqnLqwFmgA2hr8WZETPcQjfM= github.com/dolthub/aws-sdk-go-ini-parser v0.0.0-20250305001723-2821c37f6c12/go.mod h1:rN7X8BHwkjPcfMQQ2QTAq/xM3leUSGLfb+1Js7Y6TVo= -github.com/dolthub/dolt/go v0.40.5-0.20250423233358-e6c48f54f70d h1:XT1QmzRJQNK75a7GQhzDe7eC3xmRcIR5Xoe4NcMzOSw= -github.com/dolthub/dolt/go v0.40.5-0.20250423233358-e6c48f54f70d/go.mod h1:XxLHtstDsMs2+xun7cqm9TCGMYeerQsk/7FbZFgqu4s= +github.com/dolthub/dolt/go v0.40.5-0.20250429163255-1fa4dcfad6a8 h1:dm1BhbkVH4TSLvDcMrx9BRapVp+HTQ2eMHT7/ssfPk8= +github.com/dolthub/dolt/go v0.40.5-0.20250429163255-1fa4dcfad6a8/go.mod h1:ICR1s77Y61/irQgd4EYpRGZMDCBGJ8G1uLm/4HUSgyU= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d h1:gO9+wrmNHXukPNCO1tpfCcXIdMlW/qppbUStfLvqz/U= github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20241119094239-f4e529af734d/go.mod h1:L5RDYZbC9BBWmoU2+TjTekeqqhFXX5EqH9ln00O0stY= github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 h1:u3PMzfF8RkKd3lB9pZ2bfn0qEG+1Gms9599cr0REMww= @@ -266,8 +266,8 @@ github.com/dolthub/fslock v0.0.3 h1:iLMpUIvJKMKm92+N1fmHVdxJP5NdyDK5bK7z7Ba2s2U= github.com/dolthub/fslock v0.0.3/go.mod h1:QWql+P17oAAMLnL4HGB5tiovtDuAjdDTPbuqx7bYfa0= github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad h1:66ZPawHszNu37VPQckdhX1BPPVzREsGgNxQeefnlm3g= github.com/dolthub/go-icu-regex v0.0.0-20250327004329-6799764f2dad/go.mod h1:ylU4XjUpsMcvl/BKeRRMXSH7e7WBrPXdSLvnRJYrxEA= -github.com/dolthub/go-mysql-server v0.19.1-0.20250423225005-2d6449f73e2b h1:kgKEFYkLTErT+VE4jqZsoEeq1hSKeXAOnPZA/8tDIyI= -github.com/dolthub/go-mysql-server v0.19.1-0.20250423225005-2d6449f73e2b/go.mod h1:skB7lRdqgWVqDZ/ih/DtX8iSvK15IaxRf2ASliUwgtE= +github.com/dolthub/go-mysql-server v0.19.1-0.20250428224756-b9931b05c831 h1:SxQunmO7PM6h7Tp/xaOpBv3YPX2WdZmNAUzW7ywFRio= +github.com/dolthub/go-mysql-server v0.19.1-0.20250428224756-b9931b05c831/go.mod h1:skB7lRdqgWVqDZ/ih/DtX8iSvK15IaxRf2ASliUwgtE= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63 h1:OAsXLAPL4du6tfbBgK0xXHZkOlos63RdKYS3Sgw/dfI= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63/go.mod h1:lV7lUeuDhH5thVGDCKXbatwKy2KW80L4rMT46n+Y2/Q= github.com/dolthub/ishell v0.0.0-20240701202509-2b217167d718 h1:lT7hE5k+0nkBdj/1UOSFwjWpNxf+LCApbRHgnCA17XE= diff --git a/server/ast/update.go b/server/ast/update.go index a6887fa840..a1ac8c2848 100644 --- a/server/ast/update.go +++ b/server/ast/update.go @@ -24,16 +24,21 @@ import ( ) // nodeUpdate handles *tree.Update nodes. -func nodeUpdate(ctx *Context, node *tree.Update) (*vitess.Update, error) { +func nodeUpdate(ctx *Context, node *tree.Update) (update *vitess.Update, err error) { if node == nil { return nil, nil } ctx.Auth().PushAuthType(auth.AuthType_UPDATE) defer ctx.Auth().PopAuthType() - if _, ok := node.Returning.(*tree.NoReturningClause); !ok { - return nil, errors.Errorf("RETURNING is not yet supported") + var returningExprs vitess.SelectExprs + if returning, ok := node.Returning.(*tree.ReturningExprs); ok { + returningExprs, err = nodeSelectExprs(ctx, tree.SelectExprs(*returning)) + if err != nil { + return nil, err + } } + if len(node.From) > 0 { return nil, errors.Errorf("FROM is not yet supported") } @@ -68,5 +73,6 @@ func nodeUpdate(ctx *Context, node *tree.Update) (*vitess.Update, error) { Where: where, OrderBy: orderBy, Limit: limit, + Returning: returningExprs, }, nil } diff --git a/server/connection_handler.go b/server/connection_handler.go index 022ed63dfe..902b6413ee 100644 --- a/server/connection_handler.go +++ b/server/connection_handler.go @@ -1137,21 +1137,31 @@ func returnsRow(query ConvertedQuery) bool { switch query.StatementTag { case "SELECT", "SHOW", "FETCH", "EXPLAIN", "SHOW TABLES": return true - case "INSERT": - hasReturningClause := false - sqlparser.Walk(func(node sqlparser.SQLNode) (kontinue bool, err error) { - switch node := node.(type) { - case *sqlparser.Insert: - if len(node.Returning) > 0 { - hasReturningClause = true - } - return false, nil - } - // this should be impossible, but just in case - return true, nil - }, query.AST) - return hasReturningClause + case "INSERT", "UPDATE", "DELETE": + return hasReturningClause(query.AST) default: return false } } + +// hasReturningClause return true if |statement| has a RETURNING clause defined. +func hasReturningClause(statement sqlparser.Statement) bool { + hasReturningClause := false + sqlparser.Walk(func(node sqlparser.SQLNode) (kontinue bool, err error) { + switch node := node.(type) { + case *sqlparser.Update: + if len(node.Returning) > 0 { + hasReturningClause = true + } + return false, nil + case *sqlparser.Insert: + if len(node.Returning) > 0 { + hasReturningClause = true + } + return false, nil + } + return true, nil + }, statement) + + return hasReturningClause +} diff --git a/testing/generation/command_docs/output/update_test.go b/testing/generation/command_docs/output/update_test.go index 797363ad62..9826ffd101 100644 --- a/testing/generation/command_docs/output/update_test.go +++ b/testing/generation/command_docs/output/update_test.go @@ -747,7 +747,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name * SET ( column_name ) = ( expression , expression ) , ( column_name ) = ( DEFAULT ) RETURNING *"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name ) = ( expression , expression ) , ( column_name ) = ( DEFAULT ) RETURNING *"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name , column_name ) = ( DEFAULT , expression ) , ( column_name ) = ( DEFAULT ) RETURNING *"), - Parses("UPDATE table_name SET column_name = DEFAULT , ( column_name , column_name ) = ( DEFAULT ) RETURNING *"), + Converts("UPDATE table_name SET column_name = DEFAULT , ( column_name , column_name ) = ( DEFAULT ) RETURNING *"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name , column_name ) = ( expression ) , ( column_name ) = ROW ( DEFAULT ) RETURNING *"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name alias SET ( column_name , column_name ) = ( expression , expression ) , ( column_name ) = ROW ( DEFAULT ) RETURNING *"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name SET ( column_name , column_name ) = ROW ( expression , expression ) , ( column_name , column_name ) = ROW ( DEFAULT ) RETURNING *"), @@ -966,7 +966,7 @@ func TestUpdate(t *testing.T) { Unimplemented("UPDATE table_name AS alias SET ( column_name , column_name ) = ROW ( expression ) WHERE condition RETURNING *"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name AS alias SET ( column_name ) = ( DEFAULT ) WHERE condition RETURNING *"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * alias SET ( column_name ) = ROW ( DEFAULT , DEFAULT ) WHERE condition RETURNING *"), - Parses("UPDATE table_name SET ( column_name , column_name ) = ( expression ) , column_name = expression WHERE condition RETURNING *"), + Converts("UPDATE table_name SET ( column_name , column_name ) = ( expression ) , column_name = expression WHERE condition RETURNING *"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * alias SET ( column_name ) = ROW ( expression ) , column_name = expression WHERE condition RETURNING *"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name AS alias SET ( column_name , column_name ) = ROW ( DEFAULT ) , column_name = expression WHERE condition RETURNING *"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * alias SET ( column_name ) = ( expression , expression ) , column_name = expression WHERE condition RETURNING *"), @@ -993,7 +993,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * alias SET ( column_name , column_name ) = ROW ( expression , DEFAULT ) , ( column_name ) = ( DEFAULT ) WHERE condition RETURNING *"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name , column_name ) = ROW ( expression , DEFAULT ) , ( column_name ) = ( DEFAULT ) WHERE condition RETURNING *"), Unimplemented("UPDATE table_name * SET ( column_name ) = ROW ( DEFAULT ) , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING *"), - Parses("UPDATE table_name SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING *"), + Converts("UPDATE table_name SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING *"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name SET column_name = expression , ( column_name ) = ROW ( DEFAULT ) WHERE condition RETURNING *"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name SET ( column_name ) = ROW ( DEFAULT ) , ( column_name ) = ROW ( DEFAULT ) WHERE condition RETURNING *"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name ) = ROW ( expression , expression ) , ( column_name ) = ROW ( DEFAULT ) WHERE condition RETURNING *"), @@ -1722,7 +1722,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name alias SET ( column_name , column_name ) = ( expression , DEFAULT ) , ( column_name ) = ( expression ) WHERE condition RETURNING colname"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name SET ( column_name ) = ROW ( DEFAULT , DEFAULT ) , ( column_name ) = ( expression ) WHERE condition RETURNING colname"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name SET ( column_name , column_name ) = ( SELECT 1 ) , ( column_name ) = ( expression ) WHERE condition RETURNING colname"), - Parses("UPDATE table_name AS alias SET column_name = expression , ( column_name , column_name ) = ( expression ) WHERE condition RETURNING colname"), + Converts("UPDATE table_name AS alias SET column_name = expression , ( column_name , column_name ) = ( expression ) WHERE condition RETURNING colname"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * SET ( column_name ) = ROW ( expression ) , ( column_name , column_name ) = ( expression ) WHERE condition RETURNING colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name SET ( column_name , column_name ) = ( expression , expression ) , ( column_name , column_name ) = ( expression ) WHERE condition RETURNING colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name SET ( column_name ) = ( DEFAULT , expression ) , ( column_name , column_name ) = ( expression ) WHERE condition RETURNING colname"), @@ -1742,7 +1742,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name , column_name ) = ( expression ) , ( column_name ) = ROW ( expression , expression ) WHERE condition RETURNING colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name SET ( column_name ) = ( expression , DEFAULT ) , ( column_name ) = ROW ( expression , expression ) WHERE condition RETURNING colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name SET ( column_name , column_name ) = ROW ( DEFAULT , expression ) , ( column_name , column_name ) = ROW ( expression , expression ) WHERE condition RETURNING colname"), - Parses("UPDATE table_name AS alias SET ( column_name ) = ( DEFAULT , expression ) , ( column_name ) = ( DEFAULT , expression ) WHERE condition RETURNING colname"), + Converts("UPDATE table_name AS alias SET ( column_name ) = ( DEFAULT , expression ) , ( column_name ) = ( DEFAULT , expression ) WHERE condition RETURNING colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name * SET ( column_name ) = ROW ( expression , DEFAULT ) , ( column_name ) = ( DEFAULT , expression ) WHERE condition RETURNING colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name SET ( column_name ) = ( DEFAULT ) , ( column_name , column_name ) = ( DEFAULT , expression ) WHERE condition RETURNING colname"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name ) = ( DEFAULT , expression ) , ( column_name , column_name ) = ( DEFAULT , expression ) WHERE condition RETURNING colname"), @@ -2161,7 +2161,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ROW ( expression ) , ( column_name ) = ( DEFAULT ) RETURNING colname output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name , column_name ) = ( expression , DEFAULT ) , ( column_name ) = ( DEFAULT ) RETURNING colname output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name SET column_name = expression , ( column_name , column_name ) = ( DEFAULT ) RETURNING colname output_name"), - Parses("UPDATE table_name AS alias SET ( column_name ) = ( DEFAULT , expression ) , ( column_name , column_name ) = ( DEFAULT ) RETURNING colname output_name"), + Converts("UPDATE table_name AS alias SET ( column_name ) = ( DEFAULT , expression ) , ( column_name , column_name ) = ( DEFAULT ) RETURNING colname output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name , column_name ) = ROW ( DEFAULT , expression ) , ( column_name ) = ROW ( DEFAULT ) RETURNING colname output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name SET ( column_name ) = ROW ( expression ) , ( column_name , column_name ) = ROW ( DEFAULT ) RETURNING colname output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name SET ( column_name ) = ROW ( DEFAULT , expression ) , ( column_name , column_name ) = ROW ( DEFAULT ) RETURNING colname output_name"), @@ -2411,7 +2411,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name alias SET ( column_name ) = ( expression ) , ( column_name , column_name ) = ROW ( expression ) WHERE condition RETURNING colname output_name"), Unimplemented("UPDATE ONLY table_name AS alias SET ( column_name , column_name ) = ( expression , DEFAULT ) , ( column_name , column_name ) = ROW ( expression ) WHERE condition RETURNING colname output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name ) = ROW ( DEFAULT , DEFAULT ) , ( column_name ) = ( DEFAULT ) WHERE condition RETURNING colname output_name"), - Parses("UPDATE table_name alias SET ( column_name ) = ( DEFAULT , expression ) , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING colname output_name"), + Converts("UPDATE table_name alias SET ( column_name ) = ( DEFAULT , expression ) , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING colname output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * SET ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) , ( column_name ) = ROW ( DEFAULT ) WHERE condition RETURNING colname output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) , ( column_name ) = ROW ( DEFAULT ) WHERE condition RETURNING colname output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * SET ( column_name ) = ( expression , expression ) , ( column_name , column_name ) = ROW ( DEFAULT ) WHERE condition RETURNING colname output_name"), @@ -2845,7 +2845,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ROW ( expression , expression ) , ( column_name , column_name ) = ROW ( expression ) RETURNING colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name ) = ROW ( expression , DEFAULT ) , ( column_name , column_name ) = ROW ( expression ) RETURNING colname AS output_name"), Unimplemented("UPDATE ONLY table_name alias SET ( column_name ) = ( DEFAULT ) , ( column_name ) = ( DEFAULT ) RETURNING colname AS output_name"), - Parses("UPDATE table_name alias SET ( column_name , column_name ) = ( DEFAULT , expression ) , ( column_name ) = ( DEFAULT ) RETURNING colname AS output_name"), + Converts("UPDATE table_name alias SET ( column_name , column_name ) = ( DEFAULT , expression ) , ( column_name ) = ( DEFAULT ) RETURNING colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name * alias SET ( column_name , column_name ) = ( DEFAULT , expression ) , ( column_name ) = ( DEFAULT ) RETURNING colname AS output_name"), Unimplemented("UPDATE ONLY table_name AS alias SET ( column_name , column_name ) = ROW ( DEFAULT , expression ) , ( column_name ) = ( DEFAULT ) RETURNING colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ROW ( DEFAULT ) , ( column_name , column_name ) = ( DEFAULT ) RETURNING colname AS output_name"), @@ -2880,7 +2880,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name ) = ROW ( expression , DEFAULT ) RETURNING colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name AS alias SET column_name = expression , ( column_name , column_name ) = ROW ( expression , DEFAULT ) RETURNING colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name alias SET ( column_name , column_name ) = ( expression , expression ) , ( column_name , column_name ) = ROW ( expression , DEFAULT ) RETURNING colname AS output_name"), - Parses("UPDATE table_name alias SET ( column_name ) = ( SELECT 1 ) , ( column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname AS output_name"), + Converts("UPDATE table_name alias SET ( column_name ) = ( SELECT 1 ) , ( column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name , column_name ) = ( expression ) , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name , column_name ) = ( expression ) , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name AS alias SET ( column_name ) = ( expression , expression ) , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname AS output_name"), @@ -2890,7 +2890,7 @@ func TestUpdate(t *testing.T) { Unimplemented("UPDATE table_name * alias SET ( column_name ) = ( expression ) , ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) RETURNING colname AS output_name"), Unimplemented("UPDATE table_name alias SET ( column_name ) = ( DEFAULT , expression ) , ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) RETURNING colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name AS alias SET ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) RETURNING colname AS output_name"), - Parses("UPDATE table_name AS alias SET ( column_name , column_name ) = ( expression , DEFAULT ) , ( column_name ) = ( SELECT 1 ) RETURNING colname AS output_name"), + Converts("UPDATE table_name AS alias SET ( column_name , column_name ) = ( expression , DEFAULT ) , ( column_name ) = ( SELECT 1 ) RETURNING colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name , column_name ) = ROW ( expression , DEFAULT ) , ( column_name ) = ( SELECT 1 ) RETURNING colname AS output_name"), Unimplemented("UPDATE table_name AS alias SET ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) , ( column_name ) = ( SELECT 1 ) RETURNING colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ( DEFAULT ) , ( column_name , column_name ) = ( SELECT 1 ) RETURNING colname AS output_name"), @@ -3082,7 +3082,7 @@ func TestUpdate(t *testing.T) { Unimplemented("UPDATE table_name SET ( column_name , column_name ) = ( expression , DEFAULT ) , ( column_name , column_name ) = ROW ( expression ) WHERE condition RETURNING colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name , column_name ) = ( expression , DEFAULT ) , ( column_name , column_name ) = ROW ( expression ) WHERE condition RETURNING colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name SET ( column_name ) = ( DEFAULT , expression ) , ( column_name ) = ( DEFAULT ) WHERE condition RETURNING colname AS output_name"), - Parses("UPDATE table_name SET ( column_name ) = ( expression , DEFAULT ) , ( column_name ) = ( DEFAULT ) WHERE condition RETURNING colname AS output_name"), + Converts("UPDATE table_name SET ( column_name ) = ( expression , DEFAULT ) , ( column_name ) = ( DEFAULT ) WHERE condition RETURNING colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name ) = ( expression ) , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name , column_name ) = ( DEFAULT , expression ) , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name alias SET column_name = expression , ( column_name ) = ROW ( DEFAULT ) WHERE condition RETURNING colname AS output_name"), @@ -3140,7 +3140,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name AS alias SET column_name = expression , ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * SET ( column_name ) = ( expression , expression ) , ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * alias SET ( column_name ) = ROW ( expression , DEFAULT ) , ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname AS output_name"), - Parses("UPDATE table_name AS alias SET ( column_name ) = ( DEFAULT , expression ) , ( column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname AS output_name"), + Converts("UPDATE table_name AS alias SET ( column_name ) = ( DEFAULT , expression ) , ( column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname AS output_name"), Unimplemented("UPDATE table_name AS alias SET ( column_name ) = ROW ( expression , DEFAULT ) , ( column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name AS alias SET ( column_name ) = ROW ( expression , DEFAULT ) , ( column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ROW ( DEFAULT , DEFAULT ) , ( column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname AS output_name"), @@ -3577,7 +3577,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name , column_name ) = ( expression , DEFAULT ) , ( column_name , column_name ) = ROW ( expression ) RETURNING colname , colname"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ROW ( expression ) RETURNING colname , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE ONLY table_name alias SET column_name = DEFAULT , ( column_name ) = ( DEFAULT ) RETURNING colname , colname"), - Parses("UPDATE table_name AS alias SET ( column_name , column_name ) = ( expression ) , ( column_name , column_name ) = ( DEFAULT ) RETURNING colname , colname"), + Converts("UPDATE table_name AS alias SET ( column_name , column_name ) = ( expression ) , ( column_name , column_name ) = ( DEFAULT ) RETURNING colname , colname"), Unimplemented("UPDATE table_name * alias SET ( column_name , column_name ) = ( DEFAULT , expression ) , ( column_name , column_name ) = ( DEFAULT ) RETURNING colname , colname"), Unimplemented("UPDATE table_name SET ( column_name , column_name ) = ROW ( DEFAULT , expression ) , ( column_name ) = ROW ( DEFAULT ) RETURNING colname , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name ) = ( SELECT 1 ) , ( column_name ) = ROW ( DEFAULT ) RETURNING colname , colname"), @@ -3626,7 +3626,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name ) = ( expression , expression ) , ( column_name ) = ( SELECT 1 ) RETURNING colname , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name alias SET column_name = expression , ( column_name , column_name ) = ( SELECT 1 ) RETURNING colname , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name AS alias SET ( column_name ) = ROW ( expression ) , ( column_name , column_name ) = ( SELECT 1 ) RETURNING colname , colname"), - Parses("UPDATE table_name AS alias SET ( column_name , column_name ) = ( DEFAULT ) , ( column_name , column_name ) = ( SELECT 1 ) RETURNING colname , colname"), + Converts("UPDATE table_name AS alias SET ( column_name , column_name ) = ( DEFAULT ) , ( column_name , column_name ) = ( SELECT 1 ) RETURNING colname , colname"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ROW ( expression , expression ) , ( column_name , column_name ) = ( SELECT 1 ) RETURNING colname , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ROW ( expression , expression ) , ( column_name , column_name ) = ( SELECT 1 ) RETURNING colname , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name SET ( column_name , column_name ) = ( DEFAULT , expression ) , ( column_name , column_name ) = ( SELECT 1 ) RETURNING colname , colname"), @@ -3803,7 +3803,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name * AS alias SET column_name = expression , ( column_name ) = ROW ( DEFAULT ) WHERE condition RETURNING colname , colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name ) = ROW ( expression , expression ) , ( column_name ) = ROW ( DEFAULT ) WHERE condition RETURNING colname , colname"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ROW ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ROW ( DEFAULT ) WHERE condition RETURNING colname , colname"), - Parses("UPDATE table_name SET column_name = DEFAULT , ( column_name , column_name ) = ( expression , expression ) WHERE condition RETURNING colname , colname"), + Converts("UPDATE table_name SET column_name = DEFAULT , ( column_name , column_name ) = ( expression , expression ) WHERE condition RETURNING colname , colname"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * SET ( column_name , column_name ) = ROW ( expression ) , ( column_name , column_name ) = ( expression , expression ) WHERE condition RETURNING colname , colname"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name ) = ( DEFAULT ) , ( column_name , column_name ) = ( expression , expression ) WHERE condition RETURNING colname , colname"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * SET ( column_name ) = ROW ( DEFAULT ) , ( column_name , column_name ) = ( expression , expression ) WHERE condition RETURNING colname , colname"), @@ -4244,12 +4244,12 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name alias SET ( column_name , column_name ) = ( SELECT 1 ) , ( column_name , column_name ) = ( SELECT 1 ) FROM from_item , from_item WHERE CURRENT OF cursor_name RETURNING colname , colname"), Unimplemented("UPDATE table_name AS alias SET ( column_name ) = ROW ( expression ) RETURNING colname output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name * alias SET ( column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname output_name , colname"), - Parses("UPDATE table_name AS alias SET ( column_name ) = ( DEFAULT , expression ) , column_name = expression RETURNING colname output_name , colname"), + Converts("UPDATE table_name AS alias SET ( column_name ) = ( DEFAULT , expression ) , column_name = expression RETURNING colname output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name , column_name ) = ( expression , expression ) , column_name = DEFAULT RETURNING colname output_name , colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name , column_name ) = ( expression ) , ( column_name ) = ( expression ) RETURNING colname output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name , column_name ) = ROW ( expression ) , ( column_name ) = ( expression ) RETURNING colname output_name , colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name SET ( column_name , column_name ) = ROW ( expression , DEFAULT ) , ( column_name ) = ( expression ) RETURNING colname output_name , colname"), - Parses("UPDATE table_name SET ( column_name ) = ( DEFAULT , DEFAULT ) , ( column_name ) = ( expression ) RETURNING colname output_name , colname"), + Converts("UPDATE table_name SET ( column_name ) = ( DEFAULT , DEFAULT ) , ( column_name ) = ( expression ) RETURNING colname output_name , colname"), Unimplemented("UPDATE table_name * AS alias SET ( column_name , column_name ) = ( expression , expression ) , ( column_name , column_name ) = ( expression ) RETURNING colname output_name , colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ( expression ) RETURNING colname output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name SET ( column_name ) = ( expression ) , ( column_name ) = ROW ( expression ) RETURNING colname output_name , colname"), @@ -4289,12 +4289,12 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name , column_name ) = ROW ( DEFAULT ) , ( column_name ) = ( expression , DEFAULT ) RETURNING colname output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name * SET ( column_name ) = ( SELECT 1 ) , ( column_name ) = ( expression , DEFAULT ) RETURNING colname output_name , colname"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ( SELECT 1 ) , ( column_name ) = ( expression , DEFAULT ) RETURNING colname output_name , colname"), - Parses("UPDATE table_name alias SET ( column_name , column_name ) = ( DEFAULT ) , ( column_name , column_name ) = ( expression , DEFAULT ) RETURNING colname output_name , colname"), + Converts("UPDATE table_name alias SET ( column_name , column_name ) = ( DEFAULT ) , ( column_name , column_name ) = ( expression , DEFAULT ) RETURNING colname output_name , colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * SET ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ( expression , DEFAULT ) RETURNING colname output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ( SELECT 1 ) , ( column_name , column_name ) = ( expression , DEFAULT ) RETURNING colname output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name alias SET column_name = DEFAULT , ( column_name ) = ROW ( expression , DEFAULT ) RETURNING colname output_name , colname"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name SET ( column_name ) = ( expression ) , ( column_name ) = ROW ( expression , DEFAULT ) RETURNING colname output_name , colname"), - Parses("UPDATE table_name alias SET column_name = expression , ( column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname output_name , colname"), + Converts("UPDATE table_name alias SET column_name = expression , ( column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname output_name , colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name SET ( column_name ) = ROW ( DEFAULT , expression ) , ( column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name SET ( column_name ) = ( expression ) , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE ONLY table_name SET ( column_name , column_name ) = ROW ( expression , DEFAULT ) , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname output_name , colname"), @@ -4503,7 +4503,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name alias SET ( column_name , column_name ) = ( expression ) , ( column_name ) = ( DEFAULT ) WHERE condition RETURNING colname output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name ) = ROW ( DEFAULT ) , ( column_name ) = ( DEFAULT ) WHERE condition RETURNING colname output_name , colname"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name ) = ROW ( expression , expression ) , ( column_name ) = ( DEFAULT ) WHERE condition RETURNING colname output_name , colname"), - Parses("UPDATE table_name alias SET column_name = expression , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING colname output_name , colname"), + Converts("UPDATE table_name alias SET column_name = expression , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING colname output_name , colname"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name , column_name ) = ( expression ) , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING colname output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name AS alias SET ( column_name , column_name ) = ( expression ) , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING colname output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * SET ( column_name ) = ROW ( expression ) , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING colname output_name , colname"), @@ -4523,7 +4523,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name SET ( column_name ) = ( expression , expression ) , ( column_name , column_name ) = ( expression , expression ) WHERE condition RETURNING colname output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name AS alias SET ( column_name , column_name ) = ( expression , expression ) , ( column_name , column_name ) = ( expression , expression ) WHERE condition RETURNING colname output_name , colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ( expression , expression ) WHERE condition RETURNING colname output_name , colname"), - Parses("UPDATE table_name SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ( expression , expression ) WHERE condition RETURNING colname output_name , colname"), + Converts("UPDATE table_name SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ( expression , expression ) WHERE condition RETURNING colname output_name , colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name AS alias SET column_name = DEFAULT , ( column_name ) = ROW ( expression , expression ) WHERE condition RETURNING colname output_name , colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name alias SET ( column_name ) = ROW ( expression ) , ( column_name ) = ROW ( expression , expression ) WHERE condition RETURNING colname output_name , colname"), Unimplemented("UPDATE table_name * AS alias SET ( column_name ) = ( DEFAULT ) , ( column_name ) = ROW ( expression , expression ) WHERE condition RETURNING colname output_name , colname"), @@ -4552,7 +4552,7 @@ func TestUpdate(t *testing.T) { Unimplemented("UPDATE table_name * AS alias SET ( column_name ) = ROW ( expression ) , ( column_name ) = ( expression , DEFAULT ) WHERE condition RETURNING colname output_name , colname"), Unimplemented("UPDATE table_name AS alias SET ( column_name ) = ROW ( DEFAULT , expression ) , ( column_name ) = ( expression , DEFAULT ) WHERE condition RETURNING colname output_name , colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name ) = ( expression , DEFAULT ) WHERE condition RETURNING colname output_name , colname"), - Parses("UPDATE table_name AS alias SET ( column_name ) = ( SELECT 1 ) , ( column_name ) = ( expression , DEFAULT ) WHERE condition RETURNING colname output_name , colname"), + Converts("UPDATE table_name AS alias SET ( column_name ) = ( SELECT 1 ) , ( column_name ) = ( expression , DEFAULT ) WHERE condition RETURNING colname output_name , colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * alias SET ( column_name ) = ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ( expression , DEFAULT ) WHERE condition RETURNING colname output_name , colname"), Unimplemented("UPDATE ONLY table_name SET ( column_name ) = ROW ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ( expression , DEFAULT ) WHERE condition RETURNING colname output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name * alias SET ( column_name ) = ( DEFAULT , expression ) , ( column_name ) = ROW ( expression , DEFAULT ) WHERE condition RETURNING colname output_name , colname"), @@ -5008,7 +5008,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ( expression , DEFAULT ) , ( column_name , column_name ) = ROW ( expression , expression ) RETURNING colname AS output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name AS alias SET ( column_name ) = ( expression ) , ( column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * SET ( column_name , column_name ) = ROW ( expression , DEFAULT ) , ( column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname"), - Parses("UPDATE table_name SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname"), + Converts("UPDATE table_name SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name SET ( column_name , column_name ) = ( expression , expression ) , ( column_name , column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name SET ( column_name , column_name ) = ROW ( expression , DEFAULT ) , ( column_name , column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name alias SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname"), @@ -5020,7 +5020,7 @@ func TestUpdate(t *testing.T) { Unimplemented("UPDATE ONLY table_name alias SET ( column_name ) = ( expression , DEFAULT ) , ( column_name , column_name ) = ROW ( DEFAULT , expression ) RETURNING colname AS output_name , colname"), Unimplemented("UPDATE table_name SET ( column_name ) = ROW ( expression ) , ( column_name ) = ( expression , DEFAULT ) RETURNING colname AS output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name SET ( column_name ) = ( DEFAULT , expression ) , ( column_name ) = ( expression , DEFAULT ) RETURNING colname AS output_name , colname"), - Parses("UPDATE table_name AS alias SET ( column_name ) = ( expression ) , ( column_name , column_name ) = ( expression , DEFAULT ) RETURNING colname AS output_name , colname"), + Converts("UPDATE table_name AS alias SET ( column_name ) = ( expression ) , ( column_name , column_name ) = ( expression , DEFAULT ) RETURNING colname AS output_name , colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * alias SET ( column_name , column_name ) = ( expression ) , ( column_name , column_name ) = ( expression , DEFAULT ) RETURNING colname AS output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name SET ( column_name , column_name ) = ROW ( expression ) , ( column_name , column_name ) = ( expression , DEFAULT ) RETURNING colname AS output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE ONLY table_name SET ( column_name , column_name ) = ROW ( expression , expression ) , ( column_name , column_name ) = ( expression , DEFAULT ) RETURNING colname AS output_name , colname"), @@ -5275,7 +5275,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name * SET ( column_name , column_name ) = ( DEFAULT , expression ) , ( column_name ) = ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname AS output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ROW ( DEFAULT ) , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname AS output_name , colname"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name SET ( column_name ) = ( SELECT 1 ) , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname AS output_name , colname"), - Parses("UPDATE table_name alias SET ( column_name , column_name ) = ( SELECT 1 ) , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname AS output_name , colname"), + Converts("UPDATE table_name alias SET ( column_name , column_name ) = ( SELECT 1 ) , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname AS output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name , column_name ) = ( expression ) , ( column_name ) = ROW ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname AS output_name , colname"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name * alias SET ( column_name ) = ( DEFAULT , DEFAULT ) , ( column_name ) = ROW ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname AS output_name , colname"), Unimplemented("UPDATE table_name * alias SET ( column_name ) = ( SELECT 1 ) , ( column_name ) = ROW ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname AS output_name , colname"), @@ -7047,7 +7047,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * SET ( column_name ) = ( expression ) , ( column_name , column_name ) = ( SELECT 1 ) FROM from_item , from_item WHERE CURRENT OF cursor_name RETURNING colname output_name , colname output_name"), Unimplemented("UPDATE ONLY table_name AS alias SET ( column_name , column_name ) = ROW ( expression , DEFAULT ) , ( column_name , column_name ) = ( SELECT 1 ) FROM from_item , from_item WHERE CURRENT OF cursor_name RETURNING colname output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name , column_name ) = ROW ( expression , DEFAULT ) , ( column_name , column_name ) = ( SELECT 1 ) FROM from_item , from_item WHERE CURRENT OF cursor_name RETURNING colname output_name , colname output_name"), - Parses("UPDATE table_name alias SET column_name = expression RETURNING colname AS output_name , colname output_name"), + Converts("UPDATE table_name alias SET column_name = expression RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name SET ( column_name ) = ROW ( DEFAULT ) RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name , column_name ) = ( expression , expression ) RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name , column_name ) = ROW ( DEFAULT , expression ) RETURNING colname AS output_name , colname output_name"), @@ -7055,7 +7055,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name SET ( column_name ) = ROW ( DEFAULT ) , column_name = expression RETURNING colname AS output_name , colname output_name"), Unimplemented("UPDATE table_name alias SET ( column_name , column_name ) = ROW ( DEFAULT ) , column_name = expression RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * alias SET ( column_name , column_name ) = ROW ( DEFAULT ) , column_name = expression RETURNING colname AS output_name , colname output_name"), - Parses("UPDATE table_name alias SET ( column_name ) = ( expression , expression ) , column_name = expression RETURNING colname AS output_name , colname output_name"), + Converts("UPDATE table_name alias SET ( column_name ) = ( expression , expression ) , column_name = expression RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ROW ( DEFAULT , DEFAULT ) , column_name = expression RETURNING colname AS output_name , colname output_name"), Unimplemented("UPDATE table_name * alias SET ( column_name ) = ( DEFAULT ) , column_name = DEFAULT RETURNING colname AS output_name , colname output_name"), Unimplemented("UPDATE table_name AS alias SET ( column_name ) = ROW ( expression , expression ) , ( column_name ) = ( expression ) RETURNING colname AS output_name , colname output_name"), @@ -7101,7 +7101,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name ) = ( expression , expression ) , ( column_name , column_name ) = ROW ( expression , expression ) RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name alias SET ( column_name ) = ( expression ) , ( column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name SET ( column_name ) = ( DEFAULT ) , ( column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname output_name"), - Parses("UPDATE table_name SET ( column_name , column_name ) = ( expression , expression ) , ( column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname output_name"), + Converts("UPDATE table_name SET ( column_name , column_name ) = ( expression , expression ) , ( column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name ) = ( DEFAULT , DEFAULT ) , ( column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name , column_name ) = ROW ( expression , DEFAULT ) , ( column_name , column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname output_name"), @@ -7289,12 +7289,12 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * AS alias SET column_name = DEFAULT , column_name = expression WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name SET ( column_name ) = ( expression , DEFAULT ) , column_name = expression WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("UPDATE ONLY table_name SET ( column_name , column_name ) = ( expression ) , column_name = DEFAULT WHERE condition RETURNING colname AS output_name , colname output_name"), - Parses("UPDATE table_name SET ( column_name ) = ( DEFAULT ) , column_name = DEFAULT WHERE condition RETURNING colname AS output_name , colname output_name"), + Converts("UPDATE table_name SET ( column_name ) = ( DEFAULT ) , column_name = DEFAULT WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name alias SET ( column_name ) = ( expression , DEFAULT ) , column_name = DEFAULT WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("UPDATE table_name AS alias SET ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) , column_name = DEFAULT WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name * alias SET column_name = expression , ( column_name ) = ( expression ) WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name ) = ROW ( DEFAULT ) , ( column_name ) = ( expression ) WHERE condition RETURNING colname AS output_name , colname output_name"), - Parses("UPDATE table_name AS alias SET ( column_name ) = ( expression , expression ) , ( column_name ) = ( expression ) WHERE condition RETURNING colname AS output_name , colname output_name"), + Converts("UPDATE table_name AS alias SET ( column_name ) = ( expression , expression ) , ( column_name ) = ( expression ) WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * SET ( column_name ) = ( expression , DEFAULT ) , ( column_name ) = ( expression ) WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name SET ( column_name ) = ( DEFAULT , DEFAULT ) , ( column_name ) = ( expression ) WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name alias SET ( column_name ) = ( expression ) , ( column_name , column_name ) = ( expression ) WHERE condition RETURNING colname AS output_name , colname output_name"), @@ -7311,7 +7311,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH queryname AS ( select ) UPDATE table_name * alias SET ( column_name ) = ( expression , expression ) , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ROW ( DEFAULT , expression ) , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("UPDATE table_name * SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING colname AS output_name , colname output_name"), - Parses("UPDATE table_name SET ( column_name , column_name ) = ( SELECT 1 ) , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING colname AS output_name , colname output_name"), + Converts("UPDATE table_name SET ( column_name , column_name ) = ( SELECT 1 ) , ( column_name , column_name ) = ( DEFAULT ) WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("UPDATE table_name * AS alias SET ( column_name ) = ( DEFAULT ) , ( column_name , column_name ) = ROW ( DEFAULT ) WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("UPDATE table_name alias SET ( column_name , column_name ) = ROW ( DEFAULT , expression ) , ( column_name , column_name ) = ROW ( DEFAULT ) WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("UPDATE table_name AS alias SET ( column_name , column_name ) = ROW ( expression , DEFAULT ) , ( column_name , column_name ) = ROW ( DEFAULT ) WHERE condition RETURNING colname AS output_name , colname output_name"), @@ -7365,7 +7365,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name AS alias SET column_name = expression , ( column_name , column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name alias SET column_name = DEFAULT , ( column_name , column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ( expression ) , ( column_name , column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname AS output_name , colname output_name"), - Parses("UPDATE table_name AS alias SET ( column_name ) = ( expression , DEFAULT ) , ( column_name , column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname AS output_name , colname output_name"), + Converts("UPDATE table_name AS alias SET ( column_name ) = ( expression , DEFAULT ) , ( column_name , column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("UPDATE ONLY table_name SET ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * alias SET column_name = expression FROM from_item WHERE condition RETURNING colname AS output_name , colname output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET column_name = DEFAULT FROM from_item WHERE condition RETURNING colname AS output_name , colname output_name"), @@ -7806,7 +7806,7 @@ func TestUpdate(t *testing.T) { Unimplemented("UPDATE ONLY table_name SET ( column_name ) = ( DEFAULT ) , column_name = DEFAULT RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name , column_name ) = ROW ( expression , expression ) , column_name = DEFAULT RETURNING colname , colname AS output_name"), Unimplemented("UPDATE table_name * SET ( column_name ) = ROW ( DEFAULT , expression ) , column_name = DEFAULT RETURNING colname , colname AS output_name"), - Parses("UPDATE table_name AS alias SET ( column_name ) = ( SELECT 1 ) , column_name = DEFAULT RETURNING colname , colname AS output_name"), + Converts("UPDATE table_name AS alias SET ( column_name ) = ( SELECT 1 ) , column_name = DEFAULT RETURNING colname , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name alias SET ( column_name , column_name ) = ROW ( expression , expression ) , ( column_name ) = ( expression ) RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name ) = ( expression , DEFAULT ) , ( column_name ) = ( expression ) RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name ) = ROW ( expression , DEFAULT ) , ( column_name ) = ( expression ) RETURNING colname , colname AS output_name"), @@ -7824,13 +7824,13 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name alias SET ( column_name , column_name ) = ( SELECT 1 ) , ( column_name , column_name ) = ROW ( expression ) RETURNING colname , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name alias SET column_name = expression , ( column_name ) = ( DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * AS alias SET column_name = DEFAULT , ( column_name ) = ( DEFAULT ) RETURNING colname , colname AS output_name"), - Parses("UPDATE table_name alias SET ( column_name ) = ( DEFAULT , expression ) , ( column_name ) = ( DEFAULT ) RETURNING colname , colname AS output_name"), + Converts("UPDATE table_name alias SET ( column_name ) = ( DEFAULT , expression ) , ( column_name ) = ( DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name SET ( column_name , column_name ) = ( expression , DEFAULT ) , ( column_name ) = ( DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name ) = ( SELECT 1 ) , ( column_name ) = ( DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("UPDATE table_name AS alias SET ( column_name , column_name ) = ( expression ) , ( column_name , column_name ) = ROW ( DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("UPDATE table_name alias SET ( column_name ) = ROW ( expression ) , ( column_name , column_name ) = ROW ( DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("UPDATE ONLY table_name alias SET ( column_name ) = ROW ( expression , expression ) , ( column_name , column_name ) = ROW ( DEFAULT ) RETURNING colname , colname AS output_name"), - Parses("UPDATE table_name AS alias SET ( column_name , column_name ) = ( expression , expression ) , ( column_name ) = ( expression , expression ) RETURNING colname , colname AS output_name"), + Converts("UPDATE table_name AS alias SET ( column_name , column_name ) = ( expression , expression ) , ( column_name ) = ( expression , expression ) RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name ) = ROW ( expression , expression ) , ( column_name ) = ( expression , expression ) RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * SET ( column_name , column_name ) = ROW ( expression , expression ) , ( column_name ) = ( expression , expression ) RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name ) = ROW ( DEFAULT , expression ) , ( column_name ) = ( expression , expression ) RETURNING colname , colname AS output_name"), @@ -7869,7 +7869,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * alias SET ( column_name , column_name ) = ROW ( DEFAULT ) , ( column_name ) = ( expression , DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name ) = ROW ( DEFAULT , DEFAULT ) , ( column_name ) = ( expression , DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name alias SET ( column_name ) = ROW ( DEFAULT , expression ) , ( column_name , column_name ) = ( expression , DEFAULT ) RETURNING colname , colname AS output_name"), - Parses("UPDATE table_name alias SET ( column_name , column_name ) = ( expression , DEFAULT ) , ( column_name , column_name ) = ( expression , DEFAULT ) RETURNING colname , colname AS output_name"), + Converts("UPDATE table_name alias SET ( column_name , column_name ) = ( expression , DEFAULT ) , ( column_name , column_name ) = ( expression , DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ( SELECT 1 ) , ( column_name , column_name ) = ( expression , DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * AS alias SET column_name = expression , ( column_name ) = ROW ( expression , DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("UPDATE table_name * SET ( column_name , column_name ) = ROW ( expression ) , ( column_name ) = ROW ( expression , DEFAULT ) RETURNING colname , colname AS output_name"), @@ -7884,7 +7884,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name , column_name ) = ( DEFAULT , expression ) , ( column_name , column_name ) = ROW ( expression , DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * alias SET ( column_name ) = ( expression , DEFAULT ) , ( column_name , column_name ) = ROW ( expression , DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ROW ( expression , DEFAULT ) RETURNING colname , colname AS output_name"), - Parses("UPDATE table_name SET column_name = DEFAULT , ( column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname , colname AS output_name"), + Converts("UPDATE table_name SET column_name = DEFAULT , ( column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * alias SET ( column_name ) = ROW ( DEFAULT ) , ( column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name AS alias SET column_name = expression , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name AS alias SET ( column_name , column_name ) = ( DEFAULT ) , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname , colname AS output_name"), @@ -8056,10 +8056,10 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH queryname AS ( select ) UPDATE table_name * alias SET ( column_name ) = ROW ( expression ) , ( column_name ) = ( SELECT 1 ) FROM from_item , from_item RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name SET ( column_name ) = ROW ( DEFAULT , expression ) , ( column_name , column_name ) = ( SELECT 1 ) FROM from_item , from_item RETURNING colname , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * alias SET ( column_name , column_name ) = ROW ( expression , DEFAULT ) WHERE condition RETURNING colname , colname AS output_name"), - Parses("UPDATE table_name AS alias SET ( column_name , column_name ) = ( expression ) , column_name = expression WHERE condition RETURNING colname , colname AS output_name"), + Converts("UPDATE table_name AS alias SET ( column_name , column_name ) = ( expression ) , column_name = expression WHERE condition RETURNING colname , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name , column_name ) = ( SELECT 1 ) , column_name = expression WHERE condition RETURNING colname , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name AS alias SET ( column_name , column_name ) = ROW ( expression ) , column_name = DEFAULT WHERE condition RETURNING colname , colname AS output_name"), - Parses("UPDATE table_name AS alias SET ( column_name ) = ( expression , DEFAULT ) , column_name = DEFAULT WHERE condition RETURNING colname , colname AS output_name"), + Converts("UPDATE table_name AS alias SET ( column_name ) = ( expression , DEFAULT ) , column_name = DEFAULT WHERE condition RETURNING colname , colname AS output_name"), Unimplemented("UPDATE table_name * AS alias SET ( column_name ) = ROW ( expression ) , ( column_name , column_name ) = ( expression ) WHERE condition RETURNING colname , colname AS output_name"), Unimplemented("UPDATE ONLY table_name SET ( column_name ) = ROW ( expression , expression ) , ( column_name , column_name ) = ( expression ) WHERE condition RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name SET ( column_name , column_name ) = ( DEFAULT , expression ) , ( column_name , column_name ) = ( expression ) WHERE condition RETURNING colname , colname AS output_name"), @@ -8114,7 +8114,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name SET ( column_name , column_name ) = ROW ( expression ) , ( column_name ) = ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name ) = ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * SET ( column_name ) = ( SELECT 1 ) , ( column_name ) = ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname , colname AS output_name"), - Parses("UPDATE table_name AS alias SET ( column_name , column_name ) = ( SELECT 1 ) , ( column_name ) = ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname , colname AS output_name"), + Converts("UPDATE table_name AS alias SET ( column_name , column_name ) = ( SELECT 1 ) , ( column_name ) = ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET column_name = DEFAULT , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name alias SET ( column_name , column_name ) = ( DEFAULT ) , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name * AS alias SET ( column_name ) = ( expression , expression ) , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) WHERE condition RETURNING colname , colname AS output_name"), @@ -8129,7 +8129,7 @@ func TestUpdate(t *testing.T) { Unimplemented("UPDATE table_name * alias SET ( column_name ) = ( expression , DEFAULT ) , ( column_name , column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname , colname AS output_name"), Unimplemented("UPDATE table_name * SET ( column_name , column_name ) = ( expression , DEFAULT ) , ( column_name , column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * SET ( column_name , column_name ) = ROW ( expression , DEFAULT ) , ( column_name , column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname , colname AS output_name"), - Parses("UPDATE table_name AS alias SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname , colname AS output_name"), + Converts("UPDATE table_name AS alias SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ( SELECT 1 ) WHERE condition RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name ) = ROW ( expression ) FROM from_item WHERE condition RETURNING colname , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name AS alias SET ( column_name ) = ROW ( DEFAULT ) FROM from_item WHERE condition RETURNING colname , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name , column_name ) = ROW ( DEFAULT ) FROM from_item WHERE condition RETURNING colname , colname AS output_name"), @@ -8592,7 +8592,7 @@ func TestUpdate(t *testing.T) { Unimplemented("UPDATE ONLY table_name SET ( column_name ) = ( expression , expression ) , ( column_name ) = ROW ( expression , DEFAULT ) RETURNING colname output_name , colname AS output_name"), Unimplemented("UPDATE ONLY table_name AS alias SET ( column_name ) = ROW ( expression , expression ) , ( column_name ) = ROW ( expression , DEFAULT ) RETURNING colname output_name , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name alias SET ( column_name , column_name ) = ( expression ) , ( column_name , column_name ) = ROW ( expression , DEFAULT ) RETURNING colname output_name , colname AS output_name"), - Parses("UPDATE table_name AS alias SET ( column_name ) = ( expression ) , ( column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname output_name , colname AS output_name"), + Converts("UPDATE table_name AS alias SET ( column_name ) = ( expression ) , ( column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname output_name , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name * SET ( column_name , column_name ) = ( expression ) , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname output_name , colname AS output_name"), Unimplemented("UPDATE ONLY table_name AS alias SET ( column_name ) = ( DEFAULT , expression ) , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname output_name , colname AS output_name"), Unimplemented("UPDATE table_name * SET ( column_name ) = ROW ( expression , DEFAULT ) , ( column_name , column_name ) = ( DEFAULT , DEFAULT ) RETURNING colname output_name , colname AS output_name"), @@ -8824,7 +8824,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name SET ( column_name ) = ROW ( expression , expression ) , ( column_name , column_name ) = ROW ( expression , expression ) WHERE condition RETURNING colname output_name , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ROW ( expression , expression ) WHERE condition RETURNING colname output_name , colname AS output_name"), Unimplemented("UPDATE ONLY table_name AS alias SET ( column_name , column_name ) = ( DEFAULT , DEFAULT ) , ( column_name , column_name ) = ROW ( expression , expression ) WHERE condition RETURNING colname output_name , colname AS output_name"), - Parses("UPDATE table_name AS alias SET ( column_name ) = ( expression ) , ( column_name ) = ( DEFAULT , expression ) WHERE condition RETURNING colname output_name , colname AS output_name"), + Converts("UPDATE table_name AS alias SET ( column_name ) = ( expression ) , ( column_name ) = ( DEFAULT , expression ) WHERE condition RETURNING colname output_name , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) , ( column_name ) = ( DEFAULT , expression ) WHERE condition RETURNING colname output_name , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name SET ( column_name , column_name ) = ( SELECT 1 ) , ( column_name ) = ( DEFAULT , expression ) WHERE condition RETURNING colname output_name , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name SET ( column_name ) = ( expression ) , ( column_name , column_name ) = ( DEFAULT , expression ) WHERE condition RETURNING colname output_name , colname AS output_name"), @@ -9321,7 +9321,7 @@ func TestUpdate(t *testing.T) { Unimplemented("UPDATE table_name AS alias SET ( column_name , column_name ) = ROW ( expression , expression ) , ( column_name ) = ( expression , expression ) RETURNING colname AS output_name , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE table_name SET ( column_name , column_name ) = ROW ( expression , expression ) , ( column_name , column_name ) = ( expression , expression ) RETURNING colname AS output_name , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE ONLY table_name AS alias SET ( column_name ) = ( expression , expression ) , ( column_name , column_name ) = ROW ( expression , expression ) RETURNING colname AS output_name , colname AS output_name"), - Parses("UPDATE table_name alias SET column_name = DEFAULT , ( column_name , column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname AS output_name"), + Converts("UPDATE table_name alias SET column_name = DEFAULT , ( column_name , column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE table_name * alias SET ( column_name , column_name ) = ROW ( DEFAULT ) , ( column_name , column_name ) = ( DEFAULT , expression ) RETURNING colname AS output_name , colname AS output_name"), Unimplemented("UPDATE table_name SET ( column_name ) = ( expression ) , ( column_name , column_name ) = ROW ( DEFAULT , expression ) RETURNING colname AS output_name , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) UPDATE table_name SET ( column_name , column_name ) = ROW ( expression , expression ) , ( column_name , column_name ) = ROW ( DEFAULT , expression ) RETURNING colname AS output_name , colname AS output_name"), @@ -9568,7 +9568,7 @@ func TestUpdate(t *testing.T) { Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name , column_name ) = ROW ( expression , DEFAULT ) , ( column_name ) = ( DEFAULT , expression ) WHERE condition RETURNING colname AS output_name , colname AS output_name"), Unimplemented("UPDATE table_name * alias SET ( column_name , column_name ) = ROW ( DEFAULT , DEFAULT ) , ( column_name ) = ( DEFAULT , expression ) WHERE condition RETURNING colname AS output_name , colname AS output_name"), Unimplemented("WITH RECURSIVE queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name SET ( column_name ) = ( SELECT 1 ) , ( column_name ) = ( DEFAULT , expression ) WHERE condition RETURNING colname AS output_name , colname AS output_name"), - Parses("UPDATE table_name alias SET ( column_name ) = ( expression , DEFAULT ) , ( column_name , column_name ) = ( DEFAULT , expression ) WHERE condition RETURNING colname AS output_name , colname AS output_name"), + Converts("UPDATE table_name alias SET ( column_name ) = ( expression , DEFAULT ) , ( column_name , column_name ) = ( DEFAULT , expression ) WHERE condition RETURNING colname AS output_name , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE ONLY table_name alias SET ( column_name ) = ( expression ) , ( column_name ) = ROW ( DEFAULT , expression ) WHERE condition RETURNING colname AS output_name , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) , queryname AS ( select ) UPDATE table_name alias SET ( column_name ) = ( expression ) , ( column_name , column_name ) = ROW ( DEFAULT , expression ) WHERE condition RETURNING colname AS output_name , colname AS output_name"), Unimplemented("WITH queryname AS ( select ) UPDATE ONLY table_name SET ( column_name ) = ( DEFAULT , expression ) , ( column_name , column_name ) = ROW ( DEFAULT , expression ) WHERE condition RETURNING colname AS output_name , colname AS output_name"), diff --git a/testing/go/update_test.go b/testing/go/update_test.go index 3c3e8e62f2..70310d1826 100755 --- a/testing/go/update_test.go +++ b/testing/go/update_test.go @@ -94,5 +94,44 @@ func TestUpdate(t *testing.T) { }, }, }, + { + Name: "UPDATE ... RETURNING", + SetUpScript: []string{ + "CREATE TABLE t (pk INT PRIMARY KEY, c1 TEXT);", + "INSERT INTO t VALUES (1, 'one');", + }, + Assertions: []ScriptTestAssertion{ + { + Query: "UPDATE t SET pk = pk+1, c1 = '42' RETURNING c1, pk, pk * 2;", + Expected: []sql.Row{{"42", 2, 4}}, + }, + { + // TODO: * requires extra analysis to expand columns + Skip: true, + Query: "UPDATE t SET c1 = '43' RETURNING *;", + Expected: []sql.Row{{1, "43"}}, + }, + }, + }, + { + // TODO: Update joins are not supported yet + Skip: true, + Name: "UPDATE ... RETURNING with join", + SetUpScript: []string{ + "CREATE TABLE employees (id SERIAL PRIMARY KEY, name TEXT, department_id INT, salary NUMERIC);", + "CREATE TABLE departments (id SERIAL PRIMARY KEY, name TEXT, bonus NUMERIC);", + "INSERT INTO employees (name, department_id, salary) VALUES ('Alice', 1, 50000), ('Bob', 2, 60000);", + "INSERT INTO departments (name, bonus) VALUES ('Engineering', 5000), ('Marketing', 3000);", + }, + Assertions: []ScriptTestAssertion{ + { + Query: "UPDATE employees e SET salary = salary + d.bonus FROM departments d WHERE e.department_id = d.id RETURNING e.id, e.name, e.salary;", + Expected: []sql.Row{ + {1, "Alice", 55000}, + {2, "Bob", 63000}, + }, + }, + }, + }, }) }