parse
CREATE TABLE a ()
----
CREATE TABLE a ()
CREATE TABLE a () -- fully parenthesized
CREATE TABLE a () -- literals removed
CREATE TABLE _ () -- identifiers removed

parse
CREATE TABLE FAMILY (x INT)
----
CREATE TABLE "family" (x INT8) -- normalized!
CREATE TABLE "family" (x INT8) -- fully parenthesized
CREATE TABLE "family" (x INT8) -- literals removed
CREATE TABLE _ (_ INT8) -- identifiers removed

parse
CREATE TABLE MINVALUE (x INT)
----
CREATE TABLE minvalue (x INT8) -- normalized!
CREATE TABLE minvalue (x INT8) -- fully parenthesized
CREATE TABLE minvalue (x INT8) -- literals removed
CREATE TABLE _ (_ INT8) -- identifiers removed

parse
CREATE TABLE MAXVALUE (x INT)
----
CREATE TABLE maxvalue (x INT8) -- normalized!
CREATE TABLE maxvalue (x INT8) -- fully parenthesized
CREATE TABLE maxvalue (x INT8) -- literals removed
CREATE TABLE _ (_ INT8) -- identifiers removed

parse
CREATE TABLE foo (MINVALUE INT)
----
CREATE TABLE foo (minvalue INT8) -- normalized!
CREATE TABLE foo (minvalue INT8) -- fully parenthesized
CREATE TABLE foo (minvalue INT8) -- literals removed
CREATE TABLE _ (_ INT8) -- identifiers removed

parse
CREATE TABLE foo (MAXVALUE INT)
----
CREATE TABLE foo (maxvalue INT8) -- normalized!
CREATE TABLE foo (maxvalue INT8) -- fully parenthesized
CREATE TABLE foo (maxvalue INT8) -- literals removed
CREATE TABLE _ (_ INT8) -- identifiers removed

parse
CREATE TEMPORARY TABLE a (b INT8)
----
CREATE TEMPORARY TABLE a (b INT8)
CREATE TEMPORARY TABLE a (b INT8) -- fully parenthesized
CREATE TEMPORARY TABLE a (b INT8) -- literals removed
CREATE TEMPORARY TABLE _ (_ INT8) -- identifiers removed

parse
CREATE UNLOGGED TABLE a (b INT8)
----
CREATE UNLOGGED TABLE a (b INT8)
CREATE UNLOGGED TABLE a (b INT8) -- fully parenthesized
CREATE UNLOGGED TABLE a (b INT8) -- literals removed
CREATE UNLOGGED TABLE _ (_ INT8) -- identifiers removed

parse
EXPLAIN CREATE TABLE a ()
----
EXPLAIN CREATE TABLE a ()
EXPLAIN CREATE TABLE a () -- fully parenthesized
EXPLAIN CREATE TABLE a () -- literals removed
EXPLAIN CREATE TABLE _ () -- identifiers removed

parse
CREATE TABLE a (b INT8)
----
CREATE TABLE a (b INT8)
CREATE TABLE a (b INT8) -- fully parenthesized
CREATE TABLE a (b INT8) -- literals removed
CREATE TABLE _ (_ INT8) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8)
----
CREATE TABLE a (b INT8, c INT8)
CREATE TABLE a (b INT8, c INT8) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8) -- identifiers removed

parse
CREATE TABLE a (b BIGINT, c SMALLINT, d INTEGER, e INT)
----
CREATE TABLE a (b INT8, c INT2, d INT8, e INT8) -- normalized!
CREATE TABLE a (b INT8, c INT2, d INT8, e INT8) -- fully parenthesized
CREATE TABLE a (b INT8, c INT2, d INT8, e INT8) -- literals removed
CREATE TABLE _ (_ INT8, _ INT2, _ INT8, _ INT8) -- identifiers removed


parse
CREATE TABLE a (b CHAR)
----
CREATE TABLE a (b CHAR)
CREATE TABLE a (b CHAR) -- fully parenthesized
CREATE TABLE a (b CHAR) -- literals removed
CREATE TABLE _ (_ CHAR) -- identifiers removed

parse
CREATE TABLE a (b CHAR(3))
----
CREATE TABLE a (b CHAR(3))
CREATE TABLE a (b CHAR(3)) -- fully parenthesized
CREATE TABLE a (b CHAR(3)) -- literals removed
CREATE TABLE _ (_ CHAR(3)) -- identifiers removed

parse
CREATE TABLE a (b VARCHAR)
----
CREATE TABLE a (b VARCHAR)
CREATE TABLE a (b VARCHAR) -- fully parenthesized
CREATE TABLE a (b VARCHAR) -- literals removed
CREATE TABLE _ (_ VARCHAR) -- identifiers removed

parse
CREATE TABLE a (b VARCHAR(3))
----
CREATE TABLE a (b VARCHAR(3))
CREATE TABLE a (b VARCHAR(3)) -- fully parenthesized
CREATE TABLE a (b VARCHAR(3)) -- literals removed
CREATE TABLE _ (_ VARCHAR(3)) -- identifiers removed

parse
CREATE TABLE a (b STRING)
----
CREATE TABLE a (b STRING)
CREATE TABLE a (b STRING) -- fully parenthesized
CREATE TABLE a (b STRING) -- literals removed
CREATE TABLE _ (_ STRING) -- identifiers removed

parse
CREATE TABLE a (b STRING(3))
----
CREATE TABLE a (b STRING(3))
CREATE TABLE a (b STRING(3)) -- fully parenthesized
CREATE TABLE a (b STRING(3)) -- literals removed
CREATE TABLE _ (_ STRING(3)) -- identifiers removed

parse
CREATE TABLE a (b TEXT)
----
CREATE TABLE a (b STRING) -- normalized!
CREATE TABLE a (b STRING) -- fully parenthesized
CREATE TABLE a (b STRING) -- literals removed
CREATE TABLE _ (_ STRING) -- identifiers removed

parse
CREATE TABLE a (b CHAR(1), c CHARACTER(1), d CHARACTER(3))
----
CREATE TABLE a (b CHAR, c CHAR, d CHAR(3)) -- normalized!
CREATE TABLE a (b CHAR, c CHAR, d CHAR(3)) -- fully parenthesized
CREATE TABLE a (b CHAR, c CHAR, d CHAR(3)) -- literals removed
CREATE TABLE _ (_ CHAR, _ CHAR, _ CHAR(3)) -- identifiers removed

parse
CREATE TABLE a (b CHAR VARYING, c CHARACTER VARYING(3))
----
CREATE TABLE a (b VARCHAR, c VARCHAR(3)) -- normalized!
CREATE TABLE a (b VARCHAR, c VARCHAR(3)) -- fully parenthesized
CREATE TABLE a (b VARCHAR, c VARCHAR(3)) -- literals removed
CREATE TABLE _ (_ VARCHAR, _ VARCHAR(3)) -- identifiers removed

error
CREATE TABLE foo(a CHAR(0))
----
at or near ")": syntax error: length for type CHAR must be at least 1
DETAIL: source SQL:
CREATE TABLE foo(a CHAR(0))
                         ^

parse
CREATE TABLE a (b BIT VARYING(2), c BIT(1), c BIT, c BIT(0))
----
CREATE TABLE a (b VARBIT(2), c BIT, c BIT, c BIT(0)) -- normalized!
CREATE TABLE a (b VARBIT(2), c BIT, c BIT, c BIT(0)) -- fully parenthesized
CREATE TABLE a (b VARBIT(2), c BIT, c BIT, c BIT(0)) -- literals removed
CREATE TABLE _ (_ VARBIT(2), _ BIT, _ BIT, _ BIT(0)) -- identifiers removed

