TestParse verifies that we can parse the supplied SQL and regenerate the SQL string from the syntax tree.
(t *testing.T)
| 32 | // TestParse verifies that we can parse the supplied SQL and regenerate the SQL |
| 33 | // string from the syntax tree. |
| 34 | func TestParse(t *testing.T) { |
| 35 | testData := []struct { |
| 36 | sql string |
| 37 | }{ |
| 38 | {``}, |
| 39 | {`VALUES ("")`}, |
| 40 | |
| 41 | {`BEGIN TRANSACTION`}, |
| 42 | {`BEGIN TRANSACTION READ ONLY`}, |
| 43 | {`BEGIN TRANSACTION READ WRITE`}, |
| 44 | {`BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE`}, |
| 45 | {`BEGIN TRANSACTION PRIORITY LOW`}, |
| 46 | {`BEGIN TRANSACTION PRIORITY NORMAL`}, |
| 47 | {`BEGIN TRANSACTION PRIORITY HIGH`}, |
| 48 | {`BEGIN TRANSACTION AS OF SYSTEM TIME '2018-12-18'`}, |
| 49 | {`BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE, AS OF SYSTEM TIME '2018-12-18'`}, |
| 50 | {`BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE, PRIORITY LOW, AS OF SYSTEM TIME '2018-12-18'`}, |
| 51 | {`BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE, PRIORITY LOW, READ ONLY, AS OF SYSTEM TIME '-1ns'`}, |
| 52 | {`BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE, PRIORITY HIGH`}, |
| 53 | {`BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE, PRIORITY HIGH, READ WRITE`}, |
| 54 | {`COMMIT TRANSACTION`}, |
| 55 | {`ROLLBACK TRANSACTION`}, |
| 56 | {`SAVEPOINT foo`}, |
| 57 | {`SAVEPOINT "foo bar"`}, |
| 58 | |
| 59 | {`CREATE DATABASE a`}, |
| 60 | {`EXPLAIN CREATE DATABASE a`}, |
| 61 | {`CREATE DATABASE a TEMPLATE = 'template0'`}, |
| 62 | {`CREATE DATABASE a TEMPLATE = 'invalid'`}, |
| 63 | {`CREATE DATABASE a ENCODING = 'UTF8'`}, |
| 64 | {`CREATE DATABASE a ENCODING = 'INVALID'`}, |
| 65 | {`CREATE DATABASE a LC_COLLATE = 'C.UTF-8'`}, |
| 66 | {`CREATE DATABASE a LC_COLLATE = 'INVALID'`}, |
| 67 | {`CREATE DATABASE a LC_CTYPE = 'C.UTF-8'`}, |
| 68 | {`CREATE DATABASE a LC_CTYPE = 'INVALID'`}, |
| 69 | {`CREATE DATABASE a TEMPLATE = 'template0' ENCODING = 'UTF8' LC_COLLATE = 'C.UTF-8' LC_CTYPE = 'INVALID'`}, |
| 70 | {`CREATE DATABASE IF NOT EXISTS a`}, |
| 71 | {`CREATE DATABASE IF NOT EXISTS a TEMPLATE = 'template0'`}, |
| 72 | {`CREATE DATABASE IF NOT EXISTS a TEMPLATE = 'invalid'`}, |
| 73 | {`CREATE DATABASE IF NOT EXISTS a ENCODING = 'UTF8'`}, |
| 74 | {`CREATE DATABASE IF NOT EXISTS a ENCODING = 'INVALID'`}, |
| 75 | {`CREATE DATABASE IF NOT EXISTS a LC_COLLATE = 'C.UTF-8'`}, |
| 76 | {`CREATE DATABASE IF NOT EXISTS a LC_COLLATE = 'INVALID'`}, |
| 77 | {`CREATE DATABASE IF NOT EXISTS a LC_CTYPE = 'C.UTF-8'`}, |
| 78 | {`CREATE DATABASE IF NOT EXISTS a LC_CTYPE = 'INVALID'`}, |
| 79 | {`CREATE DATABASE IF NOT EXISTS a TEMPLATE = 'template0' ENCODING = 'UTF8' LC_COLLATE = 'C.UTF-8' LC_CTYPE = 'INVALID'`}, |
| 80 | {`CREATE SCHEMA IF NOT EXISTS foo`}, |
| 81 | {`CREATE SCHEMA foo`}, |
| 82 | |
| 83 | {`CREATE INDEX a ON b (c)`}, |
| 84 | {`CREATE INDEX CONCURRENTLY a ON b (c)`}, |
| 85 | {`EXPLAIN CREATE INDEX a ON b (c)`}, |
| 86 | {`CREATE INDEX a ON b.c (d)`}, |
| 87 | {`CREATE INDEX ON a (b)`}, |
| 88 | {`CREATE INDEX ON a (b) STORING (c)`}, |
| 89 | {`CREATE INDEX ON a (b) INTERLEAVE IN PARENT c (d)`}, |
| 90 | {`CREATE INDEX ON a (b) INTERLEAVE IN PARENT c.d (e)`}, |
| 91 | {`CREATE INDEX ON a (b ASC, c DESC)`}, |
nothing calls this directly
no test coverage detected
searching dependent graphs…