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)
| 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. |
| 1438 | func 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)`}, |
nothing calls this directly
no test coverage detected
searching dependent graphs…