error
CREATE TABLE test (
  foo BIT(-1)
)
----
at or near "-": syntax error
DETAIL: source SQL:
CREATE TABLE test (
  foo BIT(-1)
          ^
HINT: try \h CREATE TABLE


parse
CREATE TABLE a (b JSON)
----
CREATE TABLE a (b JSONB) -- normalized!
CREATE TABLE a (b JSONB) -- fully parenthesized
CREATE TABLE a (b JSONB) -- literals removed
CREATE TABLE _ (_ JSONB) -- identifiers removed


parse
CREATE TABLE a (b FLOAT4)
----
CREATE TABLE a (b FLOAT4)
CREATE TABLE a (b FLOAT4) -- fully parenthesized
CREATE TABLE a (b FLOAT4) -- literals removed
CREATE TABLE _ (_ FLOAT4) -- identifiers removed

parse
CREATE TABLE a (b FLOAT8)
----
CREATE TABLE a (b FLOAT8)
CREATE TABLE a (b FLOAT8) -- fully parenthesized
CREATE TABLE a (b FLOAT8) -- literals removed
CREATE TABLE _ (_ FLOAT8) -- identifiers removed

parse
CREATE TABLE a (b FLOAT, c FLOAT(10), d FLOAT(40), e REAL, f DOUBLE PRECISION)
----
CREATE TABLE a (b FLOAT8, c FLOAT4, d FLOAT8, e FLOAT4, f FLOAT8) -- normalized!
CREATE TABLE a (b FLOAT8, c FLOAT4, d FLOAT8, e FLOAT4, f FLOAT8) -- fully parenthesized
CREATE TABLE a (b FLOAT8, c FLOAT4, d FLOAT8, e FLOAT4, f FLOAT8) -- literals removed
CREATE TABLE _ (_ FLOAT8, _ FLOAT4, _ FLOAT8, _ FLOAT4, _ FLOAT8) -- identifiers removed

parse
CREATE TABLE a (b NUMERIC, c NUMERIC(10), d DEC)
----
CREATE TABLE a (b DECIMAL, c DECIMAL(10), d DECIMAL) -- normalized!
CREATE TABLE a (b DECIMAL, c DECIMAL(10), d DECIMAL) -- fully parenthesized
CREATE TABLE a (b DECIMAL, c DECIMAL(10), d DECIMAL) -- literals removed
CREATE TABLE _ (_ DECIMAL, _ DECIMAL(10), _ DECIMAL) -- identifiers removed

parse
CREATE TABLE a (b BOOLEAN)
----
CREATE TABLE a (b BOOL) -- normalized!
CREATE TABLE a (b BOOL) -- fully parenthesized
CREATE TABLE a (b BOOL) -- literals removed
CREATE TABLE _ (_ BOOL) -- identifiers removed


parse
CREATE TABLE a (b SERIAL8)
----
CREATE TABLE a (b SERIAL8)
CREATE TABLE a (b SERIAL8) -- fully parenthesized
CREATE TABLE a (b SERIAL8) -- literals removed
CREATE TABLE _ (_ SERIAL8) -- identifiers removed

parse
CREATE TABLE a (b BIGSERIAL, c SMALLSERIAL, d SERIAL)
----
CREATE TABLE a (b SERIAL8, c SERIAL2, d SERIAL8) -- normalized!
CREATE TABLE a (b SERIAL8, c SERIAL2, d SERIAL8) -- fully parenthesized
CREATE TABLE a (b SERIAL8, c SERIAL2, d SERIAL8) -- literals removed
CREATE TABLE _ (_ SERIAL8, _ SERIAL2, _ SERIAL8) -- identifiers removed

parse
CREATE TABLE a (b TIMESTAMP WITH TIME ZONE)
----
CREATE TABLE a (b TIMESTAMPTZ) -- normalized!
CREATE TABLE a (b TIMESTAMPTZ) -- fully parenthesized
CREATE TABLE a (b TIMESTAMPTZ) -- literals removed
CREATE TABLE _ (_ TIMESTAMPTZ) -- identifiers removed

parse
CREATE TABLE a (b BYTES, c BYTEA, d BLOB)
----
CREATE TABLE a (b BYTES, c BYTES, d BYTES) -- normalized!
CREATE TABLE a (b BYTES, c BYTES, d BYTES) -- fully parenthesized
CREATE TABLE a (b BYTES, c BYTES, d BYTES) -- literals removed
CREATE TABLE _ (_ BYTES, _ BYTES, _ BYTES) -- identifiers removed


parse
CREATE TABLE a (b TIME)
----
CREATE TABLE a (b TIME)
CREATE TABLE a (b TIME) -- fully parenthesized
CREATE TABLE a (b TIME) -- literals removed
CREATE TABLE _ (_ TIME) -- identifiers removed

parse
CREATE TABLE a (b TIMETZ)
----
CREATE TABLE a (b TIMETZ)
CREATE TABLE a (b TIMETZ) -- fully parenthesized
CREATE TABLE a (b TIMETZ) -- literals removed
CREATE TABLE _ (_ TIMETZ) -- identifiers removed

parse
CREATE TABLE a (b TIME(3))
----
CREATE TABLE a (b TIME(3))
CREATE TABLE a (b TIME(3)) -- fully parenthesized
CREATE TABLE a (b TIME(3)) -- literals removed
CREATE TABLE _ (_ TIME(3)) -- identifiers removed

parse
CREATE TABLE a (b TIMETZ(3))
----
CREATE TABLE a (b TIMETZ(3))
CREATE TABLE a (b TIMETZ(3)) -- fully parenthesized
CREATE TABLE a (b TIMETZ(3)) -- literals removed
CREATE TABLE _ (_ TIMETZ(3)) -- identifiers removed

parse
CREATE TABLE a (b BOX2D)
----
CREATE TABLE a (b BOX2D)
CREATE TABLE a (b BOX2D) -- fully parenthesized
CREATE TABLE a (b BOX2D) -- literals removed
CREATE TABLE _ (_ BOX2D) -- identifiers removed

parse
CREATE TABLE a (b GEOGRAPHY)
----
CREATE TABLE a (b GEOGRAPHY)
CREATE TABLE a (b GEOGRAPHY) -- fully parenthesized
CREATE TABLE a (b GEOGRAPHY) -- literals removed
CREATE TABLE _ (_ GEOGRAPHY) -- identifiers removed

parse
CREATE TABLE a (b GEOGRAPHY(POINT))
----
CREATE TABLE a (b GEOGRAPHY(POINT))
CREATE TABLE a (b GEOGRAPHY(POINT)) -- fully parenthesized
CREATE TABLE a (b GEOGRAPHY(POINT)) -- literals removed
CREATE TABLE _ (_ GEOGRAPHY(POINT)) -- identifiers removed

parse
CREATE TABLE a (b GEOGRAPHY(POINT,4326))
----
CREATE TABLE a (b GEOGRAPHY(POINT,4326))
CREATE TABLE a (b GEOGRAPHY(POINT,4326)) -- fully parenthesized
CREATE TABLE a (b GEOGRAPHY(POINT,4326)) -- literals removed
CREATE TABLE _ (_ GEOGRAPHY(POINT,4326)) -- identifiers removed

parse
CREATE TABLE a (b GEOGRAPHY(LINESTRINGZ,4326))
----
CREATE TABLE a (b GEOGRAPHY(LINESTRINGZ,4326))
CREATE TABLE a (b GEOGRAPHY(LINESTRINGZ,4326)) -- fully parenthesized
CREATE TABLE a (b GEOGRAPHY(LINESTRINGZ,4326)) -- literals removed
CREATE TABLE _ (_ GEOGRAPHY(LINESTRINGZ,4326)) -- identifiers removed

parse
CREATE TABLE a (b GEOGRAPHY(LINESTRING,4326))
----
CREATE TABLE a (b GEOGRAPHY(LINESTRING,4326))
CREATE TABLE a (b GEOGRAPHY(LINESTRING,4326)) -- fully parenthesized
CREATE TABLE a (b GEOGRAPHY(LINESTRING,4326)) -- literals removed
CREATE TABLE _ (_ GEOGRAPHY(LINESTRING,4326)) -- identifiers removed

parse
CREATE TABLE a (b GEOGRAPHY(POLYGON,4326))
----
CREATE TABLE a (b GEOGRAPHY(POLYGON,4326))
CREATE TABLE a (b GEOGRAPHY(POLYGON,4326)) -- fully parenthesized
CREATE TABLE a (b GEOGRAPHY(POLYGON,4326)) -- literals removed
CREATE TABLE _ (_ GEOGRAPHY(POLYGON,4326)) -- identifiers removed

parse
CREATE TABLE a (b GEOGRAPHY(MULTIPOINT,4326))
----
CREATE TABLE a (b GEOGRAPHY(MULTIPOINT,4326))
CREATE TABLE a (b GEOGRAPHY(MULTIPOINT,4326)) -- fully parenthesized
CREATE TABLE a (b GEOGRAPHY(MULTIPOINT,4326)) -- literals removed
CREATE TABLE _ (_ GEOGRAPHY(MULTIPOINT,4326)) -- identifiers removed

parse
CREATE TABLE a (b GEOGRAPHY(MULTILINESTRING,4326))
----
CREATE TABLE a (b GEOGRAPHY(MULTILINESTRING,4326))
CREATE TABLE a (b GEOGRAPHY(MULTILINESTRING,4326)) -- fully parenthesized
CREATE TABLE a (b GEOGRAPHY(MULTILINESTRING,4326)) -- literals removed
CREATE TABLE _ (_ GEOGRAPHY(MULTILINESTRING,4326)) -- identifiers removed

parse
CREATE TABLE a (b GEOGRAPHY(MULTIPOLYGON,4326))
----
CREATE TABLE a (b GEOGRAPHY(MULTIPOLYGON,4326))
CREATE TABLE a (b GEOGRAPHY(MULTIPOLYGON,4326)) -- fully parenthesized
CREATE TABLE a (b GEOGRAPHY(MULTIPOLYGON,4326)) -- literals removed
CREATE TABLE _ (_ GEOGRAPHY(MULTIPOLYGON,4326)) -- identifiers removed

parse
CREATE TABLE a (b GEOGRAPHY(GEOMETRY,4326))
----
CREATE TABLE a (b GEOGRAPHY(GEOMETRY,4326))
CREATE TABLE a (b GEOGRAPHY(GEOMETRY,4326)) -- fully parenthesized
CREATE TABLE a (b GEOGRAPHY(GEOMETRY,4326)) -- literals removed
CREATE TABLE _ (_ GEOGRAPHY(GEOMETRY,4326)) -- identifiers removed

parse
CREATE TABLE a (b GEOGRAPHY(GEOMETRYCOLLECTION,4326))
----
CREATE TABLE a (b GEOGRAPHY(GEOMETRYCOLLECTION,4326))
CREATE TABLE a (b GEOGRAPHY(GEOMETRYCOLLECTION,4326)) -- fully parenthesized
CREATE TABLE a (b GEOGRAPHY(GEOMETRYCOLLECTION,4326)) -- literals removed
CREATE TABLE _ (_ GEOGRAPHY(GEOMETRYCOLLECTION,4326)) -- identifiers removed

parse
CREATE TABLE a (b GEOMETRY)
----
CREATE TABLE a (b GEOMETRY)
CREATE TABLE a (b GEOMETRY) -- fully parenthesized
CREATE TABLE a (b GEOMETRY) -- literals removed
CREATE TABLE _ (_ GEOMETRY) -- identifiers removed

parse
CREATE TABLE a (b GEOMETRY(POINT))
----
CREATE TABLE a (b GEOMETRY(POINT))
CREATE TABLE a (b GEOMETRY(POINT)) -- fully parenthesized
CREATE TABLE a (b GEOMETRY(POINT)) -- literals removed
CREATE TABLE _ (_ GEOMETRY(POINT)) -- identifiers removed

parse
CREATE TABLE a (b GEOMETRY(POINT,4326))
----
CREATE TABLE a (b GEOMETRY(POINT,4326))
CREATE TABLE a (b GEOMETRY(POINT,4326)) -- fully parenthesized
CREATE TABLE a (b GEOMETRY(POINT,4326)) -- literals removed
CREATE TABLE _ (_ GEOMETRY(POINT,4326)) -- identifiers removed

parse
CREATE TABLE a (b UUID)
----
CREATE TABLE a (b UUID)
CREATE TABLE a (b UUID) -- fully parenthesized
CREATE TABLE a (b UUID) -- literals removed
CREATE TABLE _ (_ UUID) -- identifiers removed

parse
CREATE TABLE a (b INET)
----
CREATE TABLE a (b INET)
CREATE TABLE a (b INET) -- fully parenthesized
CREATE TABLE a (b INET) -- literals removed
CREATE TABLE _ (_ INET) -- identifiers removed

parse
CREATE TABLE a (b "char")
----
CREATE TABLE a (b "char")
CREATE TABLE a (b "char") -- fully parenthesized
CREATE TABLE a (b "char") -- literals removed
CREATE TABLE _ (_ "char") -- identifiers removed

parse
CREATE TABLE a (b
"char")
----
CREATE TABLE a (b "char") -- normalized!
CREATE TABLE a (b "char") -- fully parenthesized
CREATE TABLE a (b "char") -- literals removed
CREATE TABLE _ (_ "char") -- identifiers removed

parse
CREATE TABLE a ("b"
"char")
----
CREATE TABLE a (b "char") -- normalized!
CREATE TABLE a (b "char") -- fully parenthesized
CREATE TABLE a (b "char") -- literals removed
CREATE TABLE _ (_ "char") -- identifiers removed

parse
CREATE TABLE a (b INT8 NULL)
----
CREATE TABLE a (b INT8 NULL)
CREATE TABLE a (b INT8 NULL) -- fully parenthesized
CREATE TABLE a (b INT8 NULL) -- literals removed
CREATE TABLE _ (_ INT8 NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8 CONSTRAINT maybe NULL)
----
CREATE TABLE a (b INT8 CONSTRAINT maybe NULL)
CREATE TABLE a (b INT8 CONSTRAINT maybe NULL) -- fully parenthesized
CREATE TABLE a (b INT8 CONSTRAINT maybe NULL) -- literals removed
CREATE TABLE _ (_ INT8 CONSTRAINT _ NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8 NOT NULL)
----
CREATE TABLE a (b INT8 NOT NULL)
CREATE TABLE a (b INT8 NOT NULL) -- fully parenthesized
CREATE TABLE a (b INT8 NOT NULL) -- literals removed
CREATE TABLE _ (_ INT8 NOT NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8 CONSTRAINT always NOT NULL)
----
CREATE TABLE a (b INT8 CONSTRAINT always NOT NULL)
CREATE TABLE a (b INT8 CONSTRAINT always NOT NULL) -- fully parenthesized
CREATE TABLE a (b INT8 CONSTRAINT always NOT NULL) -- literals removed
CREATE TABLE _ (_ INT8 CONSTRAINT _ NOT NULL) -- identifiers removed

error
CREATE TABLE test (
  foo INT8 NOT NULL NULL
)
----
at or near ")": syntax error: conflicting NULL/NOT NULL declarations for column "foo"
DETAIL: source SQL:
CREATE TABLE test (
  foo INT8 NOT NULL NULL
)
^

error
CREATE TABLE test (
  foo INT8 NULL NOT NULL
)
----
at or near ")": syntax error: conflicting NULL/NOT NULL declarations for column "foo"
DETAIL: source SQL:
CREATE TABLE test (
  foo INT8 NULL NOT NULL
)
^

parse
CREATE TABLE a (b INT8 PRIMARY KEY)
----
CREATE TABLE a (b INT8 PRIMARY KEY)
CREATE TABLE a (b INT8 PRIMARY KEY) -- fully parenthesized
CREATE TABLE a (b INT8 PRIMARY KEY) -- literals removed
CREATE TABLE _ (_ INT8 PRIMARY KEY) -- identifiers removed

parse
CREATE TABLE a (b INT8 UNIQUE)
----
CREATE TABLE a (b INT8 UNIQUE)
CREATE TABLE a (b INT8 UNIQUE) -- fully parenthesized
CREATE TABLE a (b INT8 UNIQUE) -- literals removed
CREATE TABLE _ (_ INT8 UNIQUE) -- identifiers removed

parse
CREATE TABLE a (b INT, UNIQUE INDEX foo (b))
----
CREATE TABLE a (b INT8, CONSTRAINT foo UNIQUE (b)) -- normalized!
CREATE TABLE a (b INT8, CONSTRAINT foo UNIQUE (b)) -- fully parenthesized
CREATE TABLE a (b INT8, CONSTRAINT foo UNIQUE (b)) -- literals removed
CREATE TABLE _ (_ INT8, CONSTRAINT _ UNIQUE (_)) -- identifiers removed

parse
CREATE TABLE a (b INT, UNIQUE INDEX foo (b) WHERE c > 3)
----
CREATE TABLE a (b INT8, CONSTRAINT foo UNIQUE (b) WHERE c > 3) -- normalized!
CREATE TABLE a (b INT8, CONSTRAINT foo UNIQUE (b) WHERE ((c) > (3))) -- fully parenthesized
CREATE TABLE a (b INT8, CONSTRAINT foo UNIQUE (b) WHERE c > _) -- literals removed
CREATE TABLE _ (_ INT8, CONSTRAINT _ UNIQUE (_) WHERE _ > 3) -- identifiers removed

parse
CREATE TABLE a (UNIQUE INDEX (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1)))
----
CREATE TABLE a (UNIQUE (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1))) -- normalized!
CREATE TABLE a (UNIQUE (b) PARTITION BY LIST (c) (PARTITION d VALUES IN ((1)))) -- fully parenthesized
CREATE TABLE a (UNIQUE (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (_))) -- literals removed
CREATE TABLE _ (UNIQUE (_) PARTITION BY LIST (_) (PARTITION _ VALUES IN (1))) -- identifiers removed

# Regression test for #95238
parse
CREATE TABLE a (UNIQUE INDEX (b) PARTITION BY LIST ("c d") (PARTITION "e f" VALUES IN (1)))
----
CREATE TABLE a (UNIQUE (b) PARTITION BY LIST ("c d") (PARTITION "e f" VALUES IN (1))) -- normalized!
CREATE TABLE a (UNIQUE (b) PARTITION BY LIST ("c d") (PARTITION "e f" VALUES IN ((1)))) -- fully parenthesized
CREATE TABLE a (UNIQUE (b) PARTITION BY LIST ("c d") (PARTITION "e f" VALUES IN (_))) -- literals removed
CREATE TABLE _ (UNIQUE (_) PARTITION BY LIST (_) (PARTITION _ VALUES IN (1))) -- identifiers removed

parse
CREATE TABLE a (b INT8 UNIQUE WITHOUT INDEX)
----
CREATE TABLE a (b INT8 UNIQUE WITHOUT INDEX)
CREATE TABLE a (b INT8 UNIQUE WITHOUT INDEX) -- fully parenthesized
CREATE TABLE a (b INT8 UNIQUE WITHOUT INDEX) -- literals removed
CREATE TABLE _ (_ INT8 UNIQUE WITHOUT INDEX) -- identifiers removed

parse
CREATE TABLE a (b INT8 NULL PRIMARY KEY)
----
CREATE TABLE a (b INT8 NULL PRIMARY KEY)
CREATE TABLE a (b INT8 NULL PRIMARY KEY) -- fully parenthesized
CREATE TABLE a (b INT8 NULL PRIMARY KEY) -- literals removed
CREATE TABLE _ (_ INT8 NULL PRIMARY KEY) -- identifiers removed

parse
CREATE TABLE a (b INT8 DEFAULT 1)
----
CREATE TABLE a (b INT8 DEFAULT 1)
CREATE TABLE a (b INT8 DEFAULT (1)) -- fully parenthesized
CREATE TABLE a (b INT8 DEFAULT _) -- literals removed
CREATE TABLE _ (_ INT8 DEFAULT 1) -- identifiers removed

parse
CREATE TABLE a (b INT8 ON UPDATE 1)
----
CREATE TABLE a (b INT8 ON UPDATE 1)
CREATE TABLE a (b INT8 ON UPDATE (1)) -- fully parenthesized
CREATE TABLE a (b INT8 ON UPDATE _) -- literals removed
CREATE TABLE _ (_ INT8 ON UPDATE 1) -- identifiers removed

parse
CREATE TABLE a (b INT8 DEFAULT 1 ON UPDATE 2)
----
CREATE TABLE a (b INT8 DEFAULT 1 ON UPDATE 2)
CREATE TABLE a (b INT8 DEFAULT (1) ON UPDATE (2)) -- fully parenthesized
CREATE TABLE a (b INT8 DEFAULT _ ON UPDATE _) -- literals removed
CREATE TABLE _ (_ INT8 DEFAULT 1 ON UPDATE 2) -- identifiers removed

