MCPcopy Create free account
hub / github.com/auxten/postgresql-parser / TestParse2

Function TestParse2

pkg/sql/parser/parse_test.go:1438–2306  ·  view source on GitHub ↗

TestParse2 verifies that we can parse the supplied SQL and regenerate the expected SQL string from the syntax tree. Note that if the input and output SQL strings are the same, the test case should go in TestParse instead.

(t *testing.T)

Source from the content-addressed store, hash-verified

1436// expected SQL string from the syntax tree. Note that if the input and output
1437// SQL strings are the same, the test case should go in TestParse instead.
1438func TestParse2(t *testing.T) {
1439 testData := []struct {
1440 sql string
1441 expected string
1442 }{
1443 {`CREATE DATABASE a WITH ENCODING = 'foo'`,
1444 `CREATE DATABASE a ENCODING = 'foo'`},
1445 {`CREATE DATABASE a TEMPLATE = template0`,
1446 `CREATE DATABASE a TEMPLATE = 'template0'`},
1447 {`CREATE DATABASE a TEMPLATE = invalid`,
1448 `CREATE DATABASE a TEMPLATE = 'invalid'`},
1449 {`CREATE TABLE a (b INT) WITH (fillfactor=100)`,
1450 `CREATE TABLE a (b INT8)`},
1451 {`CREATE TABLE a (b INT, UNIQUE INDEX foo (b))`,
1452 `CREATE TABLE a (b INT8, CONSTRAINT foo UNIQUE (b))`},
1453 {`CREATE TABLE a (b INT, UNIQUE INDEX foo (b) INTERLEAVE IN PARENT c (d))`,
1454 `CREATE TABLE a (b INT8, CONSTRAINT foo UNIQUE (b) INTERLEAVE IN PARENT c (d))`},
1455 {`CREATE TABLE a (UNIQUE INDEX (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1)))`,
1456 `CREATE TABLE a (UNIQUE (b) PARTITION BY LIST (c) (PARTITION d VALUES IN (1)))`},
1457 {`CREATE INDEX ON a (b) COVERING (c)`, `CREATE INDEX ON a (b) STORING (c)`},
1458 {`CREATE INDEX ON a (b) INCLUDE (c)`, `CREATE INDEX ON a (b) STORING (c)`},
1459
1460 {`CREATE INDEX a ON b USING GIN (c)`,
1461 `CREATE INVERTED INDEX a ON b (c)`},
1462 {`CREATE UNIQUE INDEX a ON b USING GIN (c)`,
1463 `CREATE UNIQUE INVERTED INDEX a ON b (c)`},
1464
1465 {`CREATE TABLE a (b BIGSERIAL, c SMALLSERIAL, d SERIAL)`,
1466 `CREATE TABLE a (b SERIAL8, c SERIAL2, d SERIAL8)`},
1467 {`CREATE TABLE a (b BIGINT, c SMALLINT, d INTEGER, e INT)`,
1468 `CREATE TABLE a (b INT8, c INT2, d INT8, e INT8)`},
1469 {`CREATE TABLE a (b FLOAT, c FLOAT(10), d FLOAT(40), e REAL, f DOUBLE PRECISION)`,
1470 `CREATE TABLE a (b FLOAT8, c FLOAT4, d FLOAT8, e FLOAT4, f FLOAT8)`},
1471 {`CREATE TABLE a (b NUMERIC, c NUMERIC(10), d DEC)`,
1472 `CREATE TABLE a (b DECIMAL, c DECIMAL(10), d DECIMAL)`},
1473 {`CREATE TABLE a (b BOOLEAN)`,
1474 `CREATE TABLE a (b BOOL)`},
1475 {`CREATE TABLE a (b TEXT)`,
1476 `CREATE TABLE a (b STRING)`},
1477 {`CREATE TABLE a (b JSON)`,
1478 `CREATE TABLE a (b JSONB)`},
1479 {`CREATE TABLE a (b TIMESTAMP WITH TIME ZONE)`,
1480 `CREATE TABLE a (b TIMESTAMPTZ)`},
1481 {`CREATE TABLE a (b BYTES, c BYTEA, d BLOB)`,
1482 `CREATE TABLE a (b BYTES, c BYTES, d BYTES)`},
1483 {`CREATE TABLE a (b CHAR(1), c CHARACTER(1), d CHARACTER(3))`,
1484 `CREATE TABLE a (b CHAR, c CHAR, d CHAR(3))`},
1485 {`CREATE TABLE a (b CHAR VARYING, c CHARACTER VARYING(3))`,
1486 `CREATE TABLE a (b VARCHAR, c VARCHAR(3))`},
1487 {`CREATE TABLE a (b BIT VARYING(2), c BIT(1))`,
1488 `CREATE TABLE a (b VARBIT(2), c BIT)`},
1489
1490 {`CREATE STATISTICS a ON col1 FROM t AS OF SYSTEM TIME '2016-01-01'`,
1491 `CREATE STATISTICS a ON col1 FROM t WITH OPTIONS AS OF SYSTEM TIME '2016-01-01'`},
1492
1493 {`SELECT TIMESTAMP WITHOUT TIME ZONE 'foo'`, `SELECT TIMESTAMP 'foo'`},
1494 {`SELECT CAST('foo' AS TIMESTAMP WITHOUT TIME ZONE)`, `SELECT CAST('foo' AS TIMESTAMP)`},
1495 {`SELECT CAST(1 AS "timestamp")`, `SELECT CAST(1 AS TIMESTAMP)`},

Callers

nothing calls this directly

Calls 3

ParseFunction · 0.92
StringWithFlagsMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…