From dc2c0db22ccb13ca1aceb6a360b0938b230c0136 Mon Sep 17 00:00:00 2001 From: Jason Fulghum Date: Fri, 24 Apr 2026 15:50:22 -0700 Subject: [PATCH 1/2] Enable functional index support --- postgres/parser/sem/tree/format.go | 4 +- server/analyzer/validate_create_table.go | 4 + server/ast/index_elem.go | 4 - .../information_schema/columns_table.go | 3 + .../command_docs/output/create_index_test.go | 242 +++++++++--------- testing/go/enginetest/doltgres_engine_test.go | 6 + .../go/enginetest/doltgres_harness_test.go | 24 +- testing/go/index_test.go | 4 - 8 files changed, 157 insertions(+), 134 deletions(-) diff --git a/postgres/parser/sem/tree/format.go b/postgres/parser/sem/tree/format.go index 8c11d5446f..cec0f0905c 100644 --- a/postgres/parser/sem/tree/format.go +++ b/postgres/parser/sem/tree/format.go @@ -442,9 +442,9 @@ func AsStringWithFQNames(n NodeFormatter, ann *Annotations) string { return ctx.CloseAndGetString() } -// AsString pretty prints a node to a string. +// AsString pretty prints a node to a string, with unquoted identifiers. func AsString(n NodeFormatter) string { - return AsStringWithFlags(n, FmtSimple) + return AsStringWithFlags(n, FmtSimple|FmtBareIdentifiers) } // ErrString pretty prints a node to a string. Identifiers are not quoted. diff --git a/server/analyzer/validate_create_table.go b/server/analyzer/validate_create_table.go index 2519aa1782..dcf0f2b92e 100755 --- a/server/analyzer/validate_create_table.go +++ b/server/analyzer/validate_create_table.go @@ -124,6 +124,10 @@ func schToColMap(sch sql.Schema) map[string]*sql.Column { func validateIndex(ctx *sql.Context, colMap map[string]*sql.Column, idxDef *sql.IndexDef) error { seenCols := make(map[string]struct{}) for _, idxCol := range idxDef.Columns { + if idxCol.Expression != nil { + continue + } + schCol, exists := colMap[strings.ToLower(idxCol.Name)] if !exists { return sql.ErrKeyColumnDoesNotExist.New(idxCol.Name) diff --git a/server/ast/index_elem.go b/server/ast/index_elem.go index c6c9b841e6..ab1dc35b63 100644 --- a/server/ast/index_elem.go +++ b/server/ast/index_elem.go @@ -27,10 +27,6 @@ import ( func nodeIndexElemList(ctx *Context, node tree.IndexElemList) ([]*vitess.IndexField, error) { vitessIndexColumns := make([]*vitess.IndexField, 0, len(node)) for _, inputColumn := range node { - if inputColumn.Expr != nil { - return nil, errors.Errorf("expression index attribute is not yet supported") - } - if inputColumn.Collation != "" { logrus.Warn("index attribute collation is not yet supported, ignoring") } diff --git a/server/tables/information_schema/columns_table.go b/server/tables/information_schema/columns_table.go index 1bec8b6e52..5a697a4e7b 100644 --- a/server/tables/information_schema/columns_table.go +++ b/server/tables/information_schema/columns_table.go @@ -204,6 +204,9 @@ func getRowsFromTable(ctx *sql.Context, db information_schema.DbWithNames, t sql tblName := t.Name() for i, col := range information_schema.SchemaForTable(t, db.Database, allColsWithDefaultValue) { + if col.HiddenSystem { + continue + } r := getRowFromColumn(ctx, i, col, db.CatalogName, db.SchemaName, tblName) if r != nil { rows = append(rows, r) diff --git a/testing/generation/command_docs/output/create_index_test.go b/testing/generation/command_docs/output/create_index_test.go index 32a038c55f..97eb505e23 100644 --- a/testing/generation/command_docs/output/create_index_test.go +++ b/testing/generation/command_docs/output/create_index_test.go @@ -22,7 +22,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name USING method ( ( expression ) ASC NULLS LAST , ( expression ) )"), Parses("CREATE INDEX name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST , column_name opclass )"), Parses("CREATE UNIQUE INDEX ON ONLY table_name ( column_name COLLATE en_US ASC NULLS LAST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) )"), - Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) ASC NULLS FIRST , column_name ASC )"), + Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) ASC NULLS FIRST , column_name ASC )"), Parses("CREATE INDEX ON table_name ( ( expression ) COLLATE en_US opclass NULLS LAST , ( expression ) COLLATE en_US ASC )"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name USING method ( ( expression ) DESC NULLS LAST , ( expression ) DESC )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name ( column_name COLLATE en_US opclass ASC , ( expression ) opclass DESC )"), @@ -130,7 +130,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY name ON table_name ( column_name , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST ) INCLUDE ( column_name , column_name )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) COLLATE en_US , column_name DESC NULLS LAST ) INCLUDE ( column_name , column_name )"), Parses("CREATE INDEX name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , column_name COLLATE en_US opclass DESC NULLS LAST ) INCLUDE ( column_name , column_name )"), - Parses("CREATE INDEX name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST , column_name COLLATE en_US opclass ) NULLS DISTINCT"), + Converts("CREATE INDEX name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST , column_name COLLATE en_US opclass ) NULLS DISTINCT"), Converts("CREATE INDEX name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC , column_name opclass ( opclass_parameter = value ) ) NULLS DISTINCT"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( column_name COLLATE en_US ASC NULLS LAST , column_name opclass ( opclass_parameter = value ) ) NULLS DISTINCT"), Parses("CREATE INDEX ON table_name ( column_name DESC NULLS LAST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS DISTINCT"), @@ -140,14 +140,14 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX name ON table_name USING method ( ( expression ) COLLATE en_US NULLS LAST , column_name opclass DESC ) NULLS DISTINCT"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC ) NULLS DISTINCT"), Parses("CREATE INDEX CONCURRENTLY ON table_name USING method ( ( expression ) opclass NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC ) NULLS DISTINCT"), - Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS DISTINCT"), + Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS DISTINCT"), Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name USING method ( column_name COLLATE en_US NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS DISTINCT"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) COLLATE en_US DESC NULLS LAST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS DISTINCT"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON ONLY table_name USING method ( ( expression ) DESC NULLS LAST , column_name COLLATE en_US NULLS FIRST ) NULLS DISTINCT"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , column_name COLLATE en_US opclass NULLS FIRST ) NULLS DISTINCT"), Parses("CREATE INDEX IF NOT EXISTS name ON table_name USING method ( ( expression ) DESC NULLS FIRST , ( expression ) COLLATE en_US opclass NULLS FIRST ) NULLS DISTINCT"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST , ( expression ) COLLATE en_US opclass NULLS FIRST ) NULLS DISTINCT"), - Parses("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT"), + Converts("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT"), Parses("CREATE INDEX ON ONLY table_name USING method ( ( expression ) COLLATE en_US ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( column_name ASC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , column_name opclass ASC NULLS FIRST ) NULLS DISTINCT"), @@ -250,13 +250,13 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY ON table_name USING method ( column_name COLLATE en_US DESC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS DISTINCT"), Parses("CREATE UNIQUE INDEX name ON table_name USING method ( column_name opclass ( opclass_parameter = value ) DESC , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS DISTINCT"), Parses("CREATE UNIQUE INDEX name ON table_name ( ( expression ) ASC NULLS LAST , column_name ) NULLS NOT DISTINCT"), - Parses("CREATE UNIQUE INDEX ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , ( expression ) opclass ) NULLS NOT DISTINCT"), + Converts("CREATE UNIQUE INDEX ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , ( expression ) opclass ) NULLS NOT DISTINCT"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST , ( expression ) opclass ) NULLS NOT DISTINCT"), - Parses("CREATE INDEX ON ONLY table_name ( column_name COLLATE en_US opclass , ( expression ) COLLATE en_US opclass ) NULLS NOT DISTINCT"), + Converts("CREATE INDEX ON ONLY table_name ( column_name COLLATE en_US opclass , ( expression ) COLLATE en_US opclass ) NULLS NOT DISTINCT"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) , ( expression ) COLLATE en_US opclass ) NULLS NOT DISTINCT"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( column_name COLLATE en_US ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ) NULLS NOT DISTINCT"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS NOT DISTINCT"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US DESC , column_name ASC ) NULLS NOT DISTINCT"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US DESC , column_name ASC ) NULLS NOT DISTINCT"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC , column_name COLLATE en_US opclass ASC ) NULLS NOT DISTINCT"), Converts("CREATE INDEX IF NOT EXISTS name ON table_name ( column_name ASC , column_name opclass ( opclass_parameter = value ) ASC ) NULLS NOT DISTINCT"), Parses("CREATE INDEX name ON table_name USING method ( column_name COLLATE en_US DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC ) NULLS NOT DISTINCT"), @@ -270,7 +270,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC ) NULLS NOT DISTINCT"), Parses("CREATE UNIQUE INDEX ON table_name USING method ( ( expression ) COLLATE en_US opclass ASC NULLS LAST , ( expression ) COLLATE en_US NULLS FIRST ) NULLS NOT DISTINCT"), Parses("CREATE UNIQUE INDEX ON ONLY table_name USING method ( column_name COLLATE en_US , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT"), - Parses("CREATE UNIQUE INDEX ON table_name ( ( expression ) opclass DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT"), + Converts("CREATE UNIQUE INDEX ON table_name ( ( expression ) opclass DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , column_name COLLATE en_US opclass ASC NULLS FIRST ) NULLS NOT DISTINCT"), Parses("CREATE UNIQUE INDEX ON ONLY table_name ( column_name COLLATE en_US ASC NULLS LAST , ( expression ) DESC NULLS FIRST ) NULLS NOT DISTINCT"), Parses("CREATE INDEX CONCURRENTLY ON table_name ( column_name opclass ( opclass_parameter = value ) DESC NULLS LAST , ( expression ) DESC NULLS FIRST ) NULLS NOT DISTINCT"), @@ -374,7 +374,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name COLLATE en_US opclass ( opclass_parameter = value ) ) WITH ( fillfactor )"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name USING method ( ( expression ) COLLATE en_US DESC , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ) WITH ( fillfactor )"), Parses("CREATE INDEX name ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC , ( expression ) ASC ) WITH ( fillfactor )"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST , ( expression ) ASC ) WITH ( fillfactor )"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST , ( expression ) ASC ) WITH ( fillfactor )"), Parses("CREATE INDEX ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass DESC , column_name COLLATE en_US ASC ) WITH ( fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , ( expression ) opclass ASC ) WITH ( fillfactor )"), Converts("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name COLLATE en_US opclass ASC ) WITH ( fillfactor )"), @@ -386,9 +386,9 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( column_name opclass NULLS LAST , ( expression ) opclass DESC ) WITH ( fillfactor )"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name USING method ( column_name COLLATE en_US NULLS LAST , ( expression ) COLLATE en_US opclass DESC ) WITH ( fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name ( column_name opclass ( opclass_parameter = value ) , ( expression ) opclass ( opclass_parameter = value ) DESC ) WITH ( fillfactor )"), - Parses("CREATE INDEX name ON ONLY table_name ( ( expression ) DESC , ( expression ) NULLS FIRST ) WITH ( fillfactor )"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) opclass ASC NULLS FIRST , ( expression ) COLLATE en_US NULLS FIRST ) WITH ( fillfactor )"), - Parses("CREATE INDEX ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor )"), + Converts("CREATE INDEX name ON ONLY table_name ( ( expression ) DESC , ( expression ) NULLS FIRST ) WITH ( fillfactor )"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) opclass ASC NULLS FIRST , ( expression ) COLLATE en_US NULLS FIRST ) WITH ( fillfactor )"), + Converts("CREATE INDEX ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name ( column_name opclass ASC , ( expression ) COLLATE en_US opclass ASC NULLS FIRST ) WITH ( fillfactor )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor )"), @@ -502,7 +502,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) WITH ( fillfactor )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST , ( expression ) ) NULLS DISTINCT WITH ( fillfactor )"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value ) NULLS LAST , ( expression ) opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor )"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor )"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor )"), Parses("CREATE INDEX name ON table_name USING method ( column_name DESC NULLS LAST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor )"), Parses("CREATE INDEX name ON ONLY table_name USING method ( column_name COLLATE en_US opclass DESC , column_name COLLATE en_US ASC ) NULLS DISTINCT WITH ( fillfactor )"), Parses("CREATE INDEX name ON ONLY table_name USING method ( ( expression ) COLLATE en_US ASC NULLS FIRST , column_name COLLATE en_US ASC ) NULLS DISTINCT WITH ( fillfactor )"), @@ -510,13 +510,13 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX ON table_name ( column_name opclass ( opclass_parameter = value ) NULLS LAST , ( expression ) COLLATE en_US ASC ) NULLS DISTINCT WITH ( fillfactor )"), Parses("CREATE INDEX ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST , column_name opclass ASC ) NULLS DISTINCT WITH ( fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON ONLY table_name USING method ( ( expression ) COLLATE en_US DESC NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor )"), - Parses("CREATE INDEX name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value ) ASC , column_name DESC ) NULLS DISTINCT WITH ( fillfactor )"), + Converts("CREATE INDEX name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value ) ASC , column_name DESC ) NULLS DISTINCT WITH ( fillfactor )"), Parses("CREATE INDEX name ON ONLY table_name USING method ( ( expression ) COLLATE en_US ASC NULLS FIRST , ( expression ) opclass DESC ) NULLS DISTINCT WITH ( fillfactor )"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor )"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , ( expression ) opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name ( column_name COLLATE en_US ASC , column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor )"), - Parses("CREATE INDEX ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor )"), + Converts("CREATE INDEX ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor )"), Parses("CREATE INDEX name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor )"), Parses("CREATE INDEX name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor )"), Parses("CREATE INDEX name ON table_name USING method ( ( expression ) COLLATE en_US DESC NULLS LAST , ( expression ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor )"), @@ -607,7 +607,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( ( expression ) DESC NULLS LAST , column_name ASC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS DISTINCT WITH ( fillfactor )"), Parses("CREATE INDEX name ON ONLY table_name USING method ( column_name COLLATE en_US ASC , column_name opclass ( opclass_parameter = value ) ASC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS DISTINCT WITH ( fillfactor )"), Parses("CREATE INDEX CONCURRENTLY ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS LAST , ( expression ) opclass ( opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS DISTINCT WITH ( fillfactor )"), - Parses("CREATE UNIQUE INDEX ON table_name ( ( expression ) opclass NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor )"), + Converts("CREATE UNIQUE INDEX ON table_name ( ( expression ) opclass NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor )"), Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name opclass ( opclass_parameter = value ) DESC , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor )"), Parses("CREATE INDEX ON table_name USING method ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , ( expression ) COLLATE en_US DESC ) NULLS NOT DISTINCT WITH ( fillfactor )"), @@ -625,7 +625,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( column_name opclass ASC , column_name ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor )"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS LAST , ( expression ) COLLATE en_US opclass ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor )"), Parses("CREATE INDEX CONCURRENTLY ON table_name USING method ( column_name opclass DESC , ( expression ) opclass DESC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor )"), - Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name opclass ( opclass_parameter = value ) ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor )"), + Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name opclass ( opclass_parameter = value ) ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor )"), Parses("CREATE UNIQUE INDEX ON table_name ( ( expression ) COLLATE en_US opclass ASC , ( expression ) NULLS LAST ) NULLS NOT DISTINCT WITH ( fillfactor )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name COLLATE en_US NULLS LAST ) NULLS NOT DISTINCT WITH ( fillfactor )"), Parses("CREATE INDEX ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass NULLS LAST , ( expression ) COLLATE en_US NULLS LAST ) NULLS NOT DISTINCT WITH ( fillfactor )"), @@ -720,7 +720,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( ( expression ) ASC NULLS LAST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ) WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name USING method ( column_name opclass NULLS FIRST , column_name COLLATE en_US ASC ) WITH ( fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST , column_name opclass ASC ) WITH ( fillfactor = value )"), - Parses("CREATE INDEX name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST , column_name opclass ( opclass_parameter = value ) ASC ) WITH ( fillfactor = value )"), + Converts("CREATE INDEX name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST , column_name opclass ( opclass_parameter = value ) ASC ) WITH ( fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY ON table_name ( ( expression ) opclass ( opclass_parameter = value ) NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name USING method ( ( expression ) COLLATE en_US opclass , column_name DESC ) WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass NULLS FIRST , column_name DESC ) WITH ( fillfactor = value )"), @@ -743,7 +743,7 @@ func TestCreateIndex(t *testing.T) { Converts("CREATE UNIQUE INDEX ON table_name ( column_name COLLATE en_US NULLS FIRST , column_name opclass DESC NULLS FIRST ) WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value ) DESC , column_name COLLATE en_US opclass DESC NULLS FIRST ) WITH ( fillfactor = value )"), Parses("CREATE INDEX ON table_name USING method ( column_name COLLATE en_US DESC NULLS LAST , column_name opclass ( opclass_parameter = value ) DESC NULLS FIRST ) WITH ( fillfactor = value )"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC , ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST ) WITH ( fillfactor = value )"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC , ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST ) WITH ( fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST ) WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST , column_name opclass ( opclass_parameter = value ) NULLS LAST ) WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST ) WITH ( fillfactor = value )"), @@ -843,11 +843,11 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY name ON table_name USING method ( ( expression ) COLLATE en_US NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON ONLY table_name ( column_name opclass DESC NULLS LAST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) WITH ( fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY ON table_name USING method ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , ( expression ) ) NULLS DISTINCT WITH ( fillfactor = value )"), - Parses("CREATE INDEX name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor = value )"), + Converts("CREATE INDEX name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name USING method ( column_name DESC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON ONLY table_name ( ( expression ) COLLATE en_US opclass DESC NULLS LAST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX ON table_name USING method ( ( expression ) COLLATE en_US opclass ASC NULLS FIRST , column_name ASC ) NULLS DISTINCT WITH ( fillfactor = value )"), - Parses("CREATE UNIQUE INDEX ON ONLY table_name ( column_name COLLATE en_US opclass NULLS FIRST , ( expression ) ASC ) NULLS DISTINCT WITH ( fillfactor = value )"), + Converts("CREATE UNIQUE INDEX ON ONLY table_name ( column_name COLLATE en_US opclass NULLS FIRST , ( expression ) ASC ) NULLS DISTINCT WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name ( column_name opclass ASC NULLS LAST , column_name COLLATE en_US opclass DESC ) NULLS DISTINCT WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name DESC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor = value )"), @@ -866,7 +866,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) COLLATE en_US , ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC , column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US opclass ASC NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value )"), - Parses("CREATE UNIQUE INDEX name ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value )"), + Converts("CREATE UNIQUE INDEX name ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC , column_name opclass ( opclass_parameter = value ) DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name USING method ( ( expression ) DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name USING method ( ( expression ) , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value )"), @@ -968,13 +968,13 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) opclass NULLS LAST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS DISTINCT WITH ( fillfactor = value )"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) opclass DESC NULLS LAST ) NULLS NOT DISTINCT WITH ( fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( ( expression ) ASC , column_name COLLATE en_US ) NULLS NOT DISTINCT WITH ( fillfactor = value )"), - Parses("CREATE INDEX name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name COLLATE en_US ) NULLS NOT DISTINCT WITH ( fillfactor = value )"), + Converts("CREATE INDEX name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name COLLATE en_US ) NULLS NOT DISTINCT WITH ( fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name ( column_name opclass ( opclass_parameter = value ) DESC NULLS LAST , column_name COLLATE en_US ) NULLS NOT DISTINCT WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value ) DESC NULLS LAST , column_name COLLATE en_US ) NULLS NOT DISTINCT WITH ( fillfactor = value )"), Parses("CREATE INDEX name ON table_name USING method ( ( expression ) , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor = value )"), Parses("CREATE INDEX name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , ( expression ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor = value )"), - Parses("CREATE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC , column_name opclass ASC ) NULLS NOT DISTINCT WITH ( fillfactor = value )"), + Converts("CREATE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC , column_name opclass ASC ) NULLS NOT DISTINCT WITH ( fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name COLLATE en_US opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( ( expression ) ASC NULLS LAST , column_name opclass ( opclass_parameter = value ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value )"), Parses("CREATE INDEX name ON table_name ( column_name ASC NULLS LAST , ( expression ) opclass ( opclass_parameter = value ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value )"), @@ -1092,7 +1092,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( column_name COLLATE en_US NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS NOT DISTINCT WITH ( fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( ( expression ) ASC NULLS LAST , ( expression ) COLLATE en_US ) WITH ( fillfactor , fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON ONLY table_name ( column_name COLLATE en_US ASC , ( expression ) COLLATE en_US opclass ) WITH ( fillfactor , fillfactor )"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass DESC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) WITH ( fillfactor , fillfactor )"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass DESC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) WITH ( fillfactor , fillfactor )"), Converts("CREATE INDEX ON ONLY table_name ( column_name ASC , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ) WITH ( fillfactor , fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ) WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY ON table_name ( ( expression ) COLLATE en_US opclass ASC NULLS FIRST , ( expression ) COLLATE en_US ASC ) WITH ( fillfactor , fillfactor )"), @@ -1106,7 +1106,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value ) DESC NULLS LAST , ( expression ) opclass ( opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor , fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name USING method ( ( expression ) COLLATE en_US NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor , fillfactor )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) DESC NULLS LAST , column_name ASC NULLS FIRST ) WITH ( fillfactor , fillfactor )"), - Parses("CREATE INDEX name ON table_name ( ( expression ) opclass ASC NULLS FIRST , column_name COLLATE en_US ASC NULLS FIRST ) WITH ( fillfactor , fillfactor )"), + Converts("CREATE INDEX name ON table_name ( ( expression ) opclass ASC NULLS FIRST , column_name COLLATE en_US ASC NULLS FIRST ) WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( column_name COLLATE en_US ASC NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX ON table_name USING method ( column_name opclass ( opclass_parameter = value ) , ( expression ) DESC NULLS FIRST ) WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( ( expression ) opclass ASC NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST ) WITH ( fillfactor , fillfactor )"), @@ -1221,7 +1221,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX name ON table_name ( column_name COLLATE en_US DESC NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX name ON ONLY table_name USING method ( column_name opclass ( opclass_parameter = value ) DESC , ( expression ) opclass ASC ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX name ON ONLY table_name ( column_name ASC NULLS LAST , column_name opclass ( opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( column_name COLLATE en_US opclass , ( expression ) opclass ( opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( column_name COLLATE en_US opclass , ( expression ) opclass ( opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE UNIQUE INDEX name ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX ON ONLY table_name USING method ( ( expression ) ASC , column_name COLLATE en_US opclass DESC ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS LAST , column_name COLLATE en_US opclass DESC ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), @@ -1232,7 +1232,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX ON ONLY table_name USING method ( column_name opclass DESC NULLS LAST , column_name COLLATE en_US opclass ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( column_name opclass DESC , column_name COLLATE en_US DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX IF NOT EXISTS name ON table_name USING method ( column_name COLLATE en_US ASC NULLS LAST , column_name COLLATE en_US opclass DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), - Parses("CREATE UNIQUE INDEX ON ONLY table_name ( column_name ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), + Converts("CREATE UNIQUE INDEX ON ONLY table_name ( column_name ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , ( expression ) NULLS LAST ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name ( column_name opclass NULLS LAST , ( expression ) NULLS LAST ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) , column_name COLLATE en_US NULLS LAST ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), @@ -1334,7 +1334,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( ( expression ) ASC NULLS FIRST , column_name COLLATE en_US opclass DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX name ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), - Parses("CREATE INDEX ON table_name ( column_name COLLATE en_US , ( expression ) ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), + Converts("CREATE INDEX ON table_name ( column_name COLLATE en_US , ( expression ) ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name USING method ( ( expression ) NULLS FIRST , column_name COLLATE en_US ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) , column_name opclass ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name opclass ASC NULLS LAST , column_name opclass ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), @@ -1349,10 +1349,10 @@ func TestCreateIndex(t *testing.T) { Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY ON table_name USING method ( ( expression ) opclass DESC NULLS FIRST , column_name DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), - Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US NULLS FIRST , ( expression ) COLLATE en_US opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), + Converts("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US NULLS FIRST , ( expression ) COLLATE en_US opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE INDEX IF NOT EXISTS name ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , ( expression ) COLLATE en_US opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name USING method ( ( expression ) COLLATE en_US DESC NULLS FIRST , ( expression ) COLLATE en_US opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), - Parses("CREATE UNIQUE INDEX name ON table_name ( ( expression ) opclass ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), + Converts("CREATE UNIQUE INDEX name ON table_name ( ( expression ) opclass ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST , ( expression ) COLLATE en_US ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), Converts("CREATE INDEX ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) , column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name ( column_name DESC NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), @@ -1473,12 +1473,12 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY name ON table_name ( ( expression ) ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( ( expression ) opclass DESC NULLS LAST , ( expression ) opclass ) WITH ( fillfactor = value , fillfactor )"), Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC , column_name COLLATE en_US opclass ( opclass_parameter = value ) ) WITH ( fillfactor = value , fillfactor )"), - Parses("CREATE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ) WITH ( fillfactor = value , fillfactor )"), + Converts("CREATE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ) WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX ON table_name USING method ( ( expression ) opclass DESC NULLS LAST , ( expression ) ASC ) WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , column_name opclass ( opclass_parameter = value ) ASC ) WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name USING method ( column_name COLLATE en_US , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX name ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) WITH ( fillfactor = value , fillfactor )"), - Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC , ( expression ) COLLATE en_US DESC ) WITH ( fillfactor = value , fillfactor )"), + Converts("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC , ( expression ) COLLATE en_US DESC ) WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( column_name opclass ( opclass_parameter = value ) DESC , column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC ) WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX name ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) DESC NULLS LAST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name opclass ( opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor = value , fillfactor )"), @@ -1486,7 +1486,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) , ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX IF NOT EXISTS name ON table_name USING method ( column_name COLLATE en_US opclass NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor = value , fillfactor )"), - Parses("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , column_name DESC NULLS FIRST ) WITH ( fillfactor = value , fillfactor )"), + Converts("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , column_name DESC NULLS FIRST ) WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS LAST , column_name DESC NULLS FIRST ) WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX name ON table_name USING method ( column_name COLLATE en_US ASC , ( expression ) DESC NULLS FIRST ) WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name USING method ( column_name COLLATE en_US NULLS FIRST , column_name COLLATE en_US DESC NULLS FIRST ) WITH ( fillfactor = value , fillfactor )"), @@ -1576,25 +1576,25 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US opclass NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name USING method ( ( expression ) COLLATE en_US ASC , ( expression ) opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), - Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), + Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS LAST , column_name opclass DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY ON table_name ( ( expression ) opclass ( opclass_parameter = value ) DESC , column_name COLLATE en_US opclass DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), - Parses("CREATE INDEX ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST , ( expression ) COLLATE en_US opclass DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), + Converts("CREATE INDEX ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST , ( expression ) COLLATE en_US opclass DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , ( expression ) COLLATE en_US opclass NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( ( expression ) opclass ASC NULLS LAST , column_name opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY name ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), - Parses("CREATE INDEX ON ONLY table_name ( column_name COLLATE en_US , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), + Converts("CREATE INDEX ON ONLY table_name ( column_name COLLATE en_US , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC , column_name ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX IF NOT EXISTS name ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS LAST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), - Parses("CREATE UNIQUE INDEX name ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name opclass DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), + Converts("CREATE UNIQUE INDEX name ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name opclass DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS LAST , column_name COLLATE en_US opclass DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY ON table_name USING method ( ( expression ) ASC , ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US opclass DESC , ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), - Parses("CREATE INDEX ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), + Converts("CREATE INDEX ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name USING method ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US ASC NULLS LAST , ( expression ) COLLATE en_US NULLS LAST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS LAST , ( expression ) opclass NULLS LAST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor )"), @@ -1694,7 +1694,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS LAST , ( expression ) opclass ( opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX name ON ONLY table_name ( column_name COLLATE en_US opclass ASC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US DESC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), - Parses("CREATE UNIQUE INDEX name ON table_name ( ( expression ) COLLATE en_US DESC , ( expression ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), + Converts("CREATE UNIQUE INDEX name ON table_name ( ( expression ) COLLATE en_US DESC , ( expression ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST , column_name opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , column_name COLLATE en_US opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name USING method ( ( expression ) NULLS FIRST , column_name opclass NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), @@ -1705,7 +1705,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name USING method ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) , column_name opclass ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , column_name COLLATE en_US DESC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), - Parses("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) ASC , column_name opclass ( opclass_parameter = value ) DESC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), + Converts("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) ASC , column_name opclass ( opclass_parameter = value ) DESC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS LAST , ( expression ) NULLS LAST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON ONLY table_name ( column_name opclass , ( expression ) COLLATE en_US NULLS LAST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), Parses("CREATE UNIQUE INDEX ON table_name USING method ( column_name DESC NULLS FIRST , column_name COLLATE en_US opclass NULLS LAST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor )"), @@ -1816,14 +1816,14 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , column_name opclass ( opclass_parameter = value ) DESC ) WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name ( column_name NULLS LAST , ( expression ) opclass ( opclass_parameter = value ) DESC ) WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY ON table_name ( column_name COLLATE en_US DESC , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) WITH ( fillfactor , fillfactor = value )"), - Parses("CREATE INDEX ON ONLY table_name ( column_name COLLATE en_US opclass ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) WITH ( fillfactor , fillfactor = value )"), + Converts("CREATE INDEX ON ONLY table_name ( column_name COLLATE en_US opclass ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name USING method ( ( expression ) opclass , ( expression ) COLLATE en_US NULLS FIRST ) WITH ( fillfactor , fillfactor = value )"), - Parses("CREATE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC , column_name ASC NULLS FIRST ) WITH ( fillfactor , fillfactor = value )"), + Converts("CREATE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC , column_name ASC NULLS FIRST ) WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX name ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) ASC , column_name opclass ASC NULLS FIRST ) WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( column_name DESC , ( expression ) opclass ASC NULLS FIRST ) WITH ( fillfactor , fillfactor = value )"), - Parses("CREATE INDEX name ON table_name ( ( expression ) opclass ASC NULLS FIRST , column_name COLLATE en_US opclass ASC NULLS FIRST ) WITH ( fillfactor , fillfactor = value )"), + Converts("CREATE INDEX name ON table_name ( ( expression ) opclass ASC NULLS FIRST , column_name COLLATE en_US opclass ASC NULLS FIRST ) WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST , column_name opclass ( opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor , fillfactor = value )"), - Parses("CREATE UNIQUE INDEX ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC , ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor , fillfactor = value )"), + Converts("CREATE UNIQUE INDEX ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC , ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name ( column_name opclass ( opclass_parameter = value ) ASC NULLS LAST , ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , ( expression ) DESC NULLS FIRST ) WITH ( fillfactor , fillfactor = value )"), @@ -1931,7 +1931,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( column_name DESC NULLS LAST , column_name opclass ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), Converts("CREATE INDEX ON table_name ( column_name opclass ( opclass_parameter = value ) NULLS FIRST , column_name COLLATE en_US opclass ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST , column_name opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), - Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), + Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name ( column_name DESC , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , column_name ASC ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), @@ -1949,7 +1949,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX name ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX IF NOT EXISTS name ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX name ON ONLY table_name USING method ( ( expression ) ASC NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass DESC NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass DESC NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST , ( expression ) COLLATE en_US ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC , column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass DESC NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value )"), @@ -2066,7 +2066,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name ( ( expression ) COLLATE en_US opclass ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ASC NULLS FIRST , column_name ASC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Converts("CREATE UNIQUE INDEX ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST , column_name COLLATE en_US ASC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), - Parses("CREATE INDEX name ON table_name ( column_name ASC NULLS FIRST , ( expression ) COLLATE en_US ASC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), + Converts("CREATE INDEX name ON table_name ( column_name ASC NULLS FIRST , ( expression ) COLLATE en_US ASC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name USING method ( ( expression ) opclass ASC , column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST , ( expression ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), @@ -2080,17 +2080,17 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX IF NOT EXISTS name ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST , ( expression ) COLLATE en_US opclass NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX name ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS LAST , ( expression ) COLLATE en_US opclass NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name ( column_name opclass NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), - Parses("CREATE UNIQUE INDEX ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) , column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), + Converts("CREATE UNIQUE INDEX ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) , column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX ON ONLY table_name USING method ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) , column_name opclass ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) ASC , column_name opclass ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( column_name opclass NULLS FIRST , column_name opclass ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( column_name opclass ( opclass_parameter = value ) , column_name COLLATE en_US opclass ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( column_name opclass ( opclass_parameter = value ) DESC NULLS FIRST , column_name opclass ( opclass_parameter = value ) ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), - Parses("CREATE UNIQUE INDEX name ON table_name ( column_name COLLATE en_US opclass ASC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), - Parses("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), + Converts("CREATE UNIQUE INDEX name ON table_name ( column_name COLLATE en_US opclass ASC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), + Converts("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC , column_name DESC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX ON ONLY table_name USING method ( ( expression ) opclass NULLS FIRST , column_name DESC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), - Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name opclass , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), + Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name opclass , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , column_name NULLS LAST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), Parses("CREATE INDEX IF NOT EXISTS name ON table_name USING method ( ( expression ) opclass NULLS FIRST , ( expression ) NULLS LAST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value )"), @@ -2192,26 +2192,26 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name ( column_name COLLATE en_US opclass , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , ( expression ) COLLATE en_US ASC ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( column_name COLLATE en_US , column_name opclass ASC ) WITH ( fillfactor = value , fillfactor = value )"), - Parses("CREATE INDEX ON table_name ( column_name opclass DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) ASC ) WITH ( fillfactor = value , fillfactor = value )"), + Converts("CREATE INDEX ON table_name ( column_name opclass DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) ASC ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( ( expression ) COLLATE en_US , column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE INDEX ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass , column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC , ( expression ) COLLATE en_US opclass DESC ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name USING method ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC ) WITH ( fillfactor = value , fillfactor = value )"), - Parses("CREATE UNIQUE INDEX ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) WITH ( fillfactor = value , fillfactor = value )"), + Converts("CREATE UNIQUE INDEX ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name USING method ( column_name opclass ( opclass_parameter = value ) DESC NULLS FIRST , ( expression ) NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), - Parses("CREATE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US ASC , column_name COLLATE en_US NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), + Converts("CREATE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US ASC , column_name COLLATE en_US NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY ON table_name ( ( expression ) opclass , column_name opclass NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), Converts("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US NULLS FIRST , column_name opclass NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), - Parses("CREATE UNIQUE INDEX name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , ( expression ) COLLATE en_US opclass NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), + Converts("CREATE UNIQUE INDEX name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , ( expression ) COLLATE en_US opclass NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name USING method ( ( expression ) opclass ASC NULLS FIRST , ( expression ) COLLATE en_US opclass NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US ASC NULLS LAST , column_name opclass ( opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( column_name DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), - Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name opclass ( opclass_parameter = value ) DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), + Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name opclass ( opclass_parameter = value ) DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US opclass NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE UNIQUE INDEX ON table_name USING method ( ( expression ) COLLATE en_US , column_name ASC NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), - Parses("CREATE INDEX ON ONLY table_name ( column_name COLLATE en_US opclass DESC , ( expression ) COLLATE en_US ASC NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), + Converts("CREATE INDEX ON ONLY table_name ( column_name COLLATE en_US opclass DESC , ( expression ) COLLATE en_US ASC NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name COLLATE en_US opclass ASC NULLS LAST , ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US DESC NULLS LAST , ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE INDEX IF NOT EXISTS name ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , ( expression ) COLLATE en_US DESC NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value )"), @@ -2327,11 +2327,11 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX ON ONLY table_name ( column_name ASC NULLS LAST , ( expression ) COLLATE en_US opclass ASC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor = value )"), Converts("CREATE INDEX IF NOT EXISTS name ON table_name ( column_name opclass ( opclass_parameter = value ) NULLS FIRST , column_name opclass ( opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor = value )"), - Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST , ( expression ) DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor = value )"), - Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value ) , column_name COLLATE en_US DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor = value )"), + Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST , ( expression ) DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor = value )"), + Converts("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value ) , column_name COLLATE en_US DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( ( expression ) opclass ASC NULLS FIRST , ( expression ) COLLATE en_US DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE INDEX name ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor = value )"), - Parses("CREATE INDEX ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor = value )"), + Converts("CREATE INDEX ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name USING method ( column_name COLLATE en_US opclass NULLS LAST , column_name NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) DESC NULLS LAST , column_name NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor = value )"), @@ -2472,7 +2472,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY name ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , column_name opclass ( opclass_parameter = value ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) opclass DESC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) , column_name NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value )"), - Parses("CREATE UNIQUE INDEX ON table_name ( column_name , ( expression ) opclass NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value )"), + Converts("CREATE UNIQUE INDEX ON table_name ( column_name , ( expression ) opclass NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name USING method ( column_name opclass ( opclass_parameter = value ) , ( expression ) opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value )"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( column_name COLLATE en_US opclass ASC NULLS LAST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value )"), @@ -2600,9 +2600,9 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST , column_name COLLATE en_US ASC NULLS FIRST ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC , column_name opclass ASC NULLS FIRST ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) , ( expression ) COLLATE en_US opclass ASC NULLS FIRST ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX IF NOT EXISTS name ON table_name ( column_name opclass ( opclass_parameter = value ) DESC , ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX IF NOT EXISTS name ON table_name ( column_name opclass ( opclass_parameter = value ) DESC , ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST ) TABLESPACE tablespace_name"), Parses("CREATE INDEX ON table_name USING method ( ( expression ) DESC NULLS FIRST , column_name COLLATE en_US DESC NULLS FIRST ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name opclass ( opclass_parameter = value ) DESC NULLS FIRST , ( expression ) opclass DESC NULLS FIRST ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name opclass ( opclass_parameter = value ) DESC NULLS FIRST , ( expression ) opclass DESC NULLS FIRST ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST ) TABLESPACE tablespace_name"), Parses("CREATE INDEX IF NOT EXISTS name ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST ) TABLESPACE tablespace_name"), @@ -2717,7 +2717,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass DESC , column_name COLLATE en_US ASC NULLS FIRST ) NULLS DISTINCT TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( column_name COLLATE en_US opclass DESC NULLS LAST , ( expression ) COLLATE en_US opclass ASC NULLS FIRST ) NULLS DISTINCT TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC , column_name opclass ( opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT TABLESPACE tablespace_name"), Parses("CREATE INDEX ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT TABLESPACE tablespace_name"), Parses("CREATE INDEX name ON table_name ( column_name COLLATE en_US opclass NULLS LAST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( ( expression ) DESC , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT TABLESPACE tablespace_name"), @@ -2813,7 +2813,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value ) ASC NULLS LAST , ( expression ) opclass ( opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS DISTINCT TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name USING method ( ( expression ) DESC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS DISTINCT TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name USING method ( ( expression ) opclass NULLS FIRST , column_name opclass ) NULLS NOT DISTINCT TABLESPACE tablespace_name"), - Parses("CREATE INDEX name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) , ( expression ) COLLATE en_US opclass ) NULLS NOT DISTINCT TABLESPACE tablespace_name"), + Converts("CREATE INDEX name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) , ( expression ) COLLATE en_US opclass ) NULLS NOT DISTINCT TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ASC , column_name opclass ( opclass_parameter = value ) ) NULLS NOT DISTINCT TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) ASC NULLS LAST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( ( expression ) NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT TABLESPACE tablespace_name"), @@ -2927,9 +2927,9 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS NOT DISTINCT TABLESPACE tablespace_name"), Parses("CREATE INDEX name ON ONLY table_name ( ( expression ) COLLATE en_US opclass DESC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS NOT DISTINCT TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS NOT DISTINCT TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) , ( expression ) COLLATE en_US ) WITH ( fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) , ( expression ) COLLATE en_US ) WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON table_name USING method ( ( expression ) COLLATE en_US ASC NULLS FIRST , column_name opclass ) WITH ( fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX name ON table_name ( ( expression ) opclass DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) ) WITH ( fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX name ON table_name ( ( expression ) opclass DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) ) WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ) WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX name ON table_name USING method ( column_name COLLATE en_US ASC NULLS FIRST , column_name ASC ) WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX name ON table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , ( expression ) ASC ) WITH ( fillfactor ) TABLESPACE tablespace_name"), @@ -3049,7 +3049,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name USING method ( ( expression ) opclass DESC NULLS LAST , column_name COLLATE en_US ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , column_name opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) opclass ASC NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) , column_name ASC ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) , column_name ASC ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ASC NULLS LAST , column_name ASC ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( ( expression ) DESC , ( expression ) ASC ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name ( ( expression ) COLLATE en_US opclass NULLS FIRST , column_name COLLATE en_US ASC ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), @@ -3059,11 +3059,11 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name ( column_name opclass NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( column_name opclass ( opclass_parameter = value ) ASC , column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name COLLATE en_US DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name COLLATE en_US DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name USING method ( column_name opclass ( opclass_parameter = value ) DESC , column_name DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( column_name COLLATE en_US NULLS LAST , ( expression ) opclass DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name opclass , column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX name ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX name ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US opclass , ( expression ) COLLATE en_US NULLS LAST ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( column_name opclass ASC , ( expression ) COLLATE en_US NULLS LAST ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name USING method ( column_name opclass ASC NULLS FIRST , ( expression ) COLLATE en_US NULLS LAST ) NULLS DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), @@ -3157,9 +3157,9 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX name ON ONLY table_name USING method ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON ONLY table_name ( ( expression ) , ( expression ) COLLATE en_US ) NULLS NOT DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC , column_name COLLATE en_US ASC ) NULLS NOT DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC , column_name COLLATE en_US ASC ) NULLS NOT DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX name ON table_name ( ( expression ) opclass DESC NULLS LAST , column_name COLLATE en_US opclass ASC ) NULLS NOT DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX IF NOT EXISTS name ON table_name ( column_name COLLATE en_US DESC , ( expression ) COLLATE en_US opclass ASC ) NULLS NOT DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX IF NOT EXISTS name ON table_name ( column_name COLLATE en_US DESC , ( expression ) COLLATE en_US opclass ASC ) NULLS NOT DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST , ( expression ) COLLATE en_US opclass ASC ) NULLS NOT DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name USING method ( ( expression ) COLLATE en_US ASC NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name USING method ( column_name opclass , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor ) TABLESPACE tablespace_name"), @@ -3302,7 +3302,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name USING method ( ( expression ) COLLATE en_US ASC , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX ON table_name ( ( expression ) opclass NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX ON table_name ( ( expression ) opclass NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) , column_name ASC NULLS FIRST ) WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC , ( expression ) COLLATE en_US ASC NULLS FIRST ) WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( column_name opclass ASC NULLS FIRST , column_name COLLATE en_US opclass ASC NULLS FIRST ) WITH ( fillfactor = value ) TABLESPACE tablespace_name"), @@ -3397,7 +3397,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY name ON table_name USING method ( column_name COLLATE en_US opclass DESC , column_name opclass DESC NULLS LAST ) INCLUDE ( column_name , column_name ) WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name ( ( expression ) opclass , column_name opclass ( opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX IF NOT EXISTS name ON table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) WITH ( fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US DESC NULLS FIRST , ( expression ) ) NULLS DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US DESC NULLS FIRST , ( expression ) ) NULLS DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US ASC NULLS LAST , column_name opclass ) NULLS DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX IF NOT EXISTS name ON table_name USING method ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) , ( expression ) ASC ) NULLS DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX ON table_name USING method ( column_name opclass NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), @@ -3405,7 +3405,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name ( column_name COLLATE en_US opclass DESC NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( ( expression ) opclass ( opclass_parameter = value ) ASC , ( expression ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON ONLY table_name USING method ( column_name COLLATE en_US NULLS FIRST , ( expression ) COLLATE en_US opclass NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX name ON table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON table_name USING method ( column_name opclass ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON ONLY table_name USING method ( column_name opclass NULLS LAST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), @@ -3524,9 +3524,9 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX ON ONLY table_name ( ( expression ) ASC NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( ( expression ) COLLATE en_US opclass , column_name opclass ( opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( column_name COLLATE en_US opclass DESC , column_name COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX ON table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX ON table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( column_name COLLATE en_US NULLS FIRST , column_name COLLATE en_US ASC ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX IF NOT EXISTS name ON table_name ( ( expression ) opclass ASC NULLS FIRST , column_name opclass ( opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX IF NOT EXISTS name ON table_name ( ( expression ) opclass ASC NULLS FIRST , column_name opclass ( opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name ( column_name opclass ( opclass_parameter = value ) ASC NULLS FIRST , ( expression ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( column_name COLLATE en_US NULLS LAST , ( expression ) opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON table_name ( column_name opclass ASC NULLS LAST , ( expression ) opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), @@ -3545,7 +3545,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( column_name ASC , column_name COLLATE en_US opclass ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX IF NOT EXISTS name ON table_name USING method ( ( expression ) ASC NULLS LAST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) opclass ASC NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( ( expression ) opclass DESC , ( expression ) DESC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , ( expression ) COLLATE en_US DESC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON table_name ( ( expression ) COLLATE en_US ASC NULLS FIRST , column_name COLLATE en_US opclass DESC NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value ) TABLESPACE tablespace_name"), @@ -3629,12 +3629,12 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX ON ONLY table_name USING method ( ( expression ) COLLATE en_US NULLS FIRST ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) , ( expression ) opclass ( opclass_parameter = value ) ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name ( ( expression ) ASC , ( expression ) opclass ( opclass_parameter = value ) ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX IF NOT EXISTS name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX IF NOT EXISTS name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name ( ( expression ) opclass NULLS FIRST , column_name COLLATE en_US DESC ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX ON table_name ( ( expression ) opclass ( opclass_parameter = value ) DESC , ( expression ) COLLATE en_US DESC ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX ON table_name ( ( expression ) opclass ( opclass_parameter = value ) DESC , ( expression ) COLLATE en_US DESC ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC , ( expression ) opclass ( opclass_parameter = value ) DESC ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( ( expression ) COLLATE en_US , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) opclass ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), @@ -3642,7 +3642,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY name ON table_name USING method ( ( expression ) COLLATE en_US DESC , column_name NULLS FIRST ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) , column_name COLLATE en_US opclass NULLS FIRST ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON table_name USING method ( column_name COLLATE en_US opclass DESC , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name ( column_name COLLATE en_US opclass DESC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), @@ -3751,9 +3751,9 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX name ON table_name USING method ( ( expression ) NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( column_name opclass ( opclass_parameter = value ) NULLS LAST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST , ( expression ) COLLATE en_US ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , column_name opclass ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , column_name opclass ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC , ( expression ) opclass ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ASC NULLS FIRST , column_name opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ASC NULLS FIRST , column_name opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name ( column_name opclass NULLS LAST , column_name opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX IF NOT EXISTS name ON table_name USING method ( ( expression ) opclass ASC , ( expression ) opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON table_name USING method ( column_name opclass DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), @@ -3761,24 +3761,24 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value ) DESC NULLS LAST , ( expression ) ASC ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) DESC , ( expression ) COLLATE en_US opclass ASC ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC , ( expression ) COLLATE en_US DESC ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS LAST , ( expression ) opclass DESC ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON ONLY table_name USING method ( column_name COLLATE en_US ASC , column_name COLLATE en_US opclass DESC ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST , column_name opclass ( opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX IF NOT EXISTS name ON table_name ( ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX IF NOT EXISTS name ON table_name ( ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name USING method ( column_name COLLATE en_US NULLS FIRST , ( expression ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST , column_name COLLATE en_US opclass NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST , column_name opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX IF NOT EXISTS name ON table_name ( column_name COLLATE en_US ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX IF NOT EXISTS name ON table_name ( column_name COLLATE en_US ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX ON table_name USING method ( column_name opclass ( opclass_parameter = value ) ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX name ON table_name USING method ( column_name COLLATE en_US NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , ( expression ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX ON table_name ( column_name DESC NULLS FIRST , ( expression ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX ON table_name ( column_name DESC NULLS FIRST , ( expression ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass DESC , ( expression ) COLLATE en_US ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX name ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , ( expression ) COLLATE en_US opclass ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX name ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , ( expression ) COLLATE en_US opclass ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON table_name USING method ( ( expression ) ASC NULLS LAST , ( expression ) COLLATE en_US opclass ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) ASC NULLS LAST , column_name opclass DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name opclass ( opclass_parameter = value ) DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), @@ -3869,22 +3869,22 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX CONCURRENTLY name ON table_name USING method ( column_name COLLATE en_US NULLS LAST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON table_name USING method ( column_name opclass ( opclass_parameter = value ) NULLS LAST , column_name ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON table_name USING method ( column_name opclass ( opclass_parameter = value ) , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX IF NOT EXISTS name ON table_name ( ( expression ) opclass ASC , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX IF NOT EXISTS name ON table_name ( ( expression ) opclass ASC , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON ONLY table_name ( ( expression ) , ( expression ) COLLATE en_US ASC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) COLLATE en_US DESC NULLS LAST , column_name DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST , column_name DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX name ON table_name ( ( expression ) COLLATE en_US opclass ASC , ( expression ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US DESC , ( expression ) opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX name ON table_name ( ( expression ) COLLATE en_US opclass ASC , ( expression ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US DESC , ( expression ) opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX ON table_name USING method ( column_name COLLATE en_US opclass ASC , column_name COLLATE en_US opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS LAST , ( expression ) opclass ( opclass_parameter = value ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS LAST , ( expression ) opclass ( opclass_parameter = value ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name ( column_name opclass DESC , column_name COLLATE en_US NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX name ON table_name ( ( expression ) COLLATE en_US opclass NULLS FIRST , ( expression ) COLLATE en_US opclass NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX name ON table_name ( ( expression ) COLLATE en_US opclass NULLS FIRST , ( expression ) COLLATE en_US opclass NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) , column_name opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( ( expression ) opclass ASC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor ) TABLESPACE tablespace_name"), @@ -4112,31 +4112,31 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name ( ( expression ) COLLATE en_US ASC NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST ) INCLUDE ( column_name , column_name ) WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) COLLATE en_US ASC NULLS FIRST , column_name COLLATE en_US opclass DESC NULLS LAST ) INCLUDE ( column_name , column_name ) WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX name ON table_name ( ( expression ) opclass ( opclass_parameter = value ) , column_name ASC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX name ON table_name ( ( expression ) opclass ( opclass_parameter = value ) , column_name ASC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX ON table_name USING method ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , column_name opclass ASC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , column_name COLLATE en_US opclass ASC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( column_name DESC NULLS LAST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) opclass NULLS FIRST , column_name DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) opclass NULLS FIRST , column_name DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC , column_name COLLATE en_US DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST , column_name COLLATE en_US opclass DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS FIRST , column_name COLLATE en_US opclass DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Converts("CREATE INDEX IF NOT EXISTS name ON table_name ( column_name COLLATE en_US opclass DESC NULLS FIRST , column_name COLLATE en_US opclass DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , ( expression ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , ( expression ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( ( expression ) COLLATE en_US opclass DESC NULLS FIRST , ( expression ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS LAST , column_name opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX name ON ONLY table_name ( column_name COLLATE en_US opclass , ( expression ) opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX name ON ONLY table_name ( column_name COLLATE en_US opclass , ( expression ) opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST , ( expression ) opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX ON table_name USING method ( ( expression ) opclass DESC NULLS LAST , column_name ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON ONLY table_name USING method ( column_name opclass ASC NULLS FIRST , ( expression ) opclass ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) COLLATE en_US opclass DESC , column_name COLLATE en_US opclass ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( ( expression ) COLLATE en_US opclass DESC , column_name COLLATE en_US opclass ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST , column_name COLLATE en_US opclass ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) DESC , ( expression ) COLLATE en_US opclass ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name USING method ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST , ( expression ) COLLATE en_US opclass ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , column_name opclass DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US DESC , column_name COLLATE en_US opclass DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , column_name COLLATE en_US opclass DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US DESC , column_name COLLATE en_US opclass DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX ON table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , column_name COLLATE en_US opclass DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( column_name NULLS LAST , ( expression ) COLLATE en_US opclass DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name ( column_name DESC NULLS LAST , ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON ONLY table_name ( column_name opclass NULLS LAST , column_name COLLATE en_US NULLS LAST ) NULLS DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), @@ -4237,8 +4237,8 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON ONLY table_name ( ( expression ) COLLATE en_US , column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( column_name opclass ( opclass_parameter = value ) ASC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST , ( expression ) COLLATE en_US DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) , ( expression ) opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) , ( expression ) opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name ( column_name COLLATE en_US ASC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name USING method ( ( expression ) DESC , column_name COLLATE en_US opclass NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON table_name USING method ( ( expression ) COLLATE en_US opclass DESC NULLS FIRST , column_name COLLATE en_US opclass NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor ) TABLESPACE tablespace_name"), @@ -4366,7 +4366,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX ON table_name USING method ( ( expression ) COLLATE en_US DESC NULLS LAST , ( expression ) ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name ( column_name DESC NULLS LAST , ( expression ) COLLATE en_US ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST , ( expression ) opclass ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX IF NOT EXISTS name ON table_name ( column_name COLLATE en_US opclass NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX IF NOT EXISTS name ON table_name ( column_name COLLATE en_US opclass NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name USING method ( column_name opclass ( opclass_parameter = value ) ASC NULLS LAST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), @@ -4380,16 +4380,16 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST , ( expression ) COLLATE en_US DESC ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , ( expression ) COLLATE en_US opclass DESC ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX ON table_name ( ( expression ) COLLATE en_US opclass DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX ON table_name ( ( expression ) COLLATE en_US opclass DESC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Converts("CREATE INDEX ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC , column_name NULLS FIRST ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) NULLS FIRST , column_name COLLATE en_US NULLS FIRST ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON table_name USING method ( ( expression ) ASC , column_name ASC NULLS FIRST ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST , column_name opclass DESC NULLS FIRST ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , ( expression ) opclass DESC NULLS FIRST ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , ( expression ) opclass DESC NULLS FIRST ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name USING method ( column_name COLLATE en_US opclass DESC , column_name opclass ( opclass_parameter = value ) DESC NULLS FIRST ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) , ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) , ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US ASC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) , ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US ASC NULLS FIRST , ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON ONLY table_name USING method ( column_name , column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX name ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS FIRST , column_name COLLATE en_US NULLS LAST ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST ) WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), @@ -4482,14 +4482,14 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name ( column_name opclass ASC NULLS FIRST , ( expression ) ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Converts("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC , column_name COLLATE en_US ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX ON table_name ( ( expression ) COLLATE en_US ASC NULLS LAST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX name ON ONLY table_name ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON table_name USING method ( column_name ASC NULLS FIRST , column_name opclass ( opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name ( column_name opclass DESC NULLS LAST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name ( column_name NULLS LAST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX name ON ONLY table_name USING method ( ( expression ) COLLATE en_US NULLS LAST , column_name DESC ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Converts("CREATE UNIQUE INDEX ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS FIRST , column_name opclass DESC ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON table_name ( ( expression ) opclass ( opclass_parameter = value ) DESC NULLS FIRST , column_name opclass DESC ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US NULLS FIRST , ( expression ) COLLATE en_US opclass DESC ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US NULLS FIRST , ( expression ) COLLATE en_US opclass DESC ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( ( expression ) COLLATE en_US NULLS FIRST , column_name COLLATE en_US opclass NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON ONLY table_name ( column_name COLLATE en_US opclass DESC NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US NULLS LAST , ( expression ) ASC NULLS FIRST ) NULLS DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), @@ -4612,7 +4612,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) , column_name DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name USING method ( column_name COLLATE en_US opclass , ( expression ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX name ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) DESC , ( expression ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX name ON table_name ( ( expression ) opclass ( opclass_parameter = value ) ASC , column_name COLLATE en_US DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX name ON table_name ( ( expression ) opclass ( opclass_parameter = value ) ASC , column_name COLLATE en_US DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name USING method ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) , ( expression ) opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) DESC NULLS LAST , ( expression ) opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ASC NULLS LAST , column_name COLLATE en_US opclass DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), @@ -4620,7 +4620,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX CONCURRENTLY ON ONLY table_name ( ( expression ) opclass ASC , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX ON ONLY table_name ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , column_name COLLATE en_US NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX name ON table_name ( column_name COLLATE en_US DESC , ( expression ) opclass NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX name ON table_name ( column_name COLLATE en_US DESC , ( expression ) opclass NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name USING method ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST , ( expression ) COLLATE en_US opclass NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX name ON table_name USING method ( ( expression ) opclass DESC NULLS LAST , column_name opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), @@ -4717,12 +4717,12 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX name ON ONLY table_name USING method ( column_name DESC , ( expression ) COLLATE en_US opclass ASC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) opclass DESC NULLS FIRST , ( expression ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON ONLY table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST ) INCLUDE ( column_name , column_name ) NULLS NOT DISTINCT WITH ( fillfactor , fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass DESC NULLS FIRST , ( expression ) COLLATE en_US ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass DESC NULLS FIRST , ( expression ) COLLATE en_US ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value ) ASC NULLS LAST , ( expression ) opclass ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name COLLATE en_US NULLS LAST , ( expression ) COLLATE en_US opclass ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass ASC , column_name opclass ( opclass_parameter = value ) ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX IF NOT EXISTS name ON table_name ( ( expression ) COLLATE en_US opclass ASC , column_name opclass ( opclass_parameter = value ) ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY name ON table_name USING method ( column_name ASC , ( expression ) opclass ( opclass_parameter = value ) ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX name ON table_name ( ( expression ) COLLATE en_US DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX name ON table_name ( ( expression ) COLLATE en_US DESC , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON ONLY table_name ( column_name opclass ( opclass_parameter = value ) DESC NULLS FIRST , column_name ASC ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Converts("CREATE UNIQUE INDEX name ON ONLY table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , column_name COLLATE en_US ASC ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX name ON ONLY table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , ( expression ) COLLATE en_US opclass ASC ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), @@ -4736,8 +4736,8 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE UNIQUE INDEX ON table_name USING method ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) , column_name opclass ( opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY IF NOT EXISTS name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) DESC NULLS LAST , column_name ASC NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC , ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) DESC NULLS FIRST , column_name DESC NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX ON ONLY table_name ( column_name opclass ( opclass_parameter = value , opclass_parameter = value ) DESC , ( expression ) opclass ( opclass_parameter = value ) ASC NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE INDEX IF NOT EXISTS name ON ONLY table_name ( ( expression ) DESC NULLS FIRST , column_name DESC NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX CONCURRENTLY name ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value ) NULLS FIRST , column_name COLLATE en_US DESC NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name ( ( expression ) opclass DESC , ( expression ) COLLATE en_US opclass DESC NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX name ON table_name ( column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) NULLS LAST , ( expression ) COLLATE en_US opclass DESC NULLS FIRST ) WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), @@ -4977,7 +4977,7 @@ func TestCreateIndex(t *testing.T) { Parses("CREATE INDEX IF NOT EXISTS name ON table_name USING method ( column_name opclass DESC NULLS FIRST , column_name COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name USING method ( column_name COLLATE en_US opclass , ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX IF NOT EXISTS name ON table_name USING method ( column_name COLLATE en_US opclass , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), - Parses("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) opclass DESC NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), + Converts("CREATE UNIQUE INDEX IF NOT EXISTS name ON table_name ( ( expression ) opclass DESC NULLS FIRST , column_name opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE INDEX CONCURRENTLY ON ONLY table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON table_name USING method ( ( expression ) opclass ( opclass_parameter = value , opclass_parameter = value ) ASC NULLS LAST , column_name COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), Parses("CREATE UNIQUE INDEX ON table_name USING method ( ( expression ) COLLATE en_US opclass ( opclass_parameter = value ) NULLS FIRST , ( expression ) COLLATE en_US opclass ( opclass_parameter = value , opclass_parameter = value ) ) NULLS NOT DISTINCT WITH ( fillfactor = value , fillfactor = value ) TABLESPACE tablespace_name"), diff --git a/testing/go/enginetest/doltgres_engine_test.go b/testing/go/enginetest/doltgres_engine_test.go index 1f8e94d1f8..89da9e35e1 100755 --- a/testing/go/enginetest/doltgres_engine_test.go +++ b/testing/go/enginetest/doltgres_engine_test.go @@ -792,6 +792,12 @@ func TestIndexes(t *testing.T) { enginetest.TestIndexes(t, harness) } +func TestIndexedExpressions(t *testing.T) { + harness := newDoltgresServerHarness(t) + defer harness.Close() + enginetest.TestIndexedExpressions(t, harness) +} + func TestIndexPrefix(t *testing.T) { t.Skip() harness := newDoltgresServerHarness(t) diff --git a/testing/go/enginetest/doltgres_harness_test.go b/testing/go/enginetest/doltgres_harness_test.go index b1e2e170c5..a442147703 100644 --- a/testing/go/enginetest/doltgres_harness_test.go +++ b/testing/go/enginetest/doltgres_harness_test.go @@ -113,12 +113,23 @@ var defaultSkippedQueries = []string{ "show create table fk_tbl", // we create an extra key for the FK that vanilla gms does not "show indexes from", // we create / expose extra indexes (for foreign keys) "show global variables like", // we set extra variables + "show columns from", // MySQL SHOW variant with no PostgreSQL equivalent + "show extended columns from", // MySQL SHOW variant with no PostgreSQL equivalent + // unsupported doltgres syntax // " WITH ", // " OVER ", // string functions are broken due to incompatible types "HEX(", "TO_BASE64(", + // MySQL-specific functions not supported in doltgresql + "json_unquote", // MySQL JSON function + "year(", // YEAR() functional index hits a type-incompatibility in doltgresql + + // MySQL-specific operators and syntax not supported in PostgreSQL + "<=>", // null-safe equality (PostgreSQL uses IS NOT DISTINCT FROM) + "modify column", // MySQL ALTER TABLE MODIFY COLUMN syntax + "column first", // MySQL ADD COLUMN ... FIRST positioning } // Setup sets the setup scripts for this DoltHarness's engine @@ -729,6 +740,10 @@ func getDmlResult(rows pgx.Rows, query string) (sql.Row, bool) { return sql.NewRow(gmstypes.NewOkResult(0)), true case strings.HasPrefix(tag.String(), "ALTER TABLE"): return sql.NewRow(gmstypes.NewOkResult(0)), true + case strings.HasPrefix(tag.String(), "CREATE INDEX"): + return sql.NewRow(gmstypes.NewOkResult(0)), true + case strings.HasPrefix(tag.String(), "DROP INDEX"): + return sql.NewRow(gmstypes.NewOkResult(0)), true case strings.HasPrefix(tag.String(), "TRUNCATE"): return sql.NewRow(gmstypes.NewOkResult(0)), true case strings.HasPrefix(tag.String(), "SET"): @@ -814,12 +829,15 @@ func unwrapResultColumn(v any) (any, error) { } } +// IsServerBacked implements enginetest.ServerBackedEngine, marking DoltgresQueryEngine +// as a server-backed engine so that plan-inspection checks (evalIndexTest, etc.) are +// skipped, matching the behavior of GMS's own ServerQueryEngine. +func (d *DoltgresQueryEngine) IsServerBacked() bool { return true } + func (d *DoltgresQueryEngine) EngineAnalyzer() *analyzer.Analyzer { // TODO: this is a shim to get simple tests to work, we need to restructure the tests to not require access to // an analyzer - catalog := &analyzer.Catalog{} - catalog.AuthHandler = sql.GetAuthorizationHandlerFactory().CreateHandler(catalog) - + catalog := analyzer.NewCatalog(nil, sql.EngineOverrides{}) return &analyzer.Analyzer{ Catalog: catalog, } diff --git a/testing/go/index_test.go b/testing/go/index_test.go index d0982d2a0a..dfd9b78cde 100644 --- a/testing/go/index_test.go +++ b/testing/go/index_test.go @@ -1076,10 +1076,6 @@ func TestBasicIndexing(t *testing.T) { // ignored warning-generating unsupported options Query: "CREATE INDEX v1_idx ON test(v1 varchar_pattern_ops) WITH (storage_opt1 = foo) TABLESPACE tablespace_name;", }, - { - Query: "CREATE INDEX v1_idx2 ON test( (concat(v1, v1)) ) ;", - ExpectedErr: "not yet supported", - }, { Query: "CREATE INDEX v1_idx2 ON test using hash (v1);", ExpectedErr: "not yet supported", From 3a3e1cd3acce9871920ea17089f8bccdd1e6d788 Mon Sep 17 00:00:00 2001 From: Jason Fulghum Date: Mon, 11 May 2026 12:07:52 -0700 Subject: [PATCH 2/2] Small fixes for array types and functions --- core/typecollection/typecollection.go | 23 ++++++++++++++++++++++- server/ast/create_function.go | 2 +- server/ast/resolvable_type_reference.go | 12 +++++++----- server/types/type.go | 22 +++++++++++++++++++++- testing/go/create_function_sql_test.go | 12 ++++++++++++ 5 files changed, 63 insertions(+), 8 deletions(-) diff --git a/core/typecollection/typecollection.go b/core/typecollection/typecollection.go index 46fe942716..539f7e5be0 100644 --- a/core/typecollection/typecollection.go +++ b/core/typecollection/typecollection.go @@ -182,7 +182,28 @@ func (pgs *TypeCollection) GetType(ctx context.Context, name id.Type) (*pgtypes. if !ok { return nil, nil } - tbl, schema, err := pgs.getTable(sqlCtx, name.SchemaName(), name.TypeName()) + typeName := name.TypeName() + + // A name starting with "_" may be the implicit array type for a table's composite row type. + // PostgreSQL implicitly creates an array type for every user-defined type (including the + // composite type that is implicitly created for each table). Look up the element type by + // stripping the leading "_", and if a matching table exists, build the array type on the fly. + if strings.HasPrefix(typeName, "_") { + elemTbl, schema, err := pgs.getTable(sqlCtx, name.SchemaName(), typeName[1:]) + if err != nil { + return nil, err + } + if elemTbl != nil { + compositeType, err := pgs.tableToType(sqlCtx, elemTbl, schema) + if err != nil { + return nil, err + } + return pgtypes.CreateArrayTypeFromBaseType(compositeType), nil + } + return nil, nil + } + + tbl, schema, err := pgs.getTable(sqlCtx, name.SchemaName(), typeName) if err != nil || tbl == nil { return nil, err } diff --git a/server/ast/create_function.go b/server/ast/create_function.go index 3290bb68ce..0681ad3147 100644 --- a/server/ast/create_function.go +++ b/server/ast/create_function.go @@ -226,7 +226,7 @@ func convertSQLStmts(stmts parser.Statements, params []pgnodes.RoutineParam) (st StrVal: "", // must be empty string } // placeholder name is empty - if param.Name == "\"\"" { + if param.Name == "" { n := fmt.Sprintf("$%d", i+1) paramMap[n] = tv params[i].Name = n diff --git a/server/ast/resolvable_type_reference.go b/server/ast/resolvable_type_reference.go index d2d6fec57f..2740ec407f 100644 --- a/server/ast/resolvable_type_reference.go +++ b/server/ast/resolvable_type_reference.go @@ -41,9 +41,12 @@ func nodeResolvableTypeReference(ctx *Context, typ tree.ResolvableTypeReference, switch columnType := typ.(type) { case *tree.ArrayTypeReference: if uon, ok := columnType.ElementType.(*tree.UnresolvedObjectName); ok { - return nodeResolvableTypeReference(ctx, uon, mayBeTrigger) + tn := uon.ToTableName() + columnTypeName = tn.Object() + "[]" + doltgresType = pgtypes.NewUnresolvedArrayDoltgresType(tn.Schema(), tn.Object()) + } else { + return nil, nil, errors.Errorf("the given array type is not yet supported") } - return nil, nil, errors.Errorf("the given array type is not yet supported") case *tree.OIDTypeReference: return nil, nil, errors.Errorf("referencing types by their OID is not yet supported") case *tree.UnresolvedObjectName: @@ -69,9 +72,8 @@ func nodeResolvableTypeReference(ctx *Context, typ tree.ResolvableTypeReference, // currently the built-in types will be resolved, so it can retrieve its array type doltgresType = baseResolvedType.ToArrayType() } else { - // TODO: handle array type of non-built-in types - baseResolvedType.TypCategory = pgtypes.TypeCategory_ArrayTypes - doltgresType = baseResolvedType + // User-defined element type: build an unresolved array type with the proper structure. + doltgresType = pgtypes.NewUnresolvedArrayDoltgresType(baseResolvedType.ID.SchemaName(), baseResolvedType.ID.TypeName()) } } } else if columnType.Family() == types.GeometryFamily { diff --git a/server/types/type.go b/server/types/type.go index 38813b52c5..5f70473166 100644 --- a/server/types/type.go +++ b/server/types/type.go @@ -122,6 +122,19 @@ func NewUnresolvedDoltgresTypeFromID(idType id.Type) *DoltgresType { } } +// NewUnresolvedArrayDoltgresType returns an unresolved DoltgresType for an array of a user-defined element type. +// TypCategory and Elem are pre-filled so that IsArrayType() returns true before full resolution from the type +// collection. The array type ID follows the Postgres convention of "_" + element type name. +func NewUnresolvedArrayDoltgresType(sch, elemName string) *DoltgresType { + return &DoltgresType{ + ID: id.NewType(sch, "_"+elemName), + IsUnresolved: true, + TypCategory: TypeCategory_ArrayTypes, + Elem: id.NewType(sch, elemName), + Array: id.NullType, + } +} + // AnalyzeFuncName returns the name that would be displayed in pg_type for the `typanalyze` field. func (t *DoltgresType) AnalyzeFuncName() string { return globalFunctionRegistry.GetString(t.AnalyzeFunc) @@ -143,6 +156,9 @@ func (t *DoltgresType) ArrayBaseType() *DoltgresType { // we return for analysis elem, ok = LogicalArrayElementTypes[t.ID] if !ok { + if t.IsUnresolved && t.Elem != id.NullType { + return NewUnresolvedDoltgresType(t.Elem.SchemaName(), t.Elem.TypeName()) + } panic(fmt.Sprintf("cannot get base type from: %s", t.Name())) } } @@ -923,7 +939,11 @@ func (t *DoltgresType) ToArrayType() *DoltgresType { } arr, ok := IDToBuiltInDoltgresType[t.Array] if !ok { - panic(fmt.Sprintf("cannot get array type from: %s", t.Name())) + if t.Array == id.NullType { + panic(fmt.Sprintf("cannot get array type from: %s", t.Name())) + } + // User-defined type: the array type is not in the built-in map, so build it from this base type. + return CreateArrayTypeFromBaseType(t) } newArr := *arr.WithAttTypMod(t.attTypMod) newArr.InternalName = fmt.Sprintf("%s[]", t.String()) diff --git a/testing/go/create_function_sql_test.go b/testing/go/create_function_sql_test.go index d6af36f48d..9964730e5e 100644 --- a/testing/go/create_function_sql_test.go +++ b/testing/go/create_function_sql_test.go @@ -410,5 +410,17 @@ func TestCreateFunctionsLanguageSQL(t *testing.T) { }, }, }, + { + Name: "user-defined composite array parameter and return type", + SetUpScript: []string{ + `CREATE TYPE aggtype AS (a integer, b integer, c text)`, + }, + Assertions: []ScriptTestAssertion{ + { + Query: `CREATE FUNCTION aggf_trans(aggtype[],integer,integer,text) RETURNS aggtype[] AS 'select array_append($1,ROW($2,$3,$4)::aggtype)' LANGUAGE sql STRICT IMMUTABLE`, + Expected: []sql.Row{}, + }, + }, + }, }) }