parse
CREATE TABLE a (b INT8 CONSTRAINT one DEFAULT 1)
----
CREATE TABLE a (b INT8 CONSTRAINT one DEFAULT 1)
CREATE TABLE a (b INT8 CONSTRAINT one DEFAULT (1)) -- fully parenthesized
CREATE TABLE a (b INT8 CONSTRAINT one DEFAULT _) -- literals removed
CREATE TABLE _ (_ INT8 CONSTRAINT _ DEFAULT 1) -- identifiers removed

parse
CREATE TABLE a (b INT8 DEFAULT now())
----
CREATE TABLE a (b INT8 DEFAULT now())
CREATE TABLE a (b INT8 DEFAULT (now())) -- fully parenthesized
CREATE TABLE a (b INT8 DEFAULT now()) -- literals removed
CREATE TABLE _ (_ INT8 DEFAULT _()) -- identifiers removed

error
CREATE TABLE test (
  foo INT8 DEFAULT 1 DEFAULT 2
)
----
at or near ")": syntax error: multiple default values specified for column "foo"
DETAIL: source SQL:
CREATE TABLE test (
  foo INT8 DEFAULT 1 DEFAULT 2
)
^

parse
CREATE TABLE a (a INT8 CHECK (a > 0))
----
CREATE TABLE a (a INT8 CHECK (a > 0))
CREATE TABLE a (a INT8 CHECK (((a) > (0)))) -- fully parenthesized
CREATE TABLE a (a INT8 CHECK (a > _)) -- literals removed
CREATE TABLE _ (_ INT8 CHECK (_ > 0)) -- identifiers removed

parse
CREATE TABLE a (a INT8 CONSTRAINT positive CHECK (a > 0))
----
CREATE TABLE a (a INT8 CONSTRAINT positive CHECK (a > 0))
CREATE TABLE a (a INT8 CONSTRAINT positive CHECK (((a) > (0)))) -- fully parenthesized
CREATE TABLE a (a INT8 CONSTRAINT positive CHECK (a > _)) -- literals removed
CREATE TABLE _ (_ INT8 CONSTRAINT _ CHECK (_ > 0)) -- identifiers removed

parse
CREATE TABLE a (a INT8 DEFAULT 1 CHECK (a > 0))
----
CREATE TABLE a (a INT8 DEFAULT 1 CHECK (a > 0))
CREATE TABLE a (a INT8 DEFAULT (1) CHECK (((a) > (0)))) -- fully parenthesized
CREATE TABLE a (a INT8 DEFAULT _ CHECK (a > _)) -- literals removed
CREATE TABLE _ (_ INT8 DEFAULT 1 CHECK (_ > 0)) -- identifiers removed

parse
CREATE TABLE a (a INT8 CONSTRAINT one DEFAULT 1 CHECK (a > 0))
----
CREATE TABLE a (a INT8 CONSTRAINT one DEFAULT 1 CHECK (a > 0))
CREATE TABLE a (a INT8 CONSTRAINT one DEFAULT (1) CHECK (((a) > (0)))) -- fully parenthesized
CREATE TABLE a (a INT8 CONSTRAINT one DEFAULT _ CHECK (a > _)) -- literals removed
CREATE TABLE _ (_ INT8 CONSTRAINT _ DEFAULT 1 CHECK (_ > 0)) -- identifiers removed

parse
CREATE TABLE a (a INT8 DEFAULT 1 CONSTRAINT positive CHECK (a > 0))
----
CREATE TABLE a (a INT8 DEFAULT 1 CONSTRAINT positive CHECK (a > 0))
CREATE TABLE a (a INT8 DEFAULT (1) CONSTRAINT positive CHECK (((a) > (0)))) -- fully parenthesized
CREATE TABLE a (a INT8 DEFAULT _ CONSTRAINT positive CHECK (a > _)) -- literals removed
CREATE TABLE _ (_ INT8 DEFAULT 1 CONSTRAINT _ CHECK (_ > 0)) -- identifiers removed

parse
CREATE TABLE a (a INT8 CONSTRAINT one DEFAULT 1 CONSTRAINT positive CHECK (a > 0))
----
CREATE TABLE a (a INT8 CONSTRAINT one DEFAULT 1 CONSTRAINT positive CHECK (a > 0))
CREATE TABLE a (a INT8 CONSTRAINT one DEFAULT (1) CONSTRAINT positive CHECK (((a) > (0)))) -- fully parenthesized
CREATE TABLE a (a INT8 CONSTRAINT one DEFAULT _ CONSTRAINT positive CHECK (a > _)) -- literals removed
CREATE TABLE _ (_ INT8 CONSTRAINT _ DEFAULT 1 CONSTRAINT _ CHECK (_ > 0)) -- identifiers removed

parse
CREATE TABLE a (a INT8 CONSTRAINT one CHECK (a > 0) CONSTRAINT two CHECK (a < 10))
----
CREATE TABLE a (a INT8 CONSTRAINT one CHECK (a > 0) CONSTRAINT two CHECK (a < 10))
CREATE TABLE a (a INT8 CONSTRAINT one CHECK (((a) > (0))) CONSTRAINT two CHECK (((a) < (10)))) -- fully parenthesized
CREATE TABLE a (a INT8 CONSTRAINT one CHECK (a > _) CONSTRAINT two CHECK (a < _)) -- literals removed
CREATE TABLE _ (_ INT8 CONSTRAINT _ CHECK (_ > 0) CONSTRAINT _ CHECK (_ < 10)) -- identifiers removed

parse
CREATE TABLE a (b INT, CHECK (b > 0) NOT VALID)
----
CREATE TABLE a (b INT8, CHECK (b > 0)) -- normalized!
CREATE TABLE a (b INT8, CHECK (((b) > (0)))) -- fully parenthesized
CREATE TABLE a (b INT8, CHECK (b > _)) -- literals removed
CREATE TABLE _ (_ INT8, CHECK (_ > 0)) -- identifiers removed


parse
CREATE TABLE a (b INT8 NOT VISIBLE)
----
CREATE TABLE a (b INT8 NOT VISIBLE)
CREATE TABLE a (b INT8 NOT VISIBLE) -- fully parenthesized
CREATE TABLE a (b INT8 NOT VISIBLE) -- literals removed
CREATE TABLE _ (_ INT8 NOT VISIBLE) -- identifiers removed

parse
CREATE TABLE a (b INT8 NOT VISIBLE NULL)
----
CREATE TABLE a (b INT8 NULL NOT VISIBLE) -- normalized!
CREATE TABLE a (b INT8 NULL NOT VISIBLE) -- fully parenthesized
CREATE TABLE a (b INT8 NULL NOT VISIBLE) -- literals removed
CREATE TABLE _ (_ INT8 NULL NOT VISIBLE) -- identifiers removed

parse
CREATE TABLE a (b INT8 NULL NOT VISIBLE)
----
CREATE TABLE a (b INT8 NULL NOT VISIBLE)
CREATE TABLE a (b INT8 NULL NOT VISIBLE) -- fully parenthesized
CREATE TABLE a (b INT8 NULL NOT VISIBLE) -- literals removed
CREATE TABLE _ (_ INT8 NULL NOT VISIBLE) -- identifiers removed

parse
CREATE TABLE a (b INT8 CONSTRAINT c NOT NULL NOT VISIBLE)
----
CREATE TABLE a (b INT8 CONSTRAINT c NOT NULL NOT VISIBLE)
CREATE TABLE a (b INT8 CONSTRAINT c NOT NULL NOT VISIBLE) -- fully parenthesized
CREATE TABLE a (b INT8 CONSTRAINT c NOT NULL NOT VISIBLE) -- literals removed
CREATE TABLE _ (_ INT8 CONSTRAINT _ NOT NULL NOT VISIBLE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, PRIMARY KEY (b, c, "0"))
----
CREATE TABLE a (b INT8, c STRING, PRIMARY KEY (b, c, "0"))
CREATE TABLE a (b INT8, c STRING, PRIMARY KEY (b, c, "0")) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, PRIMARY KEY (b, c, "0")) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, PRIMARY KEY (_, _, _)) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _) -- identifiers removed

error
CREATE TABLE test (
  foo INT8 REFERENCES t1 REFERENCES t2
)
----
at or near ")": syntax error: multiple foreign key constraints specified for column "foo"
DETAIL: source SQL:
CREATE TABLE test (
  foo INT8 REFERENCES t1 REFERENCES t2
)
^

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE RESTRICT)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE RESTRICT)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON UPDATE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH SIMPLE ON UPDATE RESTRICT)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE RESTRICT) -- normalized!
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON UPDATE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE RESTRICT)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE RESTRICT)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE RESTRICT ON UPDATE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE CASCADE)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE CASCADE)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON UPDATE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE CASCADE)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE CASCADE)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE CASCADE ON UPDATE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE SET NULL)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE SET NULL)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON UPDATE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE SET NULL)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE SET NULL)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE SET NULL ON UPDATE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE SET DEFAULT)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE SET DEFAULT)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON UPDATE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON UPDATE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE SET DEFAULT)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE SET DEFAULT)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE SET DEFAULT)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE SET DEFAULT)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE CASCADE)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE CASCADE)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE SET DEFAULT ON UPDATE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE SET NULL)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE SET NULL)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE CASCADE ON UPDATE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE RESTRICT)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE RESTRICT)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE SET NULL ON UPDATE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH SIMPLE)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo) -- normalized!
CREATE TABLE a (b INT8, c INT8 REFERENCES foo) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo (bar) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo (bar)) -- normalized!
CREATE TABLE a (b INT8, c INT8 REFERENCES foo (bar)) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo (bar)) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ (_)) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE NO ACTION ON DELETE NO ACTION)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH SIMPLE ON DELETE SET DEFAULT ON UPDATE SET DEFAULT)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- normalized!
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH SIMPLE ON DELETE RESTRICT ON UPDATE SET DEFAULT)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- normalized!
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH SIMPLE ON DELETE SET DEFAULT ON UPDATE CASCADE)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE CASCADE) -- normalized!
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE SET DEFAULT ON UPDATE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH SIMPLE ON DELETE CASCADE ON UPDATE SET NULL)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE SET NULL) -- normalized!
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE CASCADE ON UPDATE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH SIMPLE ON DELETE SET NULL ON UPDATE RESTRICT)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE RESTRICT) -- normalized!
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ ON DELETE SET NULL ON UPDATE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other MATCH SIMPLE)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other) -- normalized!
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_, _) REFERENCES _) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH SIMPLE)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y)) -- normalized!
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y)) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y)) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_, _) REFERENCES _ (_, _)) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH SIMPLE ON UPDATE CASCADE)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) ON UPDATE CASCADE) -- normalized!
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) ON UPDATE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) ON UPDATE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_, _) REFERENCES _ (_, _) ON UPDATE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH SIMPLE ON DELETE CASCADE)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) ON DELETE CASCADE) -- normalized!
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) ON DELETE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) ON DELETE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_, _) REFERENCES _ (_, _) ON DELETE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH SIMPLE ON DELETE CASCADE ON UPDATE SET NULL)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) ON DELETE CASCADE ON UPDATE SET NULL) -- normalized!
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) ON DELETE CASCADE ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) ON DELETE CASCADE ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_, _) REFERENCES _ (_, _) ON DELETE CASCADE ON UPDATE SET NULL) -- identifiers removed


parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE RESTRICT ON DELETE RESTRICT)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE RESTRICT) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON DELETE RESTRICT ON UPDATE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE RESTRICT ON DELETE NO ACTION)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE RESTRICT) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON UPDATE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE NO ACTION ON DELETE RESTRICT)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON DELETE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE CASCADE ON DELETE CASCADE)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE CASCADE) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON DELETE CASCADE ON UPDATE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE CASCADE ON DELETE NO ACTION)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE CASCADE) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON UPDATE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE NO ACTION ON DELETE CASCADE)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON DELETE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE SET NULL ON DELETE SET NULL)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE SET NULL) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON DELETE SET NULL ON UPDATE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE SET NULL ON DELETE NO ACTION)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE SET NULL) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON UPDATE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE NO ACTION ON DELETE SET NULL)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON DELETE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE SET DEFAULT ON DELETE SET DEFAULT)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE SET DEFAULT ON DELETE NO ACTION)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE SET DEFAULT) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON UPDATE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE NO ACTION ON DELETE SET DEFAULT)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON DELETE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE RESTRICT ON DELETE CASCADE)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE RESTRICT) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE CASCADE ON UPDATE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON DELETE CASCADE ON UPDATE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE CASCADE ON DELETE SET NULL)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE CASCADE) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET NULL ON UPDATE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON DELETE SET NULL ON UPDATE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE SET NULL ON DELETE SET DEFAULT)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE SET NULL) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE SET DEFAULT ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON DELETE SET DEFAULT ON UPDATE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON UPDATE SET DEFAULT ON DELETE RESTRICT)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other MATCH FULL ON UPDATE NO ACTION ON DELETE NO ACTION)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other MATCH FULL) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other MATCH FULL) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other MATCH FULL) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ MATCH FULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE SET DEFAULT ON UPDATE SET DEFAULT)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE SET DEFAULT ON UPDATE SET DEFAULT)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ MATCH FULL ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE RESTRICT ON UPDATE SET DEFAULT)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE RESTRICT ON UPDATE SET DEFAULT)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ MATCH FULL ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE SET DEFAULT ON UPDATE CASCADE)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE SET DEFAULT ON UPDATE CASCADE)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE SET DEFAULT ON UPDATE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE SET DEFAULT ON UPDATE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ MATCH FULL ON DELETE SET DEFAULT ON UPDATE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE CASCADE ON UPDATE SET NULL)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE CASCADE ON UPDATE SET NULL)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE CASCADE ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE CASCADE ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ MATCH FULL ON DELETE CASCADE ON UPDATE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE SET NULL ON UPDATE RESTRICT)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE SET NULL ON UPDATE RESTRICT)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE SET NULL ON UPDATE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b) REFERENCES other MATCH FULL ON DELETE SET NULL ON UPDATE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_) REFERENCES _ MATCH FULL ON DELETE SET NULL ON UPDATE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other MATCH FULL)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other MATCH FULL)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other MATCH FULL) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other MATCH FULL) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_, _) REFERENCES _ MATCH FULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_, _) REFERENCES _ (_, _) MATCH FULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other)
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other)
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_, _) REFERENCES _) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y))
----
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y))
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y)) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FOREIGN KEY (b, c) REFERENCES other (x, y)) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FOREIGN KEY (_, _) REFERENCES _ (_, _)) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y))
----
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y))
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y)) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y)) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, CONSTRAINT _ FOREIGN KEY (_, _) REFERENCES _ (_, _)) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH SIMPLE)
----
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y)) -- normalized!
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y)) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y)) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, CONSTRAINT _ FOREIGN KEY (_, _) REFERENCES _ (_, _)) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH SIMPLE ON UPDATE SET NULL)
----
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) ON UPDATE SET NULL) -- normalized!
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, CONSTRAINT _ FOREIGN KEY (_, _) REFERENCES _ (_, _) ON UPDATE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH SIMPLE ON DELETE SET DEFAULT)
----
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) ON DELETE SET DEFAULT) -- normalized!
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) ON DELETE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) ON DELETE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, CONSTRAINT _ FOREIGN KEY (_, _) REFERENCES _ (_, _) ON DELETE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL)
----
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL)
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, CONSTRAINT _ FOREIGN KEY (_, _) REFERENCES _ (_, _) MATCH FULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL ON UPDATE SET NULL)
----
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL ON UPDATE SET NULL)
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, CONSTRAINT _ FOREIGN KEY (_, _) REFERENCES _ (_, _) MATCH FULL ON UPDATE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL ON DELETE SET DEFAULT)
----
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL ON DELETE SET DEFAULT)
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL ON DELETE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL ON DELETE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, CONSTRAINT _ FOREIGN KEY (_, _) REFERENCES _ (_, _) MATCH FULL ON DELETE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL ON DELETE SET DEFAULT ON UPDATE SET NULL)
----
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL ON DELETE SET DEFAULT ON UPDATE SET NULL)
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL ON DELETE SET DEFAULT ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, CONSTRAINT s FOREIGN KEY (b, c) REFERENCES other (x, y) MATCH FULL ON DELETE SET DEFAULT ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, CONSTRAINT _ FOREIGN KEY (_, _) REFERENCES _ (_, _) MATCH FULL ON DELETE SET DEFAULT ON UPDATE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT, FOREIGN KEY (b) REFERENCES other (b) NOT VALID)
----
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other (b)) -- normalized!
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other (b)) -- fully parenthesized
CREATE TABLE a (b INT8, FOREIGN KEY (b) REFERENCES other (b)) -- literals removed
CREATE TABLE _ (_ INT8, FOREIGN KEY (_) REFERENCES _ (_)) -- identifiers removed


parse
CREATE TABLE a (b INT8, c STRING, INDEX (b, c))
----
CREATE TABLE a (b INT8, c STRING, INDEX (b, c))
CREATE TABLE a (b INT8, c STRING, INDEX (b, c)) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, INDEX (b, c)) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, INDEX (_, _)) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, INDEX d (b, c))
----
CREATE TABLE a (b INT8, c STRING, INDEX d (b, c))
CREATE TABLE a (b INT8, c STRING, INDEX d (b, c)) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, INDEX d (b, c)) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, INDEX _ (_, _)) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, CONSTRAINT d UNIQUE (b, c))
----
CREATE TABLE a (b INT8, c STRING, CONSTRAINT d UNIQUE (b, c))
CREATE TABLE a (b INT8, c STRING, CONSTRAINT d UNIQUE (b, c)) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, CONSTRAINT d UNIQUE (b, c)) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, CONSTRAINT _ UNIQUE (_, _)) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, CONSTRAINT d UNIQUE WITHOUT INDEX (b, c))
----
CREATE TABLE a (b INT8, c STRING, CONSTRAINT d UNIQUE WITHOUT INDEX (b, c))
CREATE TABLE a (b INT8, c STRING, CONSTRAINT d UNIQUE WITHOUT INDEX (b, c)) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, CONSTRAINT d UNIQUE WITHOUT INDEX (b, c)) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, CONSTRAINT _ UNIQUE WITHOUT INDEX (_, _)) -- identifiers removed

error
CREATE TABLE test (
  CONSTRAINT foo INDEX (bar)
)
----
at or near "index": syntax error
DETAIL: source SQL:
CREATE TABLE test (
  CONSTRAINT foo INDEX (bar)
                 ^
HINT: try \h CREATE TABLE

parse
CREATE TABLE a (b INT8, UNIQUE (b))
----
CREATE TABLE a (b INT8, UNIQUE (b))
CREATE TABLE a (b INT8, UNIQUE (b)) -- fully parenthesized
CREATE TABLE a (b INT8, UNIQUE (b)) -- literals removed
CREATE TABLE _ (_ INT8, UNIQUE (_)) -- identifiers removed

parse
CREATE TABLE a (b INT8, UNIQUE (b) STORING (c))
----
CREATE TABLE a (b INT8, UNIQUE (b) STORING (c))
CREATE TABLE a (b INT8, UNIQUE (b) STORING (c)) -- fully parenthesized
CREATE TABLE a (b INT8, UNIQUE (b) STORING (c)) -- literals removed
CREATE TABLE _ (_ INT8, UNIQUE (_) STORING (_)) -- identifiers removed

parse
CREATE TABLE a (b INT8, INDEX (b))
----
CREATE TABLE a (b INT8, INDEX (b))
CREATE TABLE a (b INT8, INDEX (b)) -- fully parenthesized
CREATE TABLE a (b INT8, INDEX (b)) -- literals removed
CREATE TABLE _ (_ INT8, INDEX (_)) -- identifiers removed

parse
CREATE TABLE a (b INT8, INVERTED INDEX (b))
----
CREATE TABLE a (b INT8, INVERTED INDEX (b))
CREATE TABLE a (b INT8, INVERTED INDEX (b)) -- fully parenthesized
CREATE TABLE a (b INT8, INVERTED INDEX (b)) -- literals removed
CREATE TABLE _ (_ INT8, INVERTED INDEX (_)) -- identifiers removed

parse
CREATE TABLE a (b INT8, VECTOR INDEX (b))
----
CREATE TABLE a (b INT8, VECTOR INDEX (b))
CREATE TABLE a (b INT8, VECTOR INDEX (b)) -- fully parenthesized
CREATE TABLE a (b INT8, VECTOR INDEX (b)) -- literals removed
CREATE TABLE _ (_ INT8, VECTOR INDEX (_)) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE RESTRICT)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE RESTRICT)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON UPDATE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE RESTRICT)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE RESTRICT)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON DELETE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE RESTRICT ON UPDATE RESTRICT)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE RESTRICT ON UPDATE RESTRICT)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE RESTRICT ON UPDATE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE RESTRICT ON UPDATE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON DELETE RESTRICT ON UPDATE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE CASCADE)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE CASCADE)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON UPDATE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE CASCADE)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE CASCADE)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON DELETE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE CASCADE ON UPDATE CASCADE)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE CASCADE ON UPDATE CASCADE)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE CASCADE ON UPDATE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE CASCADE ON UPDATE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON DELETE CASCADE ON UPDATE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET NULL)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET NULL)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON UPDATE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET NULL)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET NULL)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON DELETE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET NULL ON UPDATE SET NULL)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET NULL ON UPDATE SET NULL)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET NULL ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET NULL ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON DELETE SET NULL ON UPDATE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET DEFAULT)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET DEFAULT)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON UPDATE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET DEFAULT)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET DEFAULT)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON DELETE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET DEFAULT ON UPDATE SET DEFAULT)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET DEFAULT ON UPDATE SET DEFAULT)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE RESTRICT ON UPDATE SET DEFAULT)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE RESTRICT ON UPDATE SET DEFAULT)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON DELETE RESTRICT ON UPDATE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET DEFAULT ON UPDATE CASCADE)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET DEFAULT ON UPDATE CASCADE)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET DEFAULT ON UPDATE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET DEFAULT ON UPDATE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON DELETE SET DEFAULT ON UPDATE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE CASCADE ON UPDATE SET NULL)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE CASCADE ON UPDATE SET NULL)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE CASCADE ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE CASCADE ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON DELETE CASCADE ON UPDATE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET NULL ON UPDATE RESTRICT)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET NULL ON UPDATE RESTRICT)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET NULL ON UPDATE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON DELETE SET NULL ON UPDATE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON DELETE SET NULL ON UPDATE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE CASCADE)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE CASCADE)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE CASCADE) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE CASCADE) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON UPDATE CASCADE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET NULL)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET NULL)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET NULL) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET NULL) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON UPDATE SET NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET DEFAULT)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET DEFAULT)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET DEFAULT) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo ON UPDATE SET DEFAULT) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ ON UPDATE SET DEFAULT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo (bar))
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo (bar))
CREATE TABLE a (b INT8, c INT8 REFERENCES foo (bar)) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo (bar)) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ (_)) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ MATCH FULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL ON UPDATE RESTRICT)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL ON UPDATE RESTRICT)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL ON UPDATE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL ON UPDATE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ MATCH FULL ON UPDATE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL ON DELETE RESTRICT)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL ON DELETE RESTRICT)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL ON DELETE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL ON DELETE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ MATCH FULL ON DELETE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL ON DELETE RESTRICT ON UPDATE RESTRICT)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL ON DELETE RESTRICT ON UPDATE RESTRICT)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL ON DELETE RESTRICT ON UPDATE RESTRICT) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo MATCH FULL ON DELETE RESTRICT ON UPDATE RESTRICT) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ MATCH FULL ON DELETE RESTRICT ON UPDATE RESTRICT) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8 REFERENCES foo (bar) MATCH FULL)
----
CREATE TABLE a (b INT8, c INT8 REFERENCES foo (bar) MATCH FULL)
CREATE TABLE a (b INT8, c INT8 REFERENCES foo (bar) MATCH FULL) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8 REFERENCES foo (bar) MATCH FULL) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 REFERENCES _ (_) MATCH FULL) -- identifiers removed

parse
CREATE TABLE a (b INT8, INDEX (b) STORING (c))
----
CREATE TABLE a (b INT8, INDEX (b) STORING (c))
CREATE TABLE a (b INT8, INDEX (b) STORING (c)) -- fully parenthesized
CREATE TABLE a (b INT8, INDEX (b) STORING (c)) -- literals removed
CREATE TABLE _ (_ INT8, INDEX (_) STORING (_)) -- identifiers removed

parse
CREATE TABLE a (b INT8, INDEX (b) WHERE b > 3)
----
CREATE TABLE a (b INT8, INDEX (b) WHERE b > 3)
CREATE TABLE a (b INT8, INDEX (b) WHERE ((b) > (3))) -- fully parenthesized
CREATE TABLE a (b INT8, INDEX (b) WHERE b > _) -- literals removed
CREATE TABLE _ (_ INT8, INDEX (_) WHERE _ > 3) -- identifiers removed

parse
CREATE TABLE a (b INT8, INVERTED INDEX (b) WHERE b > 3)
----
CREATE TABLE a (b INT8, INVERTED INDEX (b) WHERE b > 3)
CREATE TABLE a (b INT8, INVERTED INDEX (b) WHERE ((b) > (3))) -- fully parenthesized
CREATE TABLE a (b INT8, INVERTED INDEX (b) WHERE b > _) -- literals removed
CREATE TABLE _ (_ INT8, INVERTED INDEX (_) WHERE _ > 3) -- identifiers removed

parse
CREATE TABLE a (b INT8, VECTOR INDEX (b) WHERE b > 3)
----
CREATE TABLE a (b INT8, VECTOR INDEX (b) WHERE b > 3)
CREATE TABLE a (b INT8, VECTOR INDEX (b) WHERE ((b) > (3))) -- fully parenthesized
CREATE TABLE a (b INT8, VECTOR INDEX (b) WHERE b > _) -- literals removed
CREATE TABLE _ (_ INT8, VECTOR INDEX (_) WHERE _ > 3) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c))
----
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c))
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c)) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c)) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, INDEX (_ ASC, _ DESC) STORING (_)) -- identifiers removed

parse
CREATE TABLE a (b INT8, FAMILY (b))
----
CREATE TABLE a (b INT8, FAMILY (b))
CREATE TABLE a (b INT8, FAMILY (b)) -- fully parenthesized
CREATE TABLE a (b INT8, FAMILY (b)) -- literals removed
CREATE TABLE _ (_ INT8, FAMILY (_)) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, FAMILY foo (b), FAMILY (c))
----
CREATE TABLE a (b INT8, c STRING, FAMILY foo (b), FAMILY (c))
CREATE TABLE a (b INT8, c STRING, FAMILY foo (b), FAMILY (c)) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, FAMILY foo (b), FAMILY (c)) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, FAMILY _ (_), FAMILY (_)) -- identifiers removed

parse
CREATE TABLE a.b (b INT8)
----
CREATE TABLE a.b (b INT8)
CREATE TABLE a.b (b INT8) -- fully parenthesized
CREATE TABLE a.b (b INT8) -- literals removed
CREATE TABLE _._ (_ INT8) -- identifiers removed

parse
CREATE TABLE IF NOT EXISTS a (b INT8)
----
CREATE TABLE IF NOT EXISTS a (b INT8)
CREATE TABLE IF NOT EXISTS a (b INT8) -- fully parenthesized
CREATE TABLE IF NOT EXISTS a (b INT8) -- literals removed
CREATE TABLE IF NOT EXISTS _ (_ INT8) -- identifiers removed

parse
CREATE TABLE a (b INT8 AS (a + b) STORED)
----
CREATE TABLE a (b INT8 AS (a + b) STORED)
CREATE TABLE a (b INT8 AS (((a) + (b))) STORED) -- fully parenthesized
CREATE TABLE a (b INT8 AS (a + b) STORED) -- literals removed
CREATE TABLE _ (_ INT8 AS (_ + _) STORED) -- identifiers removed

parse
CREATE TABLE a (b INT8 GENERATED ALWAYS AS (a + b) STORED)
----
CREATE TABLE a (b INT8 AS (a + b) STORED) -- normalized!
CREATE TABLE a (b INT8 AS (((a) + (b))) STORED) -- fully parenthesized
CREATE TABLE a (b INT8 AS (a + b) STORED) -- literals removed
CREATE TABLE _ (_ INT8 AS (_ + _) STORED) -- identifiers removed

parse
CREATE TABLE a (b INT8 GENERATED ALWAYS AS (a + b) VIRTUAL)
----
CREATE TABLE a (b INT8 AS (a + b) VIRTUAL) -- normalized!
CREATE TABLE a (b INT8 AS (((a) + (b))) VIRTUAL) -- fully parenthesized
CREATE TABLE a (b INT8 AS (a + b) VIRTUAL) -- literals removed
CREATE TABLE _ (_ INT8 AS (_ + _) VIRTUAL) -- identifiers removed

parse
CREATE TABLE a (b INT8 AS (a + b) VIRTUAL)
----
CREATE TABLE a (b INT8 AS (a + b) VIRTUAL)
CREATE TABLE a (b INT8 AS (((a) + (b))) VIRTUAL) -- fully parenthesized
CREATE TABLE a (b INT8 AS (a + b) VIRTUAL) -- literals removed
CREATE TABLE _ (_ INT8 AS (_ + _) VIRTUAL) -- identifiers removed

parse
CREATE TABLE view (view INT8)
----
CREATE TABLE view (view INT8)
CREATE TABLE view (view INT8) -- fully parenthesized
CREATE TABLE view (view INT8) -- literals removed
CREATE TABLE _ (_ INT8) -- identifiers removed

parse
CREATE TABLE a (b INT8 CONSTRAINT c PRIMARY KEY)
----
CREATE TABLE a (b INT8 CONSTRAINT c PRIMARY KEY)
CREATE TABLE a (b INT8 CONSTRAINT c PRIMARY KEY) -- fully parenthesized
CREATE TABLE a (b INT8 CONSTRAINT c PRIMARY KEY) -- literals removed
CREATE TABLE _ (_ INT8 CONSTRAINT _ PRIMARY KEY) -- identifiers removed

parse
CREATE TABLE a (b INT8 CONSTRAINT c NULL)
----
CREATE TABLE a (b INT8 CONSTRAINT c NULL)
CREATE TABLE a (b INT8 CONSTRAINT c NULL) -- fully parenthesized
CREATE TABLE a (b INT8 CONSTRAINT c NULL) -- literals removed
CREATE TABLE _ (_ INT8 CONSTRAINT _ NULL) -- identifiers removed

parse
CREATE TABLE a (b INT8 CONSTRAINT c UNIQUE)
----
CREATE TABLE a (b INT8 CONSTRAINT c UNIQUE)
CREATE TABLE a (b INT8 CONSTRAINT c UNIQUE) -- fully parenthesized
CREATE TABLE a (b INT8 CONSTRAINT c UNIQUE) -- literals removed
CREATE TABLE _ (_ INT8 CONSTRAINT _ UNIQUE) -- identifiers removed

parse
CREATE TABLE a (b INT8 CONSTRAINT c UNIQUE WITHOUT INDEX)
----
CREATE TABLE a (b INT8 CONSTRAINT c UNIQUE WITHOUT INDEX)
CREATE TABLE a (b INT8 CONSTRAINT c UNIQUE WITHOUT INDEX) -- fully parenthesized
CREATE TABLE a (b INT8 CONSTRAINT c UNIQUE WITHOUT INDEX) -- literals removed
CREATE TABLE _ (_ INT8 CONSTRAINT _ UNIQUE WITHOUT INDEX) -- identifiers removed

parse
CREATE TABLE a (b INT8 CONSTRAINT c DEFAULT d)
----
CREATE TABLE a (b INT8 CONSTRAINT c DEFAULT d)
CREATE TABLE a (b INT8 CONSTRAINT c DEFAULT (d)) -- fully parenthesized
CREATE TABLE a (b INT8 CONSTRAINT c DEFAULT d) -- literals removed
CREATE TABLE _ (_ INT8 CONSTRAINT _ DEFAULT _) -- identifiers removed

parse
CREATE TABLE a (b INT8 CONSTRAINT c CHECK (d))
----
CREATE TABLE a (b INT8 CONSTRAINT c CHECK (d))
CREATE TABLE a (b INT8 CONSTRAINT c CHECK ((d))) -- fully parenthesized
CREATE TABLE a (b INT8 CONSTRAINT c CHECK (d)) -- literals removed
CREATE TABLE _ (_ INT8 CONSTRAINT _ CHECK (_)) -- identifiers removed

parse
CREATE TABLE a (b INT8 CONSTRAINT c REFERENCES d)
----
CREATE TABLE a (b INT8 CONSTRAINT c REFERENCES d)
CREATE TABLE a (b INT8 CONSTRAINT c REFERENCES d) -- fully parenthesized
CREATE TABLE a (b INT8 CONSTRAINT c REFERENCES d) -- literals removed
CREATE TABLE _ (_ INT8 CONSTRAINT _ REFERENCES _) -- identifiers removed

parse
CREATE TABLE a (b INT8) PARTITION BY NOTHING
----
CREATE TABLE a (b INT8) PARTITION BY NOTHING
CREATE TABLE a (b INT8) PARTITION BY NOTHING -- fully parenthesized
CREATE TABLE a (b INT8) PARTITION BY NOTHING -- literals removed
CREATE TABLE _ (_ INT8) PARTITION BY NOTHING -- identifiers removed

parse
CREATE TABLE a (b INT8) PARTITION ALL BY NOTHING
----
CREATE TABLE a (b INT8) PARTITION ALL BY NOTHING
CREATE TABLE a (b INT8) PARTITION ALL BY NOTHING -- fully parenthesized
CREATE TABLE a (b INT8) PARTITION ALL BY NOTHING -- literals removed
CREATE TABLE _ (_ INT8) PARTITION ALL BY NOTHING -- identifiers removed

parse
CREATE TABLE a (b INT8) PARTITION BY LIST (b) (PARTITION p1 VALUES IN (1, DEFAULT), PARTITION p2 VALUES IN ((1, 2), (3, 4)))
----
CREATE TABLE a (b INT8) PARTITION BY LIST (b) (PARTITION p1 VALUES IN (1, DEFAULT), PARTITION p2 VALUES IN ((1, 2), (3, 4)))
CREATE TABLE a (b INT8) PARTITION BY LIST (b) (PARTITION p1 VALUES IN ((1), (DEFAULT)), PARTITION p2 VALUES IN ((((1), (2))), (((3), (4))))) -- fully parenthesized
CREATE TABLE a (b INT8) PARTITION BY LIST (b) (PARTITION p1 VALUES IN (_, DEFAULT), PARTITION p2 VALUES IN ((_, _), (_, _))) -- literals removed
CREATE TABLE _ (_ INT8) PARTITION BY LIST (_) (PARTITION _ VALUES IN (1, DEFAULT), PARTITION _ VALUES IN ((1, 2), (3, 4))) -- identifiers removed

parse
CREATE TABLE a (b INT8) PARTITION ALL BY LIST (b) (PARTITION p1 VALUES IN (1, DEFAULT), PARTITION p2 VALUES IN ((1, 2), (3, 4)))
----
CREATE TABLE a (b INT8) PARTITION ALL BY LIST (b) (PARTITION p1 VALUES IN (1, DEFAULT), PARTITION p2 VALUES IN ((1, 2), (3, 4)))
CREATE TABLE a (b INT8) PARTITION ALL BY LIST (b) (PARTITION p1 VALUES IN ((1), (DEFAULT)), PARTITION p2 VALUES IN ((((1), (2))), (((3), (4))))) -- fully parenthesized
CREATE TABLE a (b INT8) PARTITION ALL BY LIST (b) (PARTITION p1 VALUES IN (_, DEFAULT), PARTITION p2 VALUES IN ((_, _), (_, _))) -- literals removed
CREATE TABLE _ (_ INT8) PARTITION ALL BY LIST (_) (PARTITION _ VALUES IN (1, DEFAULT), PARTITION _ VALUES IN ((1, 2), (3, 4))) -- identifiers removed

parse
CREATE TABLE a (b INT8, c INT8, d INT8) PARTITION BY LIST (b) (
	PARTITION p1 VALUES IN (1) PARTITION BY LIST (c) (
		PARTITION p1_1 VALUES IN (3), PARTITION p1_2 VALUES IN (4, 5)
	), PARTITION p2 VALUES IN (6) PARTITION BY RANGE (c) (
		PARTITION p2_1 VALUES FROM (7) TO (8) PARTITION BY LIST (d) (
			PARTITION p2_1_1 VALUES IN (8)
		)
	)
)
----
CREATE TABLE a (b INT8, c INT8, d INT8) PARTITION BY LIST (b) (PARTITION p1 VALUES IN (1) PARTITION BY LIST (c) (PARTITION p1_1 VALUES IN (3), PARTITION p1_2 VALUES IN (4, 5)), PARTITION p2 VALUES IN (6) PARTITION BY RANGE (c) (PARTITION p2_1 VALUES FROM (7) TO (8) PARTITION BY LIST (d) (PARTITION p2_1_1 VALUES IN (8)))) -- normalized!
CREATE TABLE a (b INT8, c INT8, d INT8) PARTITION BY LIST (b) (PARTITION p1 VALUES IN ((1)) PARTITION BY LIST (c) (PARTITION p1_1 VALUES IN ((3)), PARTITION p1_2 VALUES IN ((4), (5))), PARTITION p2 VALUES IN ((6)) PARTITION BY RANGE (c) (PARTITION p2_1 VALUES FROM ((7)) TO ((8)) PARTITION BY LIST (d) (PARTITION p2_1_1 VALUES IN ((8))))) -- fully parenthesized
CREATE TABLE a (b INT8, c INT8, d INT8) PARTITION BY LIST (b) (PARTITION p1 VALUES IN (_) PARTITION BY LIST (c) (PARTITION p1_1 VALUES IN (_), PARTITION p1_2 VALUES IN (_, _)), PARTITION p2 VALUES IN (_) PARTITION BY RANGE (c) (PARTITION p2_1 VALUES FROM (_) TO (_) PARTITION BY LIST (d) (PARTITION p2_1_1 VALUES IN (_)))) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8, _ INT8) PARTITION BY LIST (_) (PARTITION _ VALUES IN (1) PARTITION BY LIST (_) (PARTITION _ VALUES IN (3), PARTITION _ VALUES IN (4, 5)), PARTITION _ VALUES IN (6) PARTITION BY RANGE (_) (PARTITION _ VALUES FROM (7) TO (8) PARTITION BY LIST (_) (PARTITION _ VALUES IN (8)))) -- identifiers removed

parse
CREATE TABLE a (b INT) PARTITION BY RANGE (b) (
   PARTITION p1 VALUES FROM (MINVALUE) TO (1),
   PARTITION p2 VALUES FROM (2, MAXVALUE) TO (4, 4),
   PARTITION p3 VALUES FROM (4, 4) TO (MAXVALUE))
----
CREATE TABLE a (b INT8) PARTITION BY RANGE (b) (PARTITION p1 VALUES FROM (minvalue) TO (1), PARTITION p2 VALUES FROM (2, maxvalue) TO (4, 4), PARTITION p3 VALUES FROM (4, 4) TO (maxvalue)) -- normalized!
CREATE TABLE a (b INT8) PARTITION BY RANGE (b) (PARTITION p1 VALUES FROM ((minvalue)) TO ((1)), PARTITION p2 VALUES FROM ((2), (maxvalue)) TO ((4), (4)), PARTITION p3 VALUES FROM ((4), (4)) TO ((maxvalue))) -- fully parenthesized
CREATE TABLE a (b INT8) PARTITION BY RANGE (b) (PARTITION p1 VALUES FROM (minvalue) TO (_), PARTITION p2 VALUES FROM (_, maxvalue) TO (_, _), PARTITION p3 VALUES FROM (_, _) TO (maxvalue)) -- literals removed
CREATE TABLE _ (_ INT8) PARTITION BY RANGE (_) (PARTITION _ VALUES FROM (_) TO (1), PARTITION _ VALUES FROM (2, _) TO (4, 4), PARTITION _ VALUES FROM (4, 4) TO (_)) -- identifiers removed

parse
CREATE TABLE a (b INT) PARTITION ALL BY RANGE (b) (
  PARTITION p1 VALUES FROM (MINVALUE) TO (1),
  PARTITION p2 VALUES FROM (2, MAXVALUE) TO (4, 4),
  PARTITION p3 VALUES FROM (4, 4) TO (MAXVALUE))
----
CREATE TABLE a (b INT8) PARTITION ALL BY RANGE (b) (PARTITION p1 VALUES FROM (minvalue) TO (1), PARTITION p2 VALUES FROM (2, maxvalue) TO (4, 4), PARTITION p3 VALUES FROM (4, 4) TO (maxvalue)) -- normalized!
CREATE TABLE a (b INT8) PARTITION ALL BY RANGE (b) (PARTITION p1 VALUES FROM ((minvalue)) TO ((1)), PARTITION p2 VALUES FROM ((2), (maxvalue)) TO ((4), (4)), PARTITION p3 VALUES FROM ((4), (4)) TO ((maxvalue))) -- fully parenthesized
CREATE TABLE a (b INT8) PARTITION ALL BY RANGE (b) (PARTITION p1 VALUES FROM (minvalue) TO (_), PARTITION p2 VALUES FROM (_, maxvalue) TO (_, _), PARTITION p3 VALUES FROM (_, _) TO (maxvalue)) -- literals removed
CREATE TABLE _ (_ INT8) PARTITION ALL BY RANGE (_) (PARTITION _ VALUES FROM (_) TO (1), PARTITION _ VALUES FROM (2, _) TO (4, 4), PARTITION _ VALUES FROM (4, 4) TO (_)) -- identifiers removed

parse
CREATE TABLE IF NOT EXISTS a () PARTITION BY LIST (b) (PARTITION c VALUES IN (1))
----
CREATE TABLE IF NOT EXISTS a () PARTITION BY LIST (b) (PARTITION c VALUES IN (1))
CREATE TABLE IF NOT EXISTS a () PARTITION BY LIST (b) (PARTITION c VALUES IN ((1))) -- fully parenthesized
CREATE TABLE IF NOT EXISTS a () PARTITION BY LIST (b) (PARTITION c VALUES IN (_)) -- literals removed
CREATE TABLE IF NOT EXISTS _ () PARTITION BY LIST (_) (PARTITION _ VALUES IN (1)) -- identifiers removed

parse
CREATE TABLE a (INDEX (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1)))
----
CREATE TABLE a (INDEX (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1)))
CREATE TABLE a (INDEX (b) PARTITION BY LIST (c) (PARTITION d VALUES IN ((1)))) -- fully parenthesized
CREATE TABLE a (INDEX (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (_))) -- literals removed
CREATE TABLE _ (INDEX (_) PARTITION BY LIST (_) (PARTITION _ VALUES IN (1))) -- identifiers removed

parse
CREATE TABLE a (INVERTED INDEX (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1)))
----
CREATE TABLE a (INVERTED INDEX (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1)))
CREATE TABLE a (INVERTED INDEX (b) PARTITION BY LIST (c) (PARTITION d VALUES IN ((1)))) -- fully parenthesized
CREATE TABLE a (INVERTED INDEX (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (_))) -- literals removed
CREATE TABLE _ (INVERTED INDEX (_) PARTITION BY LIST (_) (PARTITION _ VALUES IN (1))) -- identifiers removed

parse
CREATE TABLE a (VECTOR INDEX (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1)))
----
CREATE TABLE a (VECTOR INDEX (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1)))
CREATE TABLE a (VECTOR INDEX (b) PARTITION BY LIST (c) (PARTITION d VALUES IN ((1)))) -- fully parenthesized
CREATE TABLE a (VECTOR INDEX (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (_))) -- literals removed
CREATE TABLE _ (VECTOR INDEX (_) PARTITION BY LIST (_) (PARTITION _ VALUES IN (1))) -- identifiers removed

parse
CREATE TABLE a (UNIQUE (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1)))
----
CREATE TABLE a (UNIQUE (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1)))
CREATE TABLE a (UNIQUE (b) PARTITION BY LIST (c) (PARTITION d VALUES IN ((1)))) -- fully parenthesized
CREATE TABLE a (UNIQUE (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (_))) -- literals removed
CREATE TABLE _ (UNIQUE (_) PARTITION BY LIST (_) (PARTITION _ VALUES IN (1))) -- identifiers removed

parse
CREATE INDEX ON a (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1))
----
CREATE INDEX ON a (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1))
CREATE INDEX ON a (b) PARTITION BY LIST (c) (PARTITION d VALUES IN ((1))) -- fully parenthesized
CREATE INDEX ON a (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (_)) -- literals removed
CREATE INDEX ON _ (_) PARTITION BY LIST (_) (PARTITION _ VALUES IN (1)) -- identifiers removed

parse
CREATE INVERTED INDEX ON a (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1))
----
CREATE INVERTED INDEX ON a (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1))
CREATE INVERTED INDEX ON a (b) PARTITION BY LIST (c) (PARTITION d VALUES IN ((1))) -- fully parenthesized
CREATE INVERTED INDEX ON a (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (_)) -- literals removed
CREATE INVERTED INDEX ON _ (_) PARTITION BY LIST (_) (PARTITION _ VALUES IN (1)) -- identifiers removed

parse
CREATE VECTOR INDEX ON a (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1))
----
CREATE VECTOR INDEX ON a (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1))
CREATE VECTOR INDEX ON a (b) PARTITION BY LIST (c) (PARTITION d VALUES IN ((1))) -- fully parenthesized
CREATE VECTOR INDEX ON a (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (_)) -- literals removed
CREATE VECTOR INDEX ON _ (_) PARTITION BY LIST (_) (PARTITION _ VALUES IN (1)) -- identifiers removed

parse
CREATE INDEX IF NOT EXISTS a ON b (c) PARTITION BY LIST (d) (PARTITION e VALUES IN (1))
----
CREATE INDEX IF NOT EXISTS a ON b (c) PARTITION BY LIST (d) (PARTITION e VALUES IN (1))
CREATE INDEX IF NOT EXISTS a ON b (c) PARTITION BY LIST (d) (PARTITION e VALUES IN ((1))) -- fully parenthesized
CREATE INDEX IF NOT EXISTS a ON b (c) PARTITION BY LIST (d) (PARTITION e VALUES IN (_)) -- literals removed
CREATE INDEX IF NOT EXISTS _ ON _ (_) PARTITION BY LIST (_) (PARTITION _ VALUES IN (1)) -- identifiers removed

parse
ALTER TABLE a PARTITION BY LIST (b) (PARTITION p1 VALUES IN (1))
----
ALTER TABLE a PARTITION BY LIST (b) (PARTITION p1 VALUES IN (1))
ALTER TABLE a PARTITION BY LIST (b) (PARTITION p1 VALUES IN ((1))) -- fully parenthesized
ALTER TABLE a PARTITION BY LIST (b) (PARTITION p1 VALUES IN (_)) -- literals removed
ALTER TABLE _ PARTITION BY LIST (_) (PARTITION _ VALUES IN (1)) -- identifiers removed

parse
ALTER TABLE a PARTITION ALL BY LIST (b) (PARTITION p1 VALUES IN (1))
----
ALTER TABLE a PARTITION ALL BY LIST (b) (PARTITION p1 VALUES IN (1))
ALTER TABLE a PARTITION ALL BY LIST (b) (PARTITION p1 VALUES IN ((1))) -- fully parenthesized
ALTER TABLE a PARTITION ALL BY LIST (b) (PARTITION p1 VALUES IN (_)) -- literals removed
ALTER TABLE _ PARTITION ALL BY LIST (_) (PARTITION _ VALUES IN (1)) -- identifiers removed

parse
ALTER INDEX a@idx PARTITION BY LIST (b) (PARTITION p1 VALUES IN (1))
----
ALTER INDEX a@idx PARTITION BY LIST (b) (PARTITION p1 VALUES IN (1))
ALTER INDEX a@idx PARTITION BY LIST (b) (PARTITION p1 VALUES IN ((1))) -- fully parenthesized
ALTER INDEX a@idx PARTITION BY LIST (b) (PARTITION p1 VALUES IN (_)) -- literals removed
ALTER INDEX _@_ PARTITION BY LIST (_) (PARTITION _ VALUES IN (1)) -- identifiers removed

parse
CREATE TABLE a AS SELECT * FROM b
----
CREATE TABLE a AS SELECT * FROM b
CREATE TABLE a AS SELECT (*) FROM b -- fully parenthesized
CREATE TABLE a AS SELECT * FROM b -- literals removed
CREATE TABLE _ AS SELECT * FROM _ -- identifiers removed

parse
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b
----
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b
CREATE TABLE IF NOT EXISTS a AS SELECT (*) FROM b -- fully parenthesized
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b -- literals removed
CREATE TABLE IF NOT EXISTS _ AS SELECT * FROM _ -- identifiers removed

parse
CREATE TABLE a AS SELECT * FROM b ORDER BY c
----
CREATE TABLE a AS SELECT * FROM b ORDER BY c
CREATE TABLE a AS SELECT (*) FROM b ORDER BY (c) -- fully parenthesized
CREATE TABLE a AS SELECT * FROM b ORDER BY c -- literals removed
CREATE TABLE _ AS SELECT * FROM _ ORDER BY _ -- identifiers removed

parse
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b ORDER BY c
----
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b ORDER BY c
CREATE TABLE IF NOT EXISTS a AS SELECT (*) FROM b ORDER BY (c) -- fully parenthesized
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b ORDER BY c -- literals removed
CREATE TABLE IF NOT EXISTS _ AS SELECT * FROM _ ORDER BY _ -- identifiers removed

parse
CREATE TABLE a AS SELECT * FROM b LIMIT 3
----
CREATE TABLE a AS SELECT * FROM b LIMIT 3
CREATE TABLE a AS SELECT (*) FROM b LIMIT (3) -- fully parenthesized
CREATE TABLE a AS SELECT * FROM b LIMIT _ -- literals removed
CREATE TABLE _ AS SELECT * FROM _ LIMIT 3 -- identifiers removed

parse
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b LIMIT 3
----
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b LIMIT 3
CREATE TABLE IF NOT EXISTS a AS SELECT (*) FROM b LIMIT (3) -- fully parenthesized
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b LIMIT _ -- literals removed
CREATE TABLE IF NOT EXISTS _ AS SELECT * FROM _ LIMIT 3 -- identifiers removed

parse
CREATE TABLE a AS VALUES ('one', 1), ('two', 2), ('three', 3)
----
CREATE TABLE a AS VALUES ('one', 1), ('two', 2), ('three', 3)
CREATE TABLE a AS VALUES (('one'), (1)), (('two'), (2)), (('three'), (3)) -- fully parenthesized
CREATE TABLE a AS VALUES ('_', _), (__more1_10__) -- literals removed
CREATE TABLE _ AS VALUES ('one', 1), ('two', 2), ('three', 3) -- identifiers removed

parse
CREATE TABLE IF NOT EXISTS a AS VALUES ('one', 1), ('two', 2), ('three', 3)
----
CREATE TABLE IF NOT EXISTS a AS VALUES ('one', 1), ('two', 2), ('three', 3)
CREATE TABLE IF NOT EXISTS a AS VALUES (('one'), (1)), (('two'), (2)), (('three'), (3)) -- fully parenthesized
CREATE TABLE IF NOT EXISTS a AS VALUES ('_', _), (__more1_10__) -- literals removed
CREATE TABLE IF NOT EXISTS _ AS VALUES ('one', 1), ('two', 2), ('three', 3) -- identifiers removed

parse
CREATE TABLE a (str, num) AS VALUES ('one', 1), ('two', 2), ('three', 3)
----
CREATE TABLE a (str, num) AS VALUES ('one', 1), ('two', 2), ('three', 3)
CREATE TABLE a (str, num) AS VALUES (('one'), (1)), (('two'), (2)), (('three'), (3)) -- fully parenthesized
CREATE TABLE a (str, num) AS VALUES ('_', _), (__more1_10__) -- literals removed
CREATE TABLE _ (_, _) AS VALUES ('one', 1), ('two', 2), ('three', 3) -- identifiers removed

parse
CREATE TABLE IF NOT EXISTS a (str, num) AS VALUES ('one', 1), ('two', 2), ('three', 3)
----
CREATE TABLE IF NOT EXISTS a (str, num) AS VALUES ('one', 1), ('two', 2), ('three', 3)
CREATE TABLE IF NOT EXISTS a (str, num) AS VALUES (('one'), (1)), (('two'), (2)), (('three'), (3)) -- fully parenthesized
CREATE TABLE IF NOT EXISTS a (str, num) AS VALUES ('_', _), (__more1_10__) -- literals removed
CREATE TABLE IF NOT EXISTS _ (_, _) AS VALUES ('one', 1), ('two', 2), ('three', 3) -- identifiers removed

parse
CREATE TABLE a AS SELECT * FROM b UNION SELECT * FROM c
----
CREATE TABLE a AS SELECT * FROM b UNION SELECT * FROM c
CREATE TABLE a AS SELECT (*) FROM b UNION SELECT (*) FROM c -- fully parenthesized
CREATE TABLE a AS SELECT * FROM b UNION SELECT * FROM c -- literals removed
CREATE TABLE _ AS SELECT * FROM _ UNION SELECT * FROM _ -- identifiers removed

parse
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b UNION SELECT * FROM c
----
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b UNION SELECT * FROM c
CREATE TABLE IF NOT EXISTS a AS SELECT (*) FROM b UNION SELECT (*) FROM c -- fully parenthesized
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b UNION SELECT * FROM c -- literals removed
CREATE TABLE IF NOT EXISTS _ AS SELECT * FROM _ UNION SELECT * FROM _ -- identifiers removed

parse
CREATE TABLE a AS SELECT * FROM b UNION VALUES ('one', 1) ORDER BY c LIMIT 5
----
CREATE TABLE a AS SELECT * FROM b UNION VALUES ('one', 1) ORDER BY c LIMIT 5
CREATE TABLE a AS SELECT (*) FROM b UNION VALUES (('one'), (1)) ORDER BY (c) LIMIT (5) -- fully parenthesized
CREATE TABLE a AS SELECT * FROM b UNION VALUES ('_', _) ORDER BY c LIMIT _ -- literals removed
CREATE TABLE _ AS SELECT * FROM _ UNION VALUES ('one', 1) ORDER BY _ LIMIT 5 -- identifiers removed

parse
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b UNION VALUES ('one', 1) ORDER BY c LIMIT 5
----
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b UNION VALUES ('one', 1) ORDER BY c LIMIT 5
CREATE TABLE IF NOT EXISTS a AS SELECT (*) FROM b UNION VALUES (('one'), (1)) ORDER BY (c) LIMIT (5) -- fully parenthesized
CREATE TABLE IF NOT EXISTS a AS SELECT * FROM b UNION VALUES ('_', _) ORDER BY c LIMIT _ -- literals removed
CREATE TABLE IF NOT EXISTS _ AS SELECT * FROM _ UNION VALUES ('one', 1) ORDER BY _ LIMIT 5 -- identifiers removed

parse
CREATE TABLE a (z PRIMARY KEY) AS SELECT * FROM b
----
CREATE TABLE a (z PRIMARY KEY) AS SELECT * FROM b
CREATE TABLE a (z PRIMARY KEY) AS SELECT (*) FROM b -- fully parenthesized
CREATE TABLE a (z PRIMARY KEY) AS SELECT * FROM b -- literals removed
CREATE TABLE _ (_ PRIMARY KEY) AS SELECT * FROM _ -- identifiers removed

parse
CREATE TABLE IF NOT EXISTS a (z PRIMARY KEY) AS SELECT * FROM b
----
CREATE TABLE IF NOT EXISTS a (z PRIMARY KEY) AS SELECT * FROM b
CREATE TABLE IF NOT EXISTS a (z PRIMARY KEY) AS SELECT (*) FROM b -- fully parenthesized
CREATE TABLE IF NOT EXISTS a (z PRIMARY KEY) AS SELECT * FROM b -- literals removed
CREATE TABLE IF NOT EXISTS _ (_ PRIMARY KEY) AS SELECT * FROM _ -- identifiers removed

parse
CREATE TABLE a (x, y, z, PRIMARY KEY (x, y, z)) AS SELECT * FROM b
----
CREATE TABLE a (x, y, z, PRIMARY KEY (x, y, z)) AS SELECT * FROM b
CREATE TABLE a (x, y, z, PRIMARY KEY (x, y, z)) AS SELECT (*) FROM b -- fully parenthesized
CREATE TABLE a (x, y, z, PRIMARY KEY (x, y, z)) AS SELECT * FROM b -- literals removed
CREATE TABLE _ (_, _, _, PRIMARY KEY (_, _, _)) AS SELECT * FROM _ -- identifiers removed

parse
CREATE TABLE IF NOT EXISTS a (x, y, z, PRIMARY KEY (x, y, z)) AS SELECT * FROM b
----
CREATE TABLE IF NOT EXISTS a (x, y, z, PRIMARY KEY (x, y, z)) AS SELECT * FROM b
CREATE TABLE IF NOT EXISTS a (x, y, z, PRIMARY KEY (x, y, z)) AS SELECT (*) FROM b -- fully parenthesized
CREATE TABLE IF NOT EXISTS a (x, y, z, PRIMARY KEY (x, y, z)) AS SELECT * FROM b -- literals removed
CREATE TABLE IF NOT EXISTS _ (_, _, _, PRIMARY KEY (_, _, _)) AS SELECT * FROM _ -- identifiers removed

parse
CREATE TABLE a (x, FAMILY (x)) AS SELECT * FROM b
----
CREATE TABLE a (x, FAMILY (x)) AS SELECT * FROM b
CREATE TABLE a (x, FAMILY (x)) AS SELECT (*) FROM b -- fully parenthesized
CREATE TABLE a (x, FAMILY (x)) AS SELECT * FROM b -- literals removed
CREATE TABLE _ (_, FAMILY (_)) AS SELECT * FROM _ -- identifiers removed

parse
CREATE TABLE IF NOT EXISTS a (x, FAMILY (x)) AS SELECT * FROM b
----
CREATE TABLE IF NOT EXISTS a (x, FAMILY (x)) AS SELECT * FROM b
CREATE TABLE IF NOT EXISTS a (x, FAMILY (x)) AS SELECT (*) FROM b -- fully parenthesized
CREATE TABLE IF NOT EXISTS a (x, FAMILY (x)) AS SELECT * FROM b -- literals removed
CREATE TABLE IF NOT EXISTS _ (_, FAMILY (_)) AS SELECT * FROM _ -- identifiers removed

parse
CREATE TABLE a (x, y FAMILY f1) AS SELECT * FROM b
----
CREATE TABLE a (x, y FAMILY f1) AS SELECT * FROM b
CREATE TABLE a (x, y FAMILY f1) AS SELECT (*) FROM b -- fully parenthesized
CREATE TABLE a (x, y FAMILY f1) AS SELECT * FROM b -- literals removed
CREATE TABLE _ (_, _ FAMILY _) AS SELECT * FROM _ -- identifiers removed

parse
CREATE TABLE IF NOT EXISTS a (x, y FAMILY f1) AS SELECT * FROM b
----
CREATE TABLE IF NOT EXISTS a (x, y FAMILY f1) AS SELECT * FROM b
CREATE TABLE IF NOT EXISTS a (x, y FAMILY f1) AS SELECT (*) FROM b -- fully parenthesized
CREATE TABLE IF NOT EXISTS a (x, y FAMILY f1) AS SELECT * FROM b -- literals removed
CREATE TABLE IF NOT EXISTS _ (_, _ FAMILY _) AS SELECT * FROM _ -- identifiers removed

parse
CREATE TABLE a WITH (fillfactor=100) AS SELECT * FROM b
----
CREATE TABLE a WITH ('fillfactor' = 100) AS SELECT * FROM b -- normalized!
CREATE TABLE a WITH ('fillfactor' = (100)) AS SELECT (*) FROM b -- fully parenthesized
CREATE TABLE a WITH ('fillfactor' = _) AS SELECT * FROM b -- literals removed
CREATE TABLE _ WITH ('fillfactor' = 100) AS SELECT * FROM _ -- identifiers removed

parse
CREATE TABLE tbl (a INT) WITH ( 'string' = 'val' )
----
CREATE TABLE tbl (a INT8) WITH ('string' = 'val') -- normalized!
CREATE TABLE tbl (a INT8) WITH ('string' = ('val')) -- fully parenthesized
CREATE TABLE tbl (a INT8) WITH ('string' = '_') -- literals removed
CREATE TABLE _ (_ INT8) WITH ('string' = 'val') -- identifiers removed

error
CREATE TABLE test (
  foo INT8 FAMILY a FAMILY b
)
----
at or near ")": syntax error: multiple column families specified for column "foo"
DETAIL: source SQL:
CREATE TABLE test (
  foo INT8 FAMILY a FAMILY b
)
^

parse
CREATE TABLE a (b STRING COLLATE de)
----
CREATE TABLE a (b STRING COLLATE de)
CREATE TABLE a (b STRING COLLATE de) -- fully parenthesized
CREATE TABLE a (b STRING COLLATE de) -- literals removed
CREATE TABLE _ (_ STRING COLLATE de) -- identifiers removed

parse
CREATE TABLE a (b STRING COLLATE "en-us")
----
CREATE TABLE a (b STRING COLLATE en_US) -- normalized!
CREATE TABLE a (b STRING COLLATE en_US) -- fully parenthesized
CREATE TABLE a (b STRING COLLATE en_US) -- literals removed
CREATE TABLE _ (_ STRING COLLATE en_US) -- identifiers removed

parse
CREATE TABLE a (b STRING COLLATE en_us)
----
CREATE TABLE a (b STRING COLLATE en_US) -- normalized!
CREATE TABLE a (b STRING COLLATE en_US) -- fully parenthesized
CREATE TABLE a (b STRING COLLATE en_US) -- literals removed
CREATE TABLE _ (_ STRING COLLATE en_US) -- identifiers removed

parse
CREATE TABLE a (b STRING(3) COLLATE de)
----
CREATE TABLE a (b STRING(3) COLLATE de)
CREATE TABLE a (b STRING(3) COLLATE de) -- fully parenthesized
CREATE TABLE a (b STRING(3) COLLATE de) -- literals removed
CREATE TABLE _ (_ STRING(3) COLLATE de) -- identifiers removed

parse
CREATE TABLE a (b STRING[] COLLATE de)
----
CREATE TABLE a (b STRING[] COLLATE de)
CREATE TABLE a (b STRING[] COLLATE de) -- fully parenthesized
CREATE TABLE a (b STRING[] COLLATE de) -- literals removed
CREATE TABLE _ (_ STRING[] COLLATE de) -- identifiers removed

parse
CREATE TABLE a (b STRING(3)[] COLLATE en_US)
----
CREATE TABLE a (b STRING(3)[] COLLATE en_US)
CREATE TABLE a (b STRING(3)[] COLLATE en_US) -- fully parenthesized
CREATE TABLE a (b STRING(3)[] COLLATE en_US) -- literals removed
CREATE TABLE _ (_ STRING(3)[] COLLATE en_US) -- identifiers removed

parse
CREATE TABLE a (LIKE b)
----
CREATE TABLE a (LIKE b)
CREATE TABLE a (LIKE b) -- fully parenthesized
CREATE TABLE a (LIKE b) -- literals removed
CREATE TABLE _ (LIKE _) -- identifiers removed

parse
CREATE TABLE a (LIKE b, c INT8)
----
CREATE TABLE a (LIKE b, c INT8)
CREATE TABLE a (LIKE b, c INT8) -- fully parenthesized
CREATE TABLE a (LIKE b, c INT8) -- literals removed
CREATE TABLE _ (LIKE _, _ INT8) -- identifiers removed

parse
CREATE TABLE a (LIKE b EXCLUDING INDEXES INCLUDING INDEXES)
----
CREATE TABLE a (LIKE b EXCLUDING INDEXES INCLUDING INDEXES)
CREATE TABLE a (LIKE b EXCLUDING INDEXES INCLUDING INDEXES) -- fully parenthesized
CREATE TABLE a (LIKE b EXCLUDING INDEXES INCLUDING INDEXES) -- literals removed
CREATE TABLE _ (LIKE _ EXCLUDING INDEXES INCLUDING INDEXES) -- identifiers removed

parse
CREATE TABLE a (LIKE b INCLUDING ALL EXCLUDING INDEXES, c INT8)
----
CREATE TABLE a (LIKE b INCLUDING ALL EXCLUDING INDEXES, c INT8)
CREATE TABLE a (LIKE b INCLUDING ALL EXCLUDING INDEXES, c INT8) -- fully parenthesized
CREATE TABLE a (LIKE b INCLUDING ALL EXCLUDING INDEXES, c INT8) -- literals removed
CREATE TABLE _ (LIKE _ INCLUDING ALL EXCLUDING INDEXES, _ INT8) -- identifiers removed

parse
CREATE TABLE a (a INT4) LOCALITY GLOBAL
----
CREATE TABLE a (a INT4) LOCALITY GLOBAL
CREATE TABLE a (a INT4) LOCALITY GLOBAL -- fully parenthesized
CREATE TABLE a (a INT4) LOCALITY GLOBAL -- literals removed
CREATE TABLE _ (_ INT4) LOCALITY GLOBAL -- identifiers removed

parse
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY TABLE IN "us-west1"
----
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY TABLE IN "us-west1"
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY TABLE IN "us-west1" -- fully parenthesized
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY TABLE IN "us-west1" -- literals removed
CREATE TABLE _ (_ INT4) LOCALITY REGIONAL BY TABLE IN _ -- identifiers removed

parse
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY TABLE IN PRIMARY REGION
----
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY TABLE IN PRIMARY REGION
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY TABLE IN PRIMARY REGION -- fully parenthesized
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY TABLE IN PRIMARY REGION -- literals removed
CREATE TABLE _ (_ INT4) LOCALITY REGIONAL BY TABLE IN PRIMARY REGION -- identifiers removed


parse
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY TABLE
----
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY TABLE IN PRIMARY REGION -- normalized!
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY TABLE IN PRIMARY REGION -- fully parenthesized
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY TABLE IN PRIMARY REGION -- literals removed
CREATE TABLE _ (_ INT4) LOCALITY REGIONAL BY TABLE IN PRIMARY REGION -- identifiers removed


parse
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY ROW
----
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY ROW
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY ROW -- fully parenthesized
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY ROW -- literals removed
CREATE TABLE _ (_ INT4) LOCALITY REGIONAL BY ROW -- identifiers removed

parse
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY ROW AS bobby
----
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY ROW AS bobby
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY ROW AS bobby -- fully parenthesized
CREATE TABLE a (a INT4) LOCALITY REGIONAL BY ROW AS bobby -- literals removed
CREATE TABLE _ (_ INT4) LOCALITY REGIONAL BY ROW AS _ -- identifiers removed

parse
CREATE TABLE a (b INT) WITH (fillfactor=100)
----
CREATE TABLE a (b INT8) WITH ('fillfactor' = 100) -- normalized!
CREATE TABLE a (b INT8) WITH ('fillfactor' = (100)) -- fully parenthesized
CREATE TABLE a (b INT8) WITH ('fillfactor' = _) -- literals removed
CREATE TABLE _ (_ INT8) WITH ('fillfactor' = 100) -- identifiers removed

parse
CREATE TABLE arr_t (i STRING DEFAULT (('{' || 'a' || '}')::STRING[])[1]::STRING)
----
CREATE TABLE arr_t (i STRING DEFAULT ((('{' || 'a') || '}')::STRING[])[1]::STRING) -- normalized!
CREATE TABLE arr_t (i STRING DEFAULT ((((((((((('{') || ('a'))) || ('}'))))::STRING[])))[(1)])::STRING)) -- fully parenthesized
CREATE TABLE arr_t (i STRING DEFAULT ((('_' || '_') || '_')::STRING[])[_]::STRING) -- literals removed
CREATE TABLE _ (_ STRING DEFAULT ((('{' || 'a') || '}')::STRING[])[1]::STRING) -- identifiers removed

parse
CREATE TABLE arr_t (i INT8 DEFAULT (('{' || '1' || '}')::INT8[])[1])
----
CREATE TABLE arr_t (i INT8 DEFAULT ((('{' || '1') || '}')::INT8[])[1]) -- normalized!
CREATE TABLE arr_t (i INT8 DEFAULT (((((((((('{') || ('1'))) || ('}'))))::INT8[])))[(1)])) -- fully parenthesized
CREATE TABLE arr_t (i INT8 DEFAULT ((('_' || '_') || '_')::INT8[])[_]) -- literals removed
CREATE TABLE _ (_ INT8 DEFAULT ((('{' || '1') || '}')::INT8[])[1]) -- identifiers removed

parse
CREATE TABLE arr_t (i INT8 DEFAULT (ARRAY[1, 2, 3]::int[])[2])
----
CREATE TABLE arr_t (i INT8 DEFAULT (ARRAY[1, 2, 3]::INT8[])[2]) -- normalized!
CREATE TABLE arr_t (i INT8 DEFAULT (((((ARRAY[(1), (2), (3)])::INT8[])))[(2)])) -- fully parenthesized
CREATE TABLE arr_t (i INT8 DEFAULT (ARRAY[_, _, __more1_10__]::INT8[])[_]) -- literals removed
CREATE TABLE _ (_ INT8 DEFAULT (ARRAY[1, 2, 3]::INT8[])[2]) -- identifiers removed

parse
CREATE TABLE operator_tbl (
  a INT DEFAULT 1 OPERATOR(+) 2,
  b INT DEFAULT 1 OPERATOR(pg_catalog.+) 2
)
----
CREATE TABLE operator_tbl (a INT8 DEFAULT 1 OPERATOR(+) 2, b INT8 DEFAULT 1 OPERATOR(+) 2) -- normalized!
CREATE TABLE operator_tbl (a INT8 DEFAULT ((1) OPERATOR(+) (2)), b INT8 DEFAULT ((1) OPERATOR(+) (2))) -- fully parenthesized
CREATE TABLE operator_tbl (a INT8 DEFAULT _ OPERATOR(+) _, b INT8 DEFAULT _ OPERATOR(+) _) -- literals removed
CREATE TABLE _ (_ INT8 DEFAULT 1 OPERATOR(+) 2, _ INT8 DEFAULT 1 OPERATOR(+) 2) -- identifiers removed

parse
CREATE TABLE generated_always_as_identity_tb (
  a INT UNIQUE,
  b INT GENERATED ALWAYS AS IDENTITY,
  c INT GENERATED BY DEFAULT AS IDENTITY
)
----
CREATE TABLE generated_always_as_identity_tb (a INT8 UNIQUE, b INT8 NOT NULL GENERATED ALWAYS AS IDENTITY, c INT8 NOT NULL GENERATED BY DEFAULT AS IDENTITY) -- normalized!
CREATE TABLE generated_always_as_identity_tb (a INT8 UNIQUE, b INT8 NOT NULL GENERATED ALWAYS AS IDENTITY, c INT8 NOT NULL GENERATED BY DEFAULT AS IDENTITY) -- fully parenthesized
CREATE TABLE generated_always_as_identity_tb (a INT8 UNIQUE, b INT8 NOT NULL GENERATED ALWAYS AS IDENTITY, c INT8 NOT NULL GENERATED BY DEFAULT AS IDENTITY) -- literals removed
CREATE TABLE _ (_ INT8 UNIQUE, _ INT8 NOT NULL GENERATED ALWAYS AS IDENTITY, _ INT8 NOT NULL GENERATED BY DEFAULT AS IDENTITY) -- identifiers removed

parse
CREATE TABLE generated_not_null (
  a INT,
  b INT NOT NULL GENERATED ALWAYS AS IDENTITY,
  c INT NOT NULL GENERATED BY DEFAULT AS IDENTITY
)
----
CREATE TABLE generated_not_null (a INT8, b INT8 NOT NULL GENERATED ALWAYS AS IDENTITY, c INT8 NOT NULL GENERATED BY DEFAULT AS IDENTITY) -- normalized!
CREATE TABLE generated_not_null (a INT8, b INT8 NOT NULL GENERATED ALWAYS AS IDENTITY, c INT8 NOT NULL GENERATED BY DEFAULT AS IDENTITY) -- fully parenthesized
CREATE TABLE generated_not_null (a INT8, b INT8 NOT NULL GENERATED ALWAYS AS IDENTITY, c INT8 NOT NULL GENERATED BY DEFAULT AS IDENTITY) -- literals removed
CREATE TABLE _ (_ INT8, _ INT8 NOT NULL GENERATED ALWAYS AS IDENTITY, _ INT8 NOT NULL GENERATED BY DEFAULT AS IDENTITY) -- identifiers removed

error
CREATE TABLE generated_error (
  a INT UNIQUE,
  b INT GENERATED BY DEFAULT AS IDENTITY GENERATED ALWAYS AS IDENTITY
)
----
at or near ")": syntax error: multiple identity specifications for column "b"
DETAIL: source SQL:
CREATE TABLE generated_error (
  a INT UNIQUE,
  b INT GENERATED BY DEFAULT AS IDENTITY GENERATED ALWAYS AS IDENTITY
)
^

error
CREATE TABLE generated_error (
  a INT UNIQUE,
  b INT NULL GENERATED BY DEFAULT AS IDENTITY
)
----
at or near ")": syntax error: conflicting NULL/NOT NULL declarations for column "b"
DETAIL: source SQL:
CREATE TABLE generated_error (
  a INT UNIQUE,
  b INT NULL GENERATED BY DEFAULT AS IDENTITY
)
^

error
CREATE TABLE generated_error (
  a INT UNIQUE,
  b INT GENERATED BY DEFAULT AS IDENTITY NULL
)
----
at or near ")": syntax error: conflicting NULL/NOT NULL declarations for column "b"
DETAIL: source SQL:
CREATE TABLE generated_error (
  a INT UNIQUE,
  b INT GENERATED BY DEFAULT AS IDENTITY NULL
)
^

error
CREATE TABLE generated_error (
  a INT,
  b INT AS (a + 10) STORED GENERATED ALWAYS AS IDENTITY
)
----
at or near ")": syntax error: both generated identity and computed expression specified for column "b"
DETAIL: source SQL:
CREATE TABLE generated_error (
  a INT,
  b INT AS (a + 10) STORED GENERATED ALWAYS AS IDENTITY
)
^

error
CREATE TABLE generated_error (
  a INT,
  b INT GENERATED ALWAYS AS (a + 10) STORED GENERATED ALWAYS AS IDENTITY
)
----
at or near ")": syntax error: both generated identity and computed expression specified for column "b"
DETAIL: source SQL:
CREATE TABLE generated_error (
  a INT,
  b INT GENERATED ALWAYS AS (a + 10) STORED GENERATED ALWAYS AS IDENTITY
)
^

error
CREATE TABLE generated_error (
  a INT,
  b INT GENERATED ALWAYS AS (a + 10) IDENTITY
)
----
at or near "identity": syntax error: use AS ( <expr> ) STORED or AS ( <expr> ) VIRTUAL
DETAIL: source SQL:
CREATE TABLE generated_error (
  a INT,
  b INT GENERATED ALWAYS AS (a + 10) IDENTITY
                                     ^

error
CREATE TABLE generated_error (
  a INT,
  b INT GENERATED BY DEFAULT AS IDENTITY DEFAULT 1
)
----
at or near ")": syntax error: multiple default values specified for column "b"
DETAIL: source SQL:
CREATE TABLE generated_error (
  a INT,
  b INT GENERATED BY DEFAULT AS IDENTITY DEFAULT 1
)
^

error
CREATE TABLE generated_error (
  a INT,
  b INT DEFAULT 1 GENERATED BY DEFAULT AS IDENTITY
)
----
at or near ")": syntax error: multiple default values specified for column "b"
DETAIL: source SQL:
CREATE TABLE generated_error (
  a INT,
  b INT DEFAULT 1 GENERATED BY DEFAULT AS IDENTITY
)
^

error
CREATE TABLE generated_error (
  a INT,
  b VARCHAR(12) GENERATED ALWAYS AS IDENTITY
)
----
at or near ")": syntax error: identity column type must be an INT
DETAIL: source SQL:
CREATE TABLE generated_error (
  a INT,
  b VARCHAR(12) GENERATED ALWAYS AS IDENTITY
)
^

error
CREATE TABLE generated_error (
  a INT,
  b VARCHAR(12) GENERATED BY DEFAULT AS IDENTITY
)
----
at or near ")": syntax error: identity column type must be an INT
DETAIL: source SQL:
CREATE TABLE generated_error (
  a INT,
  b VARCHAR(12) GENERATED BY DEFAULT AS IDENTITY
)
^

parse
CREATE TABLE visible (visible INT4)
----
CREATE TABLE visible (visible INT4)
CREATE TABLE visible (visible INT4) -- fully parenthesized
CREATE TABLE visible (visible INT4) -- literals removed
CREATE TABLE _ (_ INT4) -- identifiers removed

# The following test cases check parsing support for creating a not visible index.
parse
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c) NOT VISIBLE)
----
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c) NOT VISIBLE)
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c) NOT VISIBLE) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c) NOT VISIBLE) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, INDEX (_ ASC, _ DESC) STORING (_) NOT VISIBLE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c) INVISIBLE)
----
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c) NOT VISIBLE) -- normalized!
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c) NOT VISIBLE) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c) NOT VISIBLE) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, INDEX (_ ASC, _ DESC) STORING (_) NOT VISIBLE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, INVERTED INDEX (b ASC, c DESC) WHERE c > 3 NOT VISIBLE)
----
CREATE TABLE a (b INT8, c STRING, INVERTED INDEX (b ASC, c DESC) WHERE c > 3 NOT VISIBLE)
CREATE TABLE a (b INT8, c STRING, INVERTED INDEX (b ASC, c DESC) WHERE ((c) > (3)) NOT VISIBLE) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, INVERTED INDEX (b ASC, c DESC) WHERE c > _ NOT VISIBLE) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, INVERTED INDEX (_ ASC, _ DESC) WHERE _ > 3 NOT VISIBLE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, VECTOR INDEX (b ASC, c DESC) WHERE c > 3 NOT VISIBLE)
----
CREATE TABLE a (b INT8, c STRING, VECTOR INDEX (b ASC, c DESC) WHERE c > 3 NOT VISIBLE)
CREATE TABLE a (b INT8, c STRING, VECTOR INDEX (b ASC, c DESC) WHERE ((c) > (3)) NOT VISIBLE) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, VECTOR INDEX (b ASC, c DESC) WHERE c > _ NOT VISIBLE) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, VECTOR INDEX (_ ASC, _ DESC) WHERE _ > 3 NOT VISIBLE) -- identifiers removed

parse
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c) VISIBILITY 0.2)
----
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c) VISIBILITY 0.20) -- normalized!
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c) VISIBILITY 0.20) -- fully parenthesized
CREATE TABLE a (b INT8, c STRING, INDEX (b ASC, c DESC) STORING (c) VISIBILITY 0.20) -- literals removed
CREATE TABLE _ (_ INT8, _ STRING, INDEX (_ ASC, _ DESC) STORING (_) VISIBILITY 0.20) -- identifiers removed

parse
CREATE TABLE t (a INT, INDEX (a) VISIBILITY 7.379652426127388e-12)
----
CREATE TABLE t (a INT8, INDEX (a) VISIBILITY 0.00) -- normalized!
CREATE TABLE t (a INT8, INDEX (a) VISIBILITY 0.00) -- fully parenthesized
CREATE TABLE t (a INT8, INDEX (a) VISIBILITY 0.00) -- literals removed
CREATE TABLE _ (_ INT8, INDEX (_) VISIBILITY 0.00) -- identifiers removed

# Creating an invisible unique index inside a table definition is supported by
# the grammar rule, but the parser will throw an error for the following
# statement. This is because the parser is doing a round trip in
# `pkg/testutils/sqlutils/pretty.go`. In sql.y, creating an unique index in a
# CREATE TABLE statement returns a new structure tree.UniqueConstraintTableDef.
# However, creating a unique constraint with not visible index is not supported by
# the parser. When the parser does a round trip for the following statement, it
# formats it to a pretty statement using the unique constraint definition. But
# the parser does not support unique constraint with not visible index syntax. So
# it will fail while parsing the pretty statement. Since logictest also performs
# a roundtrip check in pkg/sql/logictest/logic.go, logictest would also fail.
# But the following statement would still work in a cluster.
# This is a known issue. See more details in
# https://github.com/cockroachdb/cockroach/pull/65825.
parse-no-verify
CREATE TABLE a (b INT, UNIQUE INDEX foo (b) WHERE c > 3 NOT VISIBLE)
----

# The following test case makes sure that creating an invisible primary index is
# not supported by the parser.
error
CREATE TABLE a (b INT8, c STRING, PRIMARY KEY (b, c, "0") NOT VISIBLE)
----
at or near "visible": syntax error
DETAIL: source SQL:
CREATE TABLE a (b INT8, c STRING, PRIMARY KEY (b, c, "0") NOT VISIBLE)
                                                              ^
HINT: try \h CREATE TABLE

# The following test cases make sure that creating any constraints with
# not visible index is not supported by the parser.
error
CREATE TABLE a (b INT8, c STRING, CONSTRAINT d UNIQUE (b, c) NOT VISIBLE)
----
at or near "visible": syntax error
DETAIL: source SQL:
CREATE TABLE a (b INT8, c STRING, CONSTRAINT d UNIQUE (b, c) NOT VISIBLE)
                                                                 ^
HINT: try \h CREATE TABLE

error
CREATE TABLE a (b INT8, c STRING, CONSTRAINT d UNIQUE WITHOUT INDEX (b, c) NOT VISIBLE)
----
at or near "visible": syntax error
DETAIL: source SQL:
CREATE TABLE a (b INT8, c STRING, CONSTRAINT d UNIQUE WITHOUT INDEX (b, c) NOT VISIBLE)
                                                                               ^
HINT: try \h CREATE TABLE

# NOT VISIBLE here applies to the column, not the primary index, so it is
# allowed.
parse
CREATE TABLE a (b INT8 PRIMARY KEY NOT VISIBLE)
----
CREATE TABLE a (b INT8 NOT VISIBLE PRIMARY KEY) -- normalized!
CREATE TABLE a (b INT8 NOT VISIBLE PRIMARY KEY) -- fully parenthesized
CREATE TABLE a (b INT8 NOT VISIBLE PRIMARY KEY) -- literals removed
CREATE TABLE _ (_ INT8 NOT VISIBLE PRIMARY KEY) -- identifiers removed

# Regression test for #95238
parse
ALTER TABLE a PARTITION ALL BY LIST ("a b", "c.d") (PARTITION "e.f" VALUES IN (1))
----
ALTER TABLE a PARTITION ALL BY LIST ("a b", "c.d") (PARTITION "e.f" VALUES IN (1))
ALTER TABLE a PARTITION ALL BY LIST ("a b", "c.d") (PARTITION "e.f" VALUES IN ((1))) -- fully parenthesized
ALTER TABLE a PARTITION ALL BY LIST ("a b", "c.d") (PARTITION "e.f" VALUES IN (_)) -- literals removed
ALTER TABLE _ PARTITION ALL BY LIST (_, _) (PARTITION _ VALUES IN (1)) -- identifiers removed

parse
CREATE TABLE a (a VECTOR(3))
----
CREATE TABLE a (a VECTOR(3))
CREATE TABLE a (a VECTOR(3)) -- fully parenthesized
CREATE TABLE a (a VECTOR(3)) -- literals removed
CREATE TABLE _ (_ VECTOR(3)) -- identifiers removed

parse
CREATE TABLE a (a VECTOR)
----
CREATE TABLE a (a VECTOR)
CREATE TABLE a (a VECTOR) -- fully parenthesized
CREATE TABLE a (a VECTOR) -- literals removed
CREATE TABLE _ (_ VECTOR) -- identifiers removed
