From 0c49a4de9d119f7036fe628e444452972fe20092 Mon Sep 17 00:00:00 2001 From: psteinroe Date: Thu, 30 Jan 2025 19:25:22 -0100 Subject: [PATCH 01/11] chor: upgrade pg query --- .gitmodules | 1 + Cargo.lock | 26 +++++++++++++++++++++---- crates/pg_lexer/Cargo.toml | 2 +- crates/pg_query_ext/Cargo.toml | 2 +- crates/pg_statement_splitter/Cargo.toml | 2 +- lib/tree_sitter_sql/tree-sitter-sql | 2 +- libpg_query | 2 +- 7 files changed, 28 insertions(+), 9 deletions(-) diff --git a/.gitmodules b/.gitmodules index a8ab9235..4b56d748 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,7 @@ [submodule "libpg_query"] path = libpg_query url = https://github.com/pganalyze/libpg_query.git + branch = 17-latest [submodule "crates/tree_sitter_sql/tree-sitter-sql"] path = lib/tree_sitter_sql/tree-sitter-sql url = https://github.com/DerekStride/tree-sitter-sql diff --git a/Cargo.lock b/Cargo.lock index e5272386..2cd9fa93 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2420,7 +2420,7 @@ dependencies = [ "cstree", "insta", "pg_lexer_codegen", - "pg_query", + "pg_query 6.0.0", "regex", "text-size", ] @@ -2511,6 +2511,24 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "pg_query" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b43f9990f5c9816195cb45b5fce403bd032ab1590d0df3525095ee267f0edc20" +dependencies = [ + "bindgen", + "cc", + "fs_extra", + "glob", + "itertools", + "prost", + "prost-build", + "serde", + "serde_json", + "thiserror 1.0.69", +] + [[package]] name = "pg_query_ext" version = "0.0.0" @@ -2518,7 +2536,7 @@ dependencies = [ "petgraph", "pg_diagnostics", "pg_lexer", - "pg_query", + "pg_query 6.0.0", "pg_query_ext_codegen", "text-size", ] @@ -2563,7 +2581,7 @@ version = "0.0.0" dependencies = [ "ntest", "pg_lexer", - "pg_query", + "pg_query 6.0.0", "text-size", ] @@ -2575,7 +2593,7 @@ dependencies = [ "insta", "petgraph", "pg_lexer", - "pg_query", + "pg_query 0.8.2", "pg_query_ext", "text-size", ] diff --git a/crates/pg_lexer/Cargo.toml b/crates/pg_lexer/Cargo.toml index 30d8b45b..e8643571 100644 --- a/crates/pg_lexer/Cargo.toml +++ b/crates/pg_lexer/Cargo.toml @@ -15,7 +15,7 @@ version = "0.0.0" regex = "1.9.1" pg_lexer_codegen.workspace = true -pg_query = "0.8" +pg_query = "6.0.0" cstree = { version = "0.12.0", features = ["derive"] } text-size.workspace = true diff --git a/crates/pg_query_ext/Cargo.toml b/crates/pg_query_ext/Cargo.toml index 4ef2ef87..40155460 100644 --- a/crates/pg_query_ext/Cargo.toml +++ b/crates/pg_query_ext/Cargo.toml @@ -13,7 +13,7 @@ version = "0.0.0" [dependencies] petgraph = "0.6.4" -pg_query = "0.8" +pg_query = "6.0.0" pg_diagnostics.workspace = true pg_lexer.workspace = true diff --git a/crates/pg_statement_splitter/Cargo.toml b/crates/pg_statement_splitter/Cargo.toml index 697ce8dc..820079fb 100644 --- a/crates/pg_statement_splitter/Cargo.toml +++ b/crates/pg_statement_splitter/Cargo.toml @@ -17,4 +17,4 @@ text-size.workspace = true [dev-dependencies] ntest = "0.9.3" -pg_query = "0.8" +pg_query = "6.0.0" diff --git a/lib/tree_sitter_sql/tree-sitter-sql b/lib/tree_sitter_sql/tree-sitter-sql index da2d1eff..b9d10958 160000 --- a/lib/tree_sitter_sql/tree-sitter-sql +++ b/lib/tree_sitter_sql/tree-sitter-sql @@ -1 +1 @@ -Subproject commit da2d1eff425b146d3c8cab7be8dfa98b11d896dc +Subproject commit b9d109588d5b5ed986c857464830c2f0bef53f18 diff --git a/libpg_query b/libpg_query index db39825b..27b2af94 160000 --- a/libpg_query +++ b/libpg_query @@ -1 +1 @@ -Subproject commit db39825bc7c1ddd45962ec6a626d740b7f8f027a +Subproject commit 27b2af9474003da843fb93bba59fe4297841291b From 61198be293380876063f3ae7739f5aeda1dfaa34 Mon Sep 17 00:00:00 2001 From: psteinroe Date: Thu, 30 Jan 2025 20:01:59 -0100 Subject: [PATCH 02/11] i cant be bothered --- crates/pg_syntax/tests/data/0033.sql | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 crates/pg_syntax/tests/data/0033.sql diff --git a/crates/pg_syntax/tests/data/0033.sql b/crates/pg_syntax/tests/data/0033.sql deleted file mode 100644 index 219c2e7b..00000000 --- a/crates/pg_syntax/tests/data/0033.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE TABLE measurement ( - city_id int not null, - logdate date not null, - peaktemp int, - unitsales int -) PARTITION BY RANGE (logdate); From b9b252088b6da6f190dcddd1b8ca32117e652dbf Mon Sep 17 00:00:00 2001 From: psteinroe Date: Thu, 30 Jan 2025 20:04:14 -0100 Subject: [PATCH 03/11] fix: bring back windows tests in ci --- .github/workflows/pull_request.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index b75489f7..e816e584 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -122,7 +122,7 @@ jobs: matrix: include: # reactive once we upgrade to the latest version of pg_query that is windows-compatible - # - os: windows-latest + - os: windows-latest - os: ubuntu-latest steps: - name: Checkout PR branch From 55f6851d14ed23352e978a5a6206ad37a1f0a479 Mon Sep 17 00:00:00 2001 From: psteinroe Date: Thu, 30 Jan 2025 20:22:21 -0100 Subject: [PATCH 04/11] fix: leftover dep update --- Cargo.lock | 24 ++++-------------------- crates/pg_syntax/Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2cd9fa93..96ce9806 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2420,7 +2420,7 @@ dependencies = [ "cstree", "insta", "pg_lexer_codegen", - "pg_query 6.0.0", + "pg_query", "regex", "text-size", ] @@ -2495,22 +2495,6 @@ dependencies = [ "quote", ] -[[package]] -name = "pg_query" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d62d572612b3aa26c454f27f2a3d94c19b7d10edcca957c1d23767a8f3fbccb6" -dependencies = [ - "bindgen", - "fs_extra", - "itertools", - "prost", - "prost-build", - "serde", - "serde_json", - "thiserror 1.0.69", -] - [[package]] name = "pg_query" version = "6.0.0" @@ -2536,7 +2520,7 @@ dependencies = [ "petgraph", "pg_diagnostics", "pg_lexer", - "pg_query 6.0.0", + "pg_query", "pg_query_ext_codegen", "text-size", ] @@ -2581,7 +2565,7 @@ version = "0.0.0" dependencies = [ "ntest", "pg_lexer", - "pg_query 6.0.0", + "pg_query", "text-size", ] @@ -2593,7 +2577,7 @@ dependencies = [ "insta", "petgraph", "pg_lexer", - "pg_query 0.8.2", + "pg_query", "pg_query_ext", "text-size", ] diff --git a/crates/pg_syntax/Cargo.toml b/crates/pg_syntax/Cargo.toml index 52cb7e1d..aaddc24c 100644 --- a/crates/pg_syntax/Cargo.toml +++ b/crates/pg_syntax/Cargo.toml @@ -22,4 +22,4 @@ pg_query_ext.workspace = true [dev-dependencies] insta = "1.31.0" -pg_query = "0.8" +pg_query = "6.0.0" From 2a1d566b7bc67afd19bd1f671a124e8efd950417 Mon Sep 17 00:00:00 2001 From: psteinroe Date: Thu, 30 Jan 2025 20:43:35 -0100 Subject: [PATCH 05/11] update lexer to support carriage returns for windoof --- crates/pg_lexer/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/pg_lexer/src/lib.rs b/crates/pg_lexer/src/lib.rs index 0bf933e9..85c390f6 100644 --- a/crates/pg_lexer/src/lib.rs +++ b/crates/pg_lexer/src/lib.rs @@ -60,7 +60,7 @@ pub static WHITESPACE_TOKENS: &[SyntaxKind] = &[ ]; static PATTERN_LEXER: LazyLock = - LazyLock::new(|| Regex::new(r"(?P +)|(?P\n+)|(?P\t+)").unwrap()); + LazyLock::new(|| Regex::new(r"(?P +)|(?P\r?\n+)|(?P\t+)").unwrap()); fn whitespace_tokens(input: &str) -> VecDeque { let mut tokens = VecDeque::new(); From 2c852a380aa0e5bcbba914a502d903d4956d0d68 Mon Sep 17 00:00:00 2001 From: psteinroe Date: Fri, 31 Jan 2025 09:25:00 -0100 Subject: [PATCH 06/11] chore: drop deprecated crates --- Cargo.lock | 67 --- Cargo.toml | 3 - crates/pg_hover/Cargo.toml | 27 -- crates/pg_hover/src/lib.rs | 57 --- crates/pg_hover/src/resolve.rs | 123 ----- crates/pg_inlay_hints/Cargo.toml | 32 -- crates/pg_inlay_hints/README.md | 1 - crates/pg_inlay_hints/src/functions_args.rs | 121 ----- crates/pg_inlay_hints/src/inlay_hint.rs | 27 -- crates/pg_inlay_hints/src/lib.rs | 15 - crates/pg_lint/Cargo.toml | 32 -- crates/pg_lint/src/lib.rs | 44 -- crates/pg_lint/src/rules/ban_drop_column.rs | 38 -- crates/pg_lint/src/rules/lint/safety.rs | 0 .../src/rules/lint/safety/ban_drop_table.rs | 0 crates/pg_lint/src/rules/mod.rs | 1 - crates/pg_lint/src/violations.rs | 79 --- crates/pg_syntax/Cargo.toml | 25 - crates/pg_syntax/src/ast.rs | 58 --- crates/pg_syntax/src/ast/builder.rs | 50 -- crates/pg_syntax/src/cst.rs | 10 - crates/pg_syntax/src/lib.rs | 19 - crates/pg_syntax/src/parser.rs | 195 -------- crates/pg_syntax/src/statement_parser.rs | 453 ------------------ crates/pg_syntax/src/syntax_builder.rs | 59 --- crates/pg_syntax/tests/data/0001.sql | 3 - crates/pg_syntax/tests/data/0002.sql | 1 - crates/pg_syntax/tests/data/0003.sql | 7 - crates/pg_syntax/tests/data/0004.sql | 4 - crates/pg_syntax/tests/data/0005.sql | 1 - crates/pg_syntax/tests/data/0006.sql | 1 - crates/pg_syntax/tests/data/0007.sql | 6 - crates/pg_syntax/tests/data/0008.sql | 2 - crates/pg_syntax/tests/data/0009.sql | 4 - crates/pg_syntax/tests/data/0010.sql | 1 - crates/pg_syntax/tests/data/0011.sql | 3 - crates/pg_syntax/tests/data/0012.sql | 4 - crates/pg_syntax/tests/data/0013.sql | 3 - crates/pg_syntax/tests/data/0014.sql | 3 - crates/pg_syntax/tests/data/0015.sql | 4 - crates/pg_syntax/tests/data/0016.sql | 1 - crates/pg_syntax/tests/data/0017.sql | 2 - crates/pg_syntax/tests/data/0018.sql | 1 - crates/pg_syntax/tests/data/0019.sql | 4 - crates/pg_syntax/tests/data/0020.sql | 10 - crates/pg_syntax/tests/data/0021.sql | 1 - crates/pg_syntax/tests/data/0022.sql | 5 - crates/pg_syntax/tests/data/0023.sql | 7 - crates/pg_syntax/tests/data/0024.sql | 6 - crates/pg_syntax/tests/data/0025.sql | 1 - crates/pg_syntax/tests/data/0026.sql | 1 - crates/pg_syntax/tests/data/0027.sql | 1 - crates/pg_syntax/tests/data/0028.sql | 1 - crates/pg_syntax/tests/data/0029.sql | 1 - crates/pg_syntax/tests/data/0030.sql | 2 - crates/pg_syntax/tests/data/0031.sql | 6 - crates/pg_syntax/tests/data/0032.sql | 1 - crates/pg_syntax/tests/data/0034.sql | 1 - crates/pg_syntax/tests/data/0035.sql | 1 - crates/pg_syntax/tests/data/0036.sql | 3 - crates/pg_syntax/tests/data/0037.sql | 1 - crates/pg_syntax/tests/data/0038.sql | 3 - crates/pg_syntax/tests/data/0039.sql | 10 - crates/pg_syntax/tests/data/0040.sql | 7 - crates/pg_syntax/tests/data/0041.sql | 4 - crates/pg_syntax/tests/data/0042.sql | 1 - crates/pg_syntax/tests/data/0043.sql | 11 - crates/pg_syntax/tests/data/0044.sql | 4 - crates/pg_syntax/tests/data/0046.sql | 8 - crates/pg_syntax/tests/data/0047.sql | 6 - crates/pg_syntax/tests/data/0048.sql | 2 - crates/pg_syntax/tests/data/0049.sql | 2 - crates/pg_syntax/tests/data/0051.sql | 11 - crates/pg_syntax/tests/data/0052.sql | 2 - crates/pg_syntax/tests/data/0053.sql | 7 - crates/pg_syntax/tests/data/0054.sql | 2 - crates/pg_syntax/tests/data/0055.sql | 2 - crates/pg_syntax/tests/data/0056.sql | 9 - crates/pg_syntax/tests/data/0057.sql | 11 - crates/pg_syntax/tests/pg_syntax_tests.rs | 66 --- crates/pg_syntax/tests/skipped.txt | 222 --------- .../tests/snapshots/data/0001@1.snap | 58 --- .../tests/snapshots/data/0002@1.snap | 15 - .../tests/snapshots/data/0003@1.snap | 69 --- .../tests/snapshots/data/0004@1.snap | 50 -- .../tests/snapshots/data/0005@1.snap | 24 - .../tests/snapshots/data/0007@1.snap | 42 -- .../tests/snapshots/data/0008@1.snap | 52 -- .../tests/snapshots/data/0009@1.snap | 116 ----- .../tests/snapshots/data/0010@1.snap | 38 -- .../tests/snapshots/data/0011@1.snap | 29 -- .../tests/snapshots/data/0012@1.snap | 57 --- .../tests/snapshots/data/0014@1.snap | 68 --- .../tests/snapshots/data/0015@1.snap | 70 --- .../tests/snapshots/data/0016@1.snap | 34 -- .../tests/snapshots/data/0017@1.snap | 54 --- .../tests/snapshots/data/0018@1.snap | 28 -- .../tests/snapshots/data/0019@1.snap | 53 -- .../tests/snapshots/data/0020@1.snap | 60 --- .../tests/snapshots/data/0021@1.snap | 39 -- .../tests/snapshots/data/0022@1.snap | 46 -- .../tests/snapshots/data/0023@1.snap | 92 ---- .../tests/snapshots/data/0024@1.snap | 66 --- .../tests/snapshots/data/0025@1.snap | 30 -- .../tests/snapshots/data/0026@1.snap | 33 -- .../tests/snapshots/data/0030@1.snap | 36 -- .../tests/snapshots/data/0032@1.snap | 18 - .../tests/snapshots/data/0033@1.snap | 70 --- .../tests/snapshots/data/0034@1.snap | 33 -- .../tests/snapshots/data/0035@1.snap | 33 -- .../tests/snapshots/data/0036@1.snap | 50 -- .../tests/snapshots/data/0037@1.snap | 26 - .../tests/snapshots/data/0038@1.snap | 35 -- .../tests/snapshots/data/0038@2.snap | 28 -- .../tests/snapshots/data/0038@3.snap | 28 -- .../tests/snapshots/data/0039@1.snap | 38 -- .../tests/snapshots/data/0039@2.snap | 43 -- .../tests/snapshots/data/0039@3.snap | 35 -- .../tests/snapshots/data/0039@4.snap | 46 -- .../tests/snapshots/data/0039@5.snap | 56 --- .../tests/snapshots/data/0039@6.snap | 59 --- .../tests/snapshots/data/0039@7.snap | 51 -- .../tests/snapshots/data/0040@1.snap | 35 -- .../tests/snapshots/data/0040@2.snap | 39 -- .../tests/snapshots/data/0040@3.snap | 42 -- .../tests/snapshots/data/0040@4.snap | 45 -- .../tests/snapshots/data/0040@5.snap | 53 -- .../tests/snapshots/data/0040@6.snap | 51 -- .../tests/snapshots/data/0040@7.snap | 46 -- .../tests/snapshots/data/0041@1.snap | 12 - .../tests/snapshots/data/0041@2.snap | 15 - .../tests/snapshots/data/0041@3.snap | 23 - .../tests/snapshots/data/0041@4.snap | 83 ---- .../tests/snapshots/data/0042@1.snap | 42 -- .../tests/snapshots/data/0043@1.snap | 58 --- .../tests/snapshots/data/0043@10.snap | 25 - .../tests/snapshots/data/0043@11.snap | 58 --- .../tests/snapshots/data/0043@2.snap | 164 ------- .../tests/snapshots/data/0043@3.snap | 89 ---- .../tests/snapshots/data/0043@4.snap | 30 -- .../tests/snapshots/data/0043@5.snap | 36 -- .../tests/snapshots/data/0043@6.snap | 32 -- .../tests/snapshots/data/0044@1.snap | 39 -- .../tests/snapshots/data/0044@2.snap | 47 -- .../tests/snapshots/data/0044@3.snap | 47 -- .../tests/snapshots/data/0044@4.snap | 106 ---- .../tests/snapshots/data/0046@1.snap | 12 - .../tests/snapshots/data/0046@2.snap | 30 -- .../tests/snapshots/data/0046@4.snap | 26 - .../tests/snapshots/data/0046@5.snap | 26 - .../tests/snapshots/data/0046@6.snap | 39 -- .../tests/snapshots/data/0046@7.snap | 31 -- .../tests/snapshots/data/0046@8.snap | 35 -- .../tests/snapshots/data/0047@1.snap | 24 - .../tests/snapshots/data/0047@2.snap | 17 - .../tests/snapshots/data/0047@3.snap | 17 - .../tests/snapshots/data/0047@4.snap | 17 - .../tests/snapshots/data/0047@5.snap | 17 - .../tests/snapshots/data/0047@6.snap | 17 - .../tests/snapshots/data/0048@1.snap | 16 - .../tests/snapshots/data/0048@2.snap | 36 -- .../tests/snapshots/data/0049@1.snap | 12 - .../tests/snapshots/data/0049@2.snap | 31 -- .../tests/snapshots/data/0051@1.snap | 24 - .../tests/snapshots/data/0051@10.snap | 34 -- .../tests/snapshots/data/0051@11.snap | 24 - .../tests/snapshots/data/0051@2.snap | 35 -- .../tests/snapshots/data/0051@3.snap | 34 -- .../tests/snapshots/data/0051@4.snap | 27 -- .../tests/snapshots/data/0051@5.snap | 26 - .../tests/snapshots/data/0051@6.snap | 26 - .../tests/snapshots/data/0051@7.snap | 35 -- .../tests/snapshots/data/0051@8.snap | 38 -- .../tests/snapshots/data/0051@9.snap | 26 - .../tests/snapshots/data/0052@1.snap | 37 -- .../tests/snapshots/data/0053@1.snap | 27 -- .../tests/snapshots/data/0053@2.snap | 33 -- .../tests/snapshots/data/0053@3.snap | 18 - .../tests/snapshots/data/0053@4.snap | 32 -- .../tests/snapshots/data/0053@5.snap | 37 -- .../tests/snapshots/data/0053@6.snap | 27 -- .../tests/snapshots/data/0053@7.snap | 28 -- .../tests/snapshots/data/0054@1.snap | 24 - .../tests/snapshots/data/0054@2.snap | 26 - .../tests/snapshots/data/0055@1.snap | 24 - .../tests/snapshots/data/0055@2.snap | 22 - .../tests/snapshots/data/0056@1.snap | 56 --- .../tests/snapshots/data/0056@2.snap | 60 --- .../tests/snapshots/data/0057@1.snap | 17 - .../tests/snapshots/data/0057@2.snap | 19 - .../tests/snapshots/data/0057@3.snap | 11 - .../tests/snapshots/data/0057@4.snap | 13 - .../tests/snapshots/data/0057@5.snap | 13 - .../tests/snapshots/data/0057@6.snap | 13 - 194 files changed, 6424 deletions(-) delete mode 100644 crates/pg_hover/Cargo.toml delete mode 100644 crates/pg_hover/src/lib.rs delete mode 100644 crates/pg_hover/src/resolve.rs delete mode 100644 crates/pg_inlay_hints/Cargo.toml delete mode 100644 crates/pg_inlay_hints/README.md delete mode 100644 crates/pg_inlay_hints/src/functions_args.rs delete mode 100644 crates/pg_inlay_hints/src/inlay_hint.rs delete mode 100644 crates/pg_inlay_hints/src/lib.rs delete mode 100644 crates/pg_lint/Cargo.toml delete mode 100644 crates/pg_lint/src/lib.rs delete mode 100644 crates/pg_lint/src/rules/ban_drop_column.rs delete mode 100644 crates/pg_lint/src/rules/lint/safety.rs delete mode 100644 crates/pg_lint/src/rules/lint/safety/ban_drop_table.rs delete mode 100644 crates/pg_lint/src/rules/mod.rs delete mode 100644 crates/pg_lint/src/violations.rs delete mode 100644 crates/pg_syntax/Cargo.toml delete mode 100644 crates/pg_syntax/src/ast.rs delete mode 100644 crates/pg_syntax/src/ast/builder.rs delete mode 100644 crates/pg_syntax/src/cst.rs delete mode 100644 crates/pg_syntax/src/lib.rs delete mode 100644 crates/pg_syntax/src/parser.rs delete mode 100644 crates/pg_syntax/src/statement_parser.rs delete mode 100644 crates/pg_syntax/src/syntax_builder.rs delete mode 100644 crates/pg_syntax/tests/data/0001.sql delete mode 100644 crates/pg_syntax/tests/data/0002.sql delete mode 100644 crates/pg_syntax/tests/data/0003.sql delete mode 100644 crates/pg_syntax/tests/data/0004.sql delete mode 100644 crates/pg_syntax/tests/data/0005.sql delete mode 100644 crates/pg_syntax/tests/data/0006.sql delete mode 100644 crates/pg_syntax/tests/data/0007.sql delete mode 100644 crates/pg_syntax/tests/data/0008.sql delete mode 100644 crates/pg_syntax/tests/data/0009.sql delete mode 100644 crates/pg_syntax/tests/data/0010.sql delete mode 100644 crates/pg_syntax/tests/data/0011.sql delete mode 100644 crates/pg_syntax/tests/data/0012.sql delete mode 100644 crates/pg_syntax/tests/data/0013.sql delete mode 100644 crates/pg_syntax/tests/data/0014.sql delete mode 100644 crates/pg_syntax/tests/data/0015.sql delete mode 100644 crates/pg_syntax/tests/data/0016.sql delete mode 100644 crates/pg_syntax/tests/data/0017.sql delete mode 100644 crates/pg_syntax/tests/data/0018.sql delete mode 100644 crates/pg_syntax/tests/data/0019.sql delete mode 100644 crates/pg_syntax/tests/data/0020.sql delete mode 100644 crates/pg_syntax/tests/data/0021.sql delete mode 100644 crates/pg_syntax/tests/data/0022.sql delete mode 100644 crates/pg_syntax/tests/data/0023.sql delete mode 100644 crates/pg_syntax/tests/data/0024.sql delete mode 100644 crates/pg_syntax/tests/data/0025.sql delete mode 100644 crates/pg_syntax/tests/data/0026.sql delete mode 100644 crates/pg_syntax/tests/data/0027.sql delete mode 100644 crates/pg_syntax/tests/data/0028.sql delete mode 100644 crates/pg_syntax/tests/data/0029.sql delete mode 100644 crates/pg_syntax/tests/data/0030.sql delete mode 100644 crates/pg_syntax/tests/data/0031.sql delete mode 100644 crates/pg_syntax/tests/data/0032.sql delete mode 100644 crates/pg_syntax/tests/data/0034.sql delete mode 100644 crates/pg_syntax/tests/data/0035.sql delete mode 100644 crates/pg_syntax/tests/data/0036.sql delete mode 100644 crates/pg_syntax/tests/data/0037.sql delete mode 100644 crates/pg_syntax/tests/data/0038.sql delete mode 100644 crates/pg_syntax/tests/data/0039.sql delete mode 100644 crates/pg_syntax/tests/data/0040.sql delete mode 100644 crates/pg_syntax/tests/data/0041.sql delete mode 100644 crates/pg_syntax/tests/data/0042.sql delete mode 100644 crates/pg_syntax/tests/data/0043.sql delete mode 100644 crates/pg_syntax/tests/data/0044.sql delete mode 100644 crates/pg_syntax/tests/data/0046.sql delete mode 100644 crates/pg_syntax/tests/data/0047.sql delete mode 100644 crates/pg_syntax/tests/data/0048.sql delete mode 100644 crates/pg_syntax/tests/data/0049.sql delete mode 100644 crates/pg_syntax/tests/data/0051.sql delete mode 100644 crates/pg_syntax/tests/data/0052.sql delete mode 100644 crates/pg_syntax/tests/data/0053.sql delete mode 100644 crates/pg_syntax/tests/data/0054.sql delete mode 100644 crates/pg_syntax/tests/data/0055.sql delete mode 100644 crates/pg_syntax/tests/data/0056.sql delete mode 100644 crates/pg_syntax/tests/data/0057.sql delete mode 100644 crates/pg_syntax/tests/pg_syntax_tests.rs delete mode 100644 crates/pg_syntax/tests/skipped.txt delete mode 100644 crates/pg_syntax/tests/snapshots/data/0001@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0002@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0003@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0004@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0005@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0007@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0008@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0009@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0010@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0011@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0012@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0014@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0015@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0016@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0017@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0018@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0019@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0020@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0021@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0022@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0023@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0024@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0025@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0026@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0030@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0032@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0033@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0034@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0035@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0036@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0037@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0038@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0038@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0038@3.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0039@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0039@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0039@3.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0039@4.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0039@5.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0039@6.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0039@7.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0040@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0040@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0040@3.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0040@4.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0040@5.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0040@6.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0040@7.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0041@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0041@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0041@3.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0041@4.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0042@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0043@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0043@10.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0043@11.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0043@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0043@3.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0043@4.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0043@5.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0043@6.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0044@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0044@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0044@3.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0044@4.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0046@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0046@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0046@4.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0046@5.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0046@6.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0046@7.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0046@8.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0047@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0047@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0047@3.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0047@4.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0047@5.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0047@6.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0048@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0048@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0049@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0049@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0051@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0051@10.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0051@11.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0051@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0051@3.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0051@4.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0051@5.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0051@6.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0051@7.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0051@8.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0051@9.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0052@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0053@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0053@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0053@3.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0053@4.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0053@5.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0053@6.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0053@7.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0054@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0054@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0055@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0055@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0056@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0056@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0057@1.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0057@2.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0057@3.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0057@4.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0057@5.snap delete mode 100644 crates/pg_syntax/tests/snapshots/data/0057@6.snap diff --git a/Cargo.lock b/Cargo.lock index 96ce9806..8ad8fef0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2385,34 +2385,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "pg_hover" -version = "0.0.0" -dependencies = [ - "pg_query_ext", - "pg_schema_cache", - "pg_syntax", - "text-size", - "tree-sitter", - "tree_sitter_sql", -] - -[[package]] -name = "pg_inlay_hints" -version = "0.0.0" -dependencies = [ - "async-std", - "pg_query_ext", - "pg_schema_cache", - "pg_syntax", - "pg_test_utils", - "pg_type_resolver", - "sqlx", - "text-size", - "tree-sitter", - "tree_sitter_sql", -] - [[package]] name = "pg_lexer" version = "0.0.0" @@ -2434,23 +2406,6 @@ dependencies = [ "quote", ] -[[package]] -name = "pg_lint" -version = "0.0.0" -dependencies = [ - "enumflags2", - "lazy_static", - "pg_base_db", - "pg_console", - "pg_diagnostics", - "pg_query_ext", - "pg_syntax", - "serde", - "serde_json", - "serde_plain", - "text-size", -] - [[package]] name = "pg_lsp" version = "0.0.0" @@ -2569,19 +2524,6 @@ dependencies = [ "text-size", ] -[[package]] -name = "pg_syntax" -version = "0.0.0" -dependencies = [ - "cstree", - "insta", - "petgraph", - "pg_lexer", - "pg_query", - "pg_query_ext", - "text-size", -] - [[package]] name = "pg_test_utils" version = "0.0.0" @@ -3322,15 +3264,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_plain" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1fc6db65a611022b23a0dec6975d63fb80a302cb3388835ff02c097258d50" -dependencies = [ - "serde", -] - [[package]] name = "serde_repr" version = "0.1.19" diff --git a/Cargo.toml b/Cargo.toml index 9bf1c100..dfcac5b6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -60,8 +60,6 @@ pg_diagnostics_categories = { path = "./crates/pg_diagnostics_categories", versi pg_diagnostics_macros = { path = "./crates/pg_diagnostics_macros", version = "0.0.0" } pg_flags = { path = "./crates/pg_flags", version = "0.0.0" } pg_fs = { path = "./crates/pg_fs", version = "0.0.0" } -pg_hover = { path = "./crates/pg_hover", version = "0.0.0" } -pg_inlay_hints = { path = "./crates/pg_inlay_hints", version = "0.0.0" } pg_lexer = { path = "./crates/pg_lexer", version = "0.0.0" } pg_lexer_codegen = { path = "./crates/pg_lexer_codegen", version = "0.0.0" } pg_lint = { path = "./crates/pg_lint", version = "0.0.0" } @@ -73,7 +71,6 @@ pg_query_ext_codegen = { path = "./crates/pg_query_ext_codegen", version = pg_query_proto_parser = { path = "./crates/pg_query_proto_parser", version = "0.0.0" } pg_schema_cache = { path = "./crates/pg_schema_cache", version = "0.0.0" } pg_statement_splitter = { path = "./crates/pg_statement_splitter", version = "0.0.0" } -pg_syntax = { path = "./crates/pg_syntax", version = "0.0.0" } pg_text_edit = { path = "./crates/pg_text_edit", version = "0.0.0" } pg_treesitter_queries = { path = "./crates/pg_treesitter_queries", version = "0.0.0" } pg_type_resolver = { path = "./crates/pg_type_resolver", version = "0.0.0" } diff --git a/crates/pg_hover/Cargo.toml b/crates/pg_hover/Cargo.toml deleted file mode 100644 index 61af3bcd..00000000 --- a/crates/pg_hover/Cargo.toml +++ /dev/null @@ -1,27 +0,0 @@ -[package] -authors.workspace = true -categories.workspace = true -description = "" -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -name = "pg_hover" -repository.workspace = true -version = "0.0.0" - - -[dependencies] -pg_query_ext.workspace = true -pg_schema_cache.workspace = true -pg_syntax.workspace = true -text-size.workspace = true -tree-sitter.workspace = true -tree_sitter_sql.workspace = true - -[dev-dependencies] - -[lib] -doctest = false - -[features] diff --git a/crates/pg_hover/src/lib.rs b/crates/pg_hover/src/lib.rs deleted file mode 100644 index 22e9ed92..00000000 --- a/crates/pg_hover/src/lib.rs +++ /dev/null @@ -1,57 +0,0 @@ -//! # pg_hover -//! -//! This crate implements the hover feature. Essentially, it takes a position in a sql statement, and checks what node is located at that position. If the node is a valid hover result type, it resolves the type from the schema cache and returns it. The consumer of this crate is responsible for rendering the data. -//! -//! Note that we have two ways of resolving the hover result. We first try to resolve it from the enriched AST, and if that fails, we try to resolve it from the tree-sitter CST. This is because the enriched AST is more accurate, but the tree-sitter CST is more reliable. - -mod resolve; - -use pg_schema_cache::SchemaCache; -use resolve::Hoverable; -use text_size::TextRange; - -pub struct HoverParams<'a> { - pub position: text_size::TextSize, - pub source: &'a str, - pub enriched_ast: Option<&'a pg_syntax::AST>, - pub tree: Option<&'a tree_sitter::Tree>, - pub schema_cache: SchemaCache, -} - -#[derive(Debug)] -pub struct HoverResult { - pub range: Option, - pub content: String, -} - -pub fn hover(params: HoverParams) -> Option { - let elem = if params.enriched_ast.is_some() { - resolve::resolve_from_enriched_ast(params.position, params.enriched_ast.unwrap()) - } else if params.tree.is_some() { - resolve::resolve_from_tree_sitter(params.position, params.tree.unwrap(), params.source) - } else { - None - }; - - elem.as_ref()?; - - match elem.unwrap() { - Hoverable::Relation(r) => { - let table = params.schema_cache.find_table(&r.name, r.schema.as_deref()); - - table.map(|t| { - let mut content = t.name.to_owned(); - - if t.comment.is_some() { - content.push('\n'); - content.push_str(t.comment.as_ref().unwrap()); - } - - HoverResult { - range: Some(r.range), - content, - } - }) - } - } -} diff --git a/crates/pg_hover/src/resolve.rs b/crates/pg_hover/src/resolve.rs deleted file mode 100644 index a7eb8466..00000000 --- a/crates/pg_hover/src/resolve.rs +++ /dev/null @@ -1,123 +0,0 @@ -use text_size::{TextRange, TextSize}; -use tree_sitter::Tree; - -#[derive(Debug, Eq, PartialEq)] -pub struct HoverableRelation { - pub name: String, - pub schema: Option, - pub range: TextRange, -} - -#[derive(Debug, Eq, PartialEq)] -pub struct HoverableColumn { - pub name: String, - pub table: Option, - pub schema: Option, - pub range: TextRange, -} - -#[derive(Debug, Eq, PartialEq)] -pub enum Hoverable { - Relation(HoverableRelation), -} - -pub fn resolve_from_enriched_ast(pos: TextSize, ast: &pg_syntax::AST) -> Option { - let node = ast.covering_node(TextRange::empty(pos))?; - - match node.node { - pg_query_ext::NodeEnum::RangeVar(ref range_var) => { - Some(Hoverable::Relation(HoverableRelation { - range: node.range(), - name: range_var.relname.clone(), - schema: if range_var.schemaname.is_empty() { - None - } else { - Some(range_var.schemaname.clone()) - }, - })) - } - _ => None, - } -} - -pub fn resolve_from_tree_sitter(pos: TextSize, tree: &Tree, source: &str) -> Option { - let mut node = tree - .root_node() - .named_descendant_for_byte_range(usize::from(pos), usize::from(pos))?; - - let node_range = node.range(); - - while let Some(parent) = node.parent() { - if parent.range() != node_range { - break; - } - node = parent; - } - - match node.kind() { - "relation" => Some(Hoverable::Relation(HoverableRelation { - range: TextRange::new( - TextSize::try_from(node.range().start_byte).unwrap(), - TextSize::try_from(node.range().end_byte).unwrap(), - ), - name: node.utf8_text(source.as_bytes()).unwrap().to_string(), - schema: None, - })), - _ => None, - } -} - -#[cfg(test)] -mod tests { - use text_size::{TextRange, TextSize}; - - use super::{Hoverable, HoverableRelation}; - - #[test] - fn test_resolve_from_enriched_ast() { - let input = "select id from contact;"; - let position = TextSize::new(15); - - let root = pg_query_ext::parse(input).unwrap(); - let ast = pg_syntax::parse_syntax(input, &root).ast; - - let hover = super::resolve_from_enriched_ast(position, &ast); - - assert!(hover.is_some()); - - assert_eq!( - hover.unwrap(), - Hoverable::Relation(HoverableRelation { - range: TextRange::new(TextSize::new(15), TextSize::new(22)), - name: "contact".to_string(), - schema: None, - }) - ); - } - - #[test] - fn test_resolve_from_tree_sitter() { - let input = "select id from contact;"; - let position = TextSize::new(15); - - let mut parser = tree_sitter::Parser::new(); - parser - .set_language(tree_sitter_sql::language()) - .expect("Error loading sql language"); - - let tree = parser.parse(input, None).unwrap(); - - let hover = super::resolve_from_tree_sitter(position, &tree, input); - - assert!(hover.is_some()); - - assert_eq!( - hover.unwrap(), - Hoverable::Relation(HoverableRelation { - range: TextRange::new(TextSize::new(15), TextSize::new(22)), - name: "contact".to_string(), - schema: None, - }) - ); - } -} diff --git a/crates/pg_inlay_hints/Cargo.toml b/crates/pg_inlay_hints/Cargo.toml deleted file mode 100644 index 3a73bf4b..00000000 --- a/crates/pg_inlay_hints/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -authors.workspace = true -categories.workspace = true -description = "" -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -name = "pg_inlay_hints" -repository.workspace = true -version = "0.0.0" - - -[dependencies] -pg_query_ext.workspace = true -pg_schema_cache.workspace = true -pg_syntax.workspace = true -pg_type_resolver.workspace = true -sqlx.workspace = true -text-size.workspace = true -tree-sitter.workspace = true -tree_sitter_sql.workspace = true - -[dev-dependencies] -async-std = "1.12.0" -pg_test_utils.workspace = true - - -[lib] -doctest = false - -[features] diff --git a/crates/pg_inlay_hints/README.md b/crates/pg_inlay_hints/README.md deleted file mode 100644 index 0b7589aa..00000000 --- a/crates/pg_inlay_hints/README.md +++ /dev/null @@ -1 +0,0 @@ -- [] Support named args for functions diff --git a/crates/pg_inlay_hints/src/functions_args.rs b/crates/pg_inlay_hints/src/functions_args.rs deleted file mode 100644 index 67dc5fae..00000000 --- a/crates/pg_inlay_hints/src/functions_args.rs +++ /dev/null @@ -1,121 +0,0 @@ -use pg_query_ext::ChildrenIterator; -use text_size::TextSize; - -use crate::{ - inlay_hint::{InlayHint, InlayHintContent, InlayHintsResolver}, - InlayHintsParams, -}; - -#[derive(Debug, PartialEq, Eq)] -pub struct FunctionArgHint { - pub name: Option, - pub type_name: String, -} - -impl InlayHintsResolver for FunctionArgHint { - fn find_all(params: InlayHintsParams) -> Vec { - if params.ast.is_none() { - return vec![]; - } - - // args of a function have a correct location in the AST - // so we can make it even easier based off the plain root node - let root = params.ast.unwrap(); - - ChildrenIterator::new(root.to_owned()) - .filter_map(|n| match n { - pg_query_ext::NodeEnum::FuncCall(source_fn) => { - pg_type_resolver::resolve_func_call(source_fn.as_ref(), params.schema_cache) - .map(|schema_fn| { - resolve_func_arg_hint( - source_fn.as_ref(), - schema_fn, - params.schema_cache, - ) - }) - } - _ => None, - }) - .flatten() - .collect() - } -} - -fn resolve_func_arg_hint( - source_fn: &pg_query_ext::protobuf::FuncCall, - schema_fn: &pg_schema_cache::Function, - schema_cache: &pg_schema_cache::SchemaCache, -) -> Vec { - let mut hints = vec![]; - - // todo support named args - for (func_arg, schema_arg) in source_fn.args.iter().zip(schema_fn.args.args.iter()) { - hints.push(InlayHint { - offset: TextSize::try_from( - pg_query_ext::get_location(func_arg.node.as_ref().unwrap()) - .expect("function arg to have a location"), - ) - .unwrap(), - content: InlayHintContent::FunctionArg(FunctionArgHint { - name: if schema_arg.name.is_empty() { - None - } else { - Some(schema_arg.name.clone()) - }, - type_name: schema_cache - .types - .iter() - .find(|t| t.id == schema_arg.type_id) - .unwrap() - .name - .clone(), - }), - }); - } - - hints -} - -#[cfg(test)] -mod tests { - use async_std::task::block_on; - use pg_schema_cache::SchemaCache; - use pg_test_utils::test_database::get_new_test_db; - - use crate::{ - functions_args::FunctionArgHint, - inlay_hint::{InlayHint, InlayHintContent, InlayHintsParams, InlayHintsResolver}, - }; - - #[test] - fn test_function_args() { - let test_db = block_on(get_new_test_db()); - let input = "select lower('TEST')"; - - let root = pg_query_ext::parse(input).unwrap(); - let res = pg_syntax::parse_syntax(input, &root); - - let schema_cache = - block_on(SchemaCache::load(&test_db)).expect("Couldn't load Schema Cache"); - - let hints = FunctionArgHint::find_all(InlayHintsParams { - ast: Some(&root), - tree: None, - schema_cache: &schema_cache, - enriched_ast: Some(&res.ast), - cst: Some(&res.cst), - }); - - assert_eq!(hints.len(), 1); - assert_eq!( - hints[0], - InlayHint { - offset: 13.into(), - content: InlayHintContent::FunctionArg(FunctionArgHint { - name: None, - type_name: "text".to_string(), - }), - } - ); - } -} diff --git a/crates/pg_inlay_hints/src/inlay_hint.rs b/crates/pg_inlay_hints/src/inlay_hint.rs deleted file mode 100644 index 1e5bb091..00000000 --- a/crates/pg_inlay_hints/src/inlay_hint.rs +++ /dev/null @@ -1,27 +0,0 @@ -use pg_schema_cache::SchemaCache; -use text_size::TextSize; - -use crate::functions_args::FunctionArgHint; - -pub struct InlayHintsParams<'a> { - pub ast: Option<&'a pg_query_ext::NodeEnum>, - pub enriched_ast: Option<&'a pg_syntax::AST>, - pub tree: Option<&'a tree_sitter::Tree>, - pub cst: Option<&'a pg_syntax::CST>, - pub schema_cache: &'a SchemaCache, -} - -#[derive(Debug, PartialEq, Eq)] -pub enum InlayHintContent { - FunctionArg(FunctionArgHint), -} - -#[derive(Debug, PartialEq, Eq)] -pub struct InlayHint { - pub offset: TextSize, - pub content: InlayHintContent, -} - -pub trait InlayHintsResolver { - fn find_all(params: InlayHintsParams) -> Vec; -} diff --git a/crates/pg_inlay_hints/src/lib.rs b/crates/pg_inlay_hints/src/lib.rs deleted file mode 100644 index ce26a68b..00000000 --- a/crates/pg_inlay_hints/src/lib.rs +++ /dev/null @@ -1,15 +0,0 @@ -mod functions_args; -mod inlay_hint; - -use inlay_hint::InlayHintsResolver; - -use crate::functions_args::FunctionArgHint; -pub use crate::inlay_hint::{InlayHint, InlayHintContent, InlayHintsParams}; - -pub fn inlay_hints(params: InlayHintsParams) -> Vec { - let mut hints = vec![]; - - hints.extend(FunctionArgHint::find_all(params)); - - hints -} diff --git a/crates/pg_lint/Cargo.toml b/crates/pg_lint/Cargo.toml deleted file mode 100644 index a349c57d..00000000 --- a/crates/pg_lint/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -authors.workspace = true -categories.workspace = true -description = "" -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -name = "pg_lint" -repository.workspace = true -version = "0.0.0" - - -[dependencies] -enumflags2.workspace = true -lazy_static = "1.4.0" -pg_base_db.workspace = true -pg_console.workspace = true -pg_diagnostics.workspace = true -pg_query_ext.workspace = true -pg_syntax.workspace = true -serde.workspace = true -serde_json.workspace = true -serde_plain = "1.0" -text-size.workspace = true - -[dev-dependencies] - -[lib] -doctest = false - -[features] diff --git a/crates/pg_lint/src/lib.rs b/crates/pg_lint/src/lib.rs deleted file mode 100644 index a9fb9b35..00000000 --- a/crates/pg_lint/src/lib.rs +++ /dev/null @@ -1,44 +0,0 @@ -use lazy_static::lazy_static; -use text_size::TextSize; -pub use violations::{RuleViolation, RuleViolationKind, ViolationMessage}; - -use crate::rules::ban_drop_column::ban_drop_column; - -mod rules; -mod violations; - -pub struct LinterParams<'a> { - pub ast: &'a pg_query_ext::NodeEnum, - pub enriched_ast: Option<&'a pg_syntax::AST>, -} - -#[derive(Clone)] -pub struct LintRule { - pub name: RuleViolationKind, - func: fn(&LinterParams) -> Vec, - pub messages: Vec, -} - -lazy_static! { - pub static ref RULES: Vec = vec![LintRule { - name: RuleViolationKind::BanDropColumn, - func: ban_drop_column, - messages: vec![ViolationMessage::Note( - "Dropping a column may break existing clients.".into() - ),], - }]; -} - -pub fn check_sql(params: LinterParams) -> Vec { - let mut errs = vec![]; - for rule in RULES.iter() { - errs.extend((rule.func)(¶ms)); - } - - errs.sort_by_key(|v| match v.range { - Some(r) => r.start(), - None => TextSize::new(0), - }); - - errs -} diff --git a/crates/pg_lint/src/rules/ban_drop_column.rs b/crates/pg_lint/src/rules/ban_drop_column.rs deleted file mode 100644 index 3e68e53a..00000000 --- a/crates/pg_lint/src/rules/ban_drop_column.rs +++ /dev/null @@ -1,38 +0,0 @@ -use crate::{ - violations::{RuleViolation, RuleViolationKind}, - LinterParams, -}; - -pub fn ban_drop_column(params: &LinterParams) -> Vec { - let mut errs: Vec = vec![]; - - if let Some(enriched_ast) = params.enriched_ast { - if let pg_query_ext::NodeEnum::AlterTableStmt(_) = &enriched_ast.root_node().node { - for node in enriched_ast.iter_nodes() { - if let pg_query_ext::NodeEnum::AlterTableCmd(cmd) = &node.node { - if cmd.subtype() == pg_query_ext::protobuf::AlterTableType::AtDropColumn { - errs.push(RuleViolation::new( - RuleViolationKind::BanDropColumn, - Some(node.range()), - None, - )); - } - } - } - } - } else if let pg_query_ext::NodeEnum::AlterTableStmt(stmt) = ¶ms.ast { - for cmd in &stmt.cmds { - if let Some(pg_query_ext::NodeEnum::AlterTableCmd(cmd)) = &cmd.node { - if cmd.subtype() == pg_query_ext::protobuf::AlterTableType::AtDropColumn { - errs.push(RuleViolation::new( - RuleViolationKind::BanDropColumn, - None, - None, - )); - } - } - } - } - - errs -} diff --git a/crates/pg_lint/src/rules/lint/safety.rs b/crates/pg_lint/src/rules/lint/safety.rs deleted file mode 100644 index e69de29b..00000000 diff --git a/crates/pg_lint/src/rules/lint/safety/ban_drop_table.rs b/crates/pg_lint/src/rules/lint/safety/ban_drop_table.rs deleted file mode 100644 index e69de29b..00000000 diff --git a/crates/pg_lint/src/rules/mod.rs b/crates/pg_lint/src/rules/mod.rs deleted file mode 100644 index a396405a..00000000 --- a/crates/pg_lint/src/rules/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod ban_drop_column; diff --git a/crates/pg_lint/src/violations.rs b/crates/pg_lint/src/violations.rs deleted file mode 100644 index a3f74322..00000000 --- a/crates/pg_lint/src/violations.rs +++ /dev/null @@ -1,79 +0,0 @@ -use std::str::FromStr; - -use crate::RULES; -use serde::{Deserialize, Serialize}; -use text_size::TextRange; - -#[derive(Debug, PartialEq, Clone, Serialize, Hash, Eq, Deserialize)] -pub enum RuleViolationKind { - #[serde(rename = "ban-drop-column")] - BanDropColumn, -} - -impl std::fmt::Display for RuleViolationKind { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!( - f, - "{}", - serde_plain::to_string(self).map_err(|_| std::fmt::Error)? - ) - } -} - -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct UnknownRuleName { - val: String, -} - -impl std::fmt::Display for UnknownRuleName { - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(f, "invalid rule name {}", self.val) - } -} - -impl std::str::FromStr for RuleViolationKind { - type Err = UnknownRuleName; - fn from_str(s: &str) -> Result { - serde_plain::from_str(s).map_err(|_| UnknownRuleName { val: s.to_string() }) - } -} - -impl std::convert::TryFrom<&str> for RuleViolationKind { - type Error = UnknownRuleName; - fn try_from(s: &str) -> Result { - RuleViolationKind::from_str(s) - } -} - -#[derive(Debug, PartialEq, Serialize, Clone)] -pub enum ViolationMessage { - Note(String), - Help(String), -} - -#[derive(Debug, PartialEq)] -pub struct RuleViolation { - pub kind: RuleViolationKind, - pub range: Option, - pub messages: Vec, -} - -impl RuleViolation { - pub fn new( - kind: RuleViolationKind, - range: Option, - messages: Option>, - ) -> Self { - let messages = messages.unwrap_or_else(|| { - RULES - .iter() - .find(|r| r.name == kind) - .map_or_else(Vec::new, |x| x.messages.clone()) - }); - Self { - kind, - range, - messages, - } - } -} diff --git a/crates/pg_syntax/Cargo.toml b/crates/pg_syntax/Cargo.toml deleted file mode 100644 index aaddc24c..00000000 --- a/crates/pg_syntax/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -authors.workspace = true -categories.workspace = true -description = "" -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -name = "pg_syntax" -repository.workspace = true -version = "0.0.0" - - -[dependencies] -petgraph = "0.6.4" - -cstree = { version = "0.12.0", features = ["derive"] } -text-size.workspace = true - -pg_lexer.workspace = true -pg_query_ext.workspace = true - -[dev-dependencies] -insta = "1.31.0" -pg_query = "6.0.0" diff --git a/crates/pg_syntax/src/ast.rs b/crates/pg_syntax/src/ast.rs deleted file mode 100644 index 0c39a37e..00000000 --- a/crates/pg_syntax/src/ast.rs +++ /dev/null @@ -1,58 +0,0 @@ -pub mod builder; - -use petgraph::{ - stable_graph::{DefaultIx, NodeIndex, StableGraph}, - visit::IntoNodeReferences, - Direction, -}; -use text_size::{TextRange, TextSize}; - -#[derive(Debug, Clone)] -pub struct RangedNode { - pub node: pg_query_ext::NodeEnum, - pub start: TextSize, - pub end: Option, -} - -impl RangedNode { - pub fn range(&self) -> TextRange { - TextRange::new(self.start, self.end.unwrap()) - } -} - -#[derive(Debug, Clone)] -pub struct AST { - inner: StableGraph, -} - -impl AST { - pub fn new(g: StableGraph) -> Self { - Self { inner: g } - } - - pub fn root_node(&self) -> &RangedNode { - &self.inner[NodeIndex::::new(0)] - } - - pub fn iter_nodes(&self) -> impl Iterator { - self.inner.node_references().map(|(_, node)| node) - } - - pub fn covering_node(&self, range: TextRange) -> Option { - let mut res: NodeIndex = NodeIndex::::new(0); - - // check if any children contains the range. if not return, else continue - while let Some(idx) = self - .inner - .neighbors_directed(res, Direction::Outgoing) - .find(|&idx| { - let node = &self.inner[idx]; - node.range().contains_range(range) - }) - { - res = idx; - } - - Some(self.inner[res].clone()) - } -} diff --git a/crates/pg_syntax/src/ast/builder.rs b/crates/pg_syntax/src/ast/builder.rs deleted file mode 100644 index 8da2b984..00000000 --- a/crates/pg_syntax/src/ast/builder.rs +++ /dev/null @@ -1,50 +0,0 @@ -use petgraph::stable_graph::{DefaultIx, NodeIndex, StableGraph}; - -use crate::ast::{RangedNode, AST}; - -pub(crate) struct AstBuilder { - inner: StableGraph, - open_nodes: Vec>, - current_pos: usize, - current_idx: NodeIndex, -} - -impl AstBuilder { - pub fn new() -> Self { - Self { - inner: StableGraph::new(), - open_nodes: Vec::new(), - current_pos: 0, - current_idx: NodeIndex::new(0), - } - } - - pub fn start_node(&mut self, node: pg_query_ext::NodeEnum) { - let idx = self.inner.add_node(RangedNode { - node, - start: self.current_pos.try_into().unwrap(), - end: None, - }); - if !self.open_nodes.is_empty() { - let parent = self.open_nodes.last().unwrap(); - self.inner.add_edge(parent.to_owned(), idx, ()); - } - self.open_nodes.push(idx); - self.current_idx = idx; - } - - pub fn finish_node(&mut self) { - let idx = self.open_nodes.pop().unwrap(); - let end = self.current_pos; - self.inner[idx].end = Some(end.try_into().unwrap()); - self.current_idx = idx; - } - - pub fn token(&mut self, text: &str) { - self.current_pos += text.len(); - } - - pub fn finish(self) -> AST { - AST::new(self.inner) - } -} diff --git a/crates/pg_syntax/src/cst.rs b/crates/pg_syntax/src/cst.rs deleted file mode 100644 index 7e556f7f..00000000 --- a/crates/pg_syntax/src/cst.rs +++ /dev/null @@ -1,10 +0,0 @@ -use cstree::syntax::ResolvedNode; -use pg_lexer::SyntaxKind; - -pub type CST = ResolvedNode; - -pub type SyntaxNode = cstree::syntax::SyntaxNode; -#[allow(dead_code)] -pub type SyntaxToken = cstree::syntax::SyntaxToken; -#[allow(dead_code)] -pub type SyntaxElement = cstree::syntax::SyntaxElement; diff --git a/crates/pg_syntax/src/lib.rs b/crates/pg_syntax/src/lib.rs deleted file mode 100644 index 81e46e2a..00000000 --- a/crates/pg_syntax/src/lib.rs +++ /dev/null @@ -1,19 +0,0 @@ -mod ast; -mod cst; -mod parser; -mod statement_parser; -mod syntax_builder; - -pub use ast::AST; -pub use cst::CST; - -use statement_parser::StatementParser; -use syntax_builder::{Syntax, SyntaxBuilder}; - -pub fn parse_syntax(sql: &str, root: &pg_query_ext::NodeEnum) -> Syntax { - let mut builder = SyntaxBuilder::new(); - - StatementParser::new(root, sql, &mut builder).parse(); - - builder.finish() -} diff --git a/crates/pg_syntax/src/parser.rs b/crates/pg_syntax/src/parser.rs deleted file mode 100644 index b2dfc865..00000000 --- a/crates/pg_syntax/src/parser.rs +++ /dev/null @@ -1,195 +0,0 @@ -use pg_lexer::TokenType; -use pg_lexer::{SyntaxKind, Token, WHITESPACE_TOKENS}; -use std::ops::Range; - -pub enum ParserEvent<'a> { - Token(&'a Token), - StartNode(pg_query_ext::NodeEnum), - FinishNode, -} - -pub trait EventSink { - fn push(&mut self, event: ParserEvent); -} - -/// Main parser that exposes the `cstree` api, and collects errors and statements -pub struct Parser<'p> { - event_sink: Option<&'p mut dyn EventSink>, - /// The tokens to parse - pub tokens: Vec, - /// The current position in the token stream - pub pos: usize, - /// index from which whitespace tokens are buffered - pub whitespace_token_buffer: Option, - /// index from which tokens are buffered - token_buffer: Option, - - pub depth: usize, - - eof_token: Token, -} - -#[allow(dead_code)] -impl<'p> Parser<'p> { - pub fn new(tokens: Vec, event_sink: Option<&'p mut dyn EventSink>) -> Self { - Self { - event_sink, - eof_token: Token::eof(usize::from(tokens.last().unwrap().span.end())), - tokens, - pos: 0, - whitespace_token_buffer: None, - token_buffer: None, - depth: 0, - } - } - - pub fn token_range(&self) -> Range { - 0..self.tokens.len() - } - - /// start a new node of `SyntaxKind` - pub fn start_node(&mut self, kind: pg_query_ext::NodeEnum) { - self.flush_token_buffer(); - if let Some(ref mut event_sink) = self.event_sink { - (*event_sink).push(ParserEvent::StartNode(kind)); - } - self.depth += 1; - } - /// finish current node - pub fn finish_node(&mut self) { - if let Some(ref mut event_sink) = self.event_sink { - (*event_sink).push(ParserEvent::FinishNode); - } - self.depth -= 1; - } - - /// Opens a buffer for tokens. While the buffer is active, tokens are not applied to the tree. - pub fn open_buffer(&mut self) { - self.token_buffer = Some(self.pos); - } - - /// Closes the current token buffer, resets the position to the start of the buffer and returns the range of buffered tokens. - pub fn close_buffer(&mut self) -> Range { - let token_buffer = self.token_buffer.unwrap(); - let token_range = token_buffer..self.whitespace_token_buffer.unwrap_or(self.pos); - self.token_buffer = None; - self.pos = token_buffer; - token_range - } - - /// applies token and advances - pub fn advance(&mut self) { - assert!(!self.eof()); - if self.nth(0, false).kind == SyntaxKind::Whitespace { - if self.whitespace_token_buffer.is_none() { - self.whitespace_token_buffer = Some(self.pos); - } - } else { - self.flush_token_buffer(); - if self.token_buffer.is_none() { - let token = self.tokens.get(self.pos).unwrap(); - if let Some(ref mut event_sink) = self.event_sink { - (*event_sink).push(ParserEvent::Token(token)); - } - } - } - self.pos += 1; - } - - /// flush token buffer and applies all tokens - pub fn flush_token_buffer(&mut self) { - if self.whitespace_token_buffer.is_none() { - return; - } - while self.whitespace_token_buffer.unwrap() < self.pos { - let token = self - .tokens - .get(self.whitespace_token_buffer.unwrap()) - .unwrap(); - if self.token_buffer.is_none() { - if let Some(ref mut event_sink) = self.event_sink { - (*event_sink).push(ParserEvent::Token(token)); - } - } - self.whitespace_token_buffer = Some(self.whitespace_token_buffer.unwrap() + 1); - } - self.whitespace_token_buffer = None; - } - - pub fn eat(&mut self, kind: SyntaxKind) -> bool { - if self.at(kind) { - self.advance(); - true - } else { - false - } - } - - pub fn at_whitespace(&self) -> bool { - self.nth(0, false).kind == SyntaxKind::Whitespace - } - - pub fn eat_whitespace(&mut self) { - while self.nth(0, false).token_type == TokenType::Whitespace { - self.advance(); - } - } - - pub fn eof(&self) -> bool { - self.pos == self.tokens.len() - } - - /// lookahead method. - /// - /// if `ignore_whitespace` is true, it will skip all whitespace tokens - pub fn nth(&self, lookahead: usize, ignore_whitespace: bool) -> &Token { - if ignore_whitespace { - let mut idx = 0; - let mut non_whitespace_token_ctr = 0; - loop { - match self.tokens.get(self.pos + idx) { - Some(token) => { - if !WHITESPACE_TOKENS.contains(&token.kind) { - if non_whitespace_token_ctr == lookahead { - return token; - } - non_whitespace_token_ctr += 1; - } - idx += 1; - } - None => { - return &self.eof_token; - } - } - } - } else { - match self.tokens.get(self.pos + lookahead) { - Some(token) => token, - None => &self.eof_token, - } - } - } - - /// checks if the current token is any of `kinds` - pub fn at_any(&self, kinds: &[SyntaxKind]) -> bool { - kinds.iter().any(|&it| self.at(it)) - } - - /// checks if the current token is of `kind` - pub fn at(&self, kind: SyntaxKind) -> bool { - self.nth(0, false).kind == kind - } - - /// like at, but for multiple consecutive tokens - pub fn at_all(&self, kinds: &[SyntaxKind]) -> bool { - kinds - .iter() - .enumerate() - .all(|(idx, &it)| self.nth(idx, false).kind == it) - } - - /// like at_any, but for multiple consecutive tokens - pub fn at_any_all(&self, kinds: &Vec<&[SyntaxKind]>) -> bool { - kinds.iter().any(|&it| self.at_all(it)) - } -} diff --git a/crates/pg_syntax/src/statement_parser.rs b/crates/pg_syntax/src/statement_parser.rs deleted file mode 100644 index 56bba2c2..00000000 --- a/crates/pg_syntax/src/statement_parser.rs +++ /dev/null @@ -1,453 +0,0 @@ -use petgraph::{ - stable_graph::{DefaultIx, NodeIndex, StableGraph}, - visit::{Bfs, Dfs}, - Direction, -}; -use pg_lexer::{lex, SyntaxKind, Token, TokenType}; -use pg_query_ext::{get_nodes, Node, NodeEnum, TokenProperty}; - -use crate::parser::Parser; - -use super::syntax_builder::SyntaxBuilder; - -// TODO: implement sibling token handling -static SKIPPABLE_TOKENS: &[SyntaxKind] = &[ - // "[" - SyntaxKind::Ascii91, - // "]" - SyntaxKind::Ascii93, - // "(" - SyntaxKind::Ascii40, - // ")" - SyntaxKind::Ascii41, - // "," - SyntaxKind::Ascii44, - // "." - SyntaxKind::Ascii46, - // ";" - SyntaxKind::Ascii59, -]; - -pub(super) struct StatementParser<'p> { - parser: Parser<'p>, - node_graph: StableGraph, - current_node: NodeIndex, - open_nodes: Vec>, -} - -impl<'p> StatementParser<'p> { - pub fn new( - root: &NodeEnum, - sql: &str, - event_sink: &'p mut SyntaxBuilder, - ) -> StatementParser<'p> { - Self { - node_graph: get_nodes(root), - current_node: NodeIndex::::new(0), - open_nodes: Vec::new(), - parser: Parser::new(lex(sql), Some(event_sink)), - } - } - - pub fn parse(&mut self) { - while self.parser.pos < self.parser.token_range().end { - if self.at_whitespace() { - self.parser.advance(); - } else if let Some(idx) = self.node_properties_position(self.current_node) { - // token is in current node. remove and advance. - // open if not opened yet. - if !self.node_is_open(&self.current_node) { - self.start_node(self.current_node); - } - self.remove_property(self.current_node, idx); - self.parser.advance(); - self.finish_open_leaf_nodes(); - } else if let Some((node_idx, prop_idx)) = self.search_children() { - if prop_idx.is_some() { - self.remove_property(node_idx, prop_idx.unwrap()); - } - - // close all nodes until the target depth is reached - self.finish_nodes_until_depth(self.node_graph[node_idx].depth + 1); - - if !self.node_is_open(&node_idx) { - // open all nodes from `self.current_node` to the target node `node_idx` - let ancestors = self.ancestors(Some(node_idx)); - let mut nodes_to_open = Vec::>::new(); - // including the target node itself - nodes_to_open.push(node_idx); - for nx in ancestors { - if nx == self.current_node { - break; - } - nodes_to_open.push(nx); - } - nodes_to_open.iter().rev().for_each(|n| { - self.start_node(*n); - }); - } - - self.parser.advance(); - - self.current_node = node_idx; - - self.finish_open_leaf_nodes(); - } else if self.at_skippable() { - self.parser.advance(); - } else if let Some((node_idx, prop_idx)) = self.search_parent_properties() { - self.remove_property(node_idx, prop_idx); - - self.finish_nodes_until_depth(self.node_graph[node_idx].depth + 1); - - // do not open any new nodes because the node is already open - - self.current_node = node_idx; - - // set the current node to the deepest node (looking up from the current node) that has at least one children - // has_children is true if there are outgoing neighbors - if self.has_children(&node_idx) { - self.current_node = node_idx; - } else { - for a in self.ancestors(Some(node_idx)) { - if self.has_children(&a) { - self.current_node = a; - break; - } - } - } - - self.parser.advance(); - } else { - panic!( - "could not find node for token {:?} at depth {}", - self.current_token(), - self.parser.depth, - ); - } - } - // close all remaining nodes - for _ in 0..self.open_nodes.len() { - self.finish_node(); - } - } - - fn search_parent_properties(&self) -> Option<(NodeIndex, usize)> { - self.ancestors(None).find_map(|n| { - let prop_idx = self.node_graph[n] - .properties - .iter() - .position(|p| cmp_tokens(p, self.current_token())); - if prop_idx.is_some() { - Some((n, prop_idx.unwrap())) - } else { - None - } - }) - } - - /// breadth-first search (`Bfs`) for the node that is at the current location or has the current token as its property - /// - /// Returns indices of both node and property if found - /// - /// Skips visited branches - fn search_children(&self) -> Option<(NodeIndex, Option)> { - let mut bfs = Bfs::new(&self.node_graph, self.current_node); - let current_node_children = self - .node_graph - .neighbors_directed(self.current_node, Direction::Outgoing) - .collect::>>(); - let mut skipped_nodes = Vec::>::new(); - - // (node index, property index) - // always check all nodes on the same depth of the first node that is found - let mut possible_nodes: Vec<(NodeIndex, Option)> = Vec::new(); - let mut target_depth: Option = None; - while let Some(nx) = bfs.next(&self.node_graph) { - if target_depth.is_some() && self.node_graph[nx].depth != target_depth.unwrap() { - break; - } - - // if all direct children of the current node are being skipped, break - if current_node_children - .iter() - .all(|n| skipped_nodes.contains(n)) - { - break; - } - - // if the current node has an edge to any node that is being skipped, skip the current - // this will ensure that we skip invalid branches entirely - // note: order of nodes in contains_edge is important since we are using a directed - // graph - if skipped_nodes - .iter() - .any(|n| self.node_graph.contains_edge(*n, nx)) - { - skipped_nodes.push(nx); - continue; - } - - if self.node_graph[nx].location.is_some() - && self.node_graph[nx].location.unwrap() > self.current_location() - { - // if the node has a location and it is after the current location, add it to the list of skipped nodes and continue - skipped_nodes.push(nx); - continue; - } - - // check if the node has a property that is the current token - let prop_idx = self.node_properties_position(nx); - - if prop_idx.is_some() { - possible_nodes.push((nx, prop_idx)); - if target_depth.is_none() { - target_depth = Some(self.node_graph[nx].depth); - } - } else if self.node_graph[nx].location.is_some() - && self.node_graph[nx].location.unwrap() == self.current_location() - { - // check if the location of the node is the current location - // do a depth-first search to find the first node that either has a location that - // is not the current one, or has the current token as a property - let mut dfs = Dfs::new(&self.node_graph, nx); - let mut target_nx = nx; - while let Some(node_idx) = dfs.next(&self.node_graph) { - if self.node_graph[node_idx].location.is_some() - && self.node_graph[node_idx].location.unwrap() != self.current_location() - { - break; - } - - target_nx = node_idx; - - if self.node_properties_position(node_idx).is_some() { - break; - } - } - return Some((target_nx, self.node_properties_position(target_nx))); - } - } - - if possible_nodes.len() == 1 { - Some(possible_nodes[0]) - } else if possible_nodes.len() > 1 { - // FIXME: I dont think that just using the one with the smallest index will always work - // because the order of the nodes in the graph is not deterministic - // we should instead figure out which one is the correct node based on future - // tokens - possible_nodes.into_iter().min_by_key(|x| x.0) - } else { - None - } - } - - /// finish current node while it is an open leaf node with no properties and either no location - /// or a location that is before the current location - fn finish_open_leaf_nodes(&mut self) { - while self.open_nodes.len() > 1 - && self - .node_graph - .neighbors_directed(self.current_node, Direction::Outgoing) - .count() - == 0 - { - // check if the node contains properties that are not at all in the part of the token stream that is not yet consumed and remove them - if !self.node_graph[self.current_node].properties.is_empty() { - // if there is any property left it must be next in the token stream because we are at a - // leaf node. We can thereby reduce the search space to the next n non-whitespace token - // where n is the number of remaining properties of the current node - let num_of_properties = self.node_graph[self.current_node].properties.len(); - self.node_graph[self.current_node].properties.retain(|p| { - let mut idx = 0; - let mut left_pull = 0; - while idx < num_of_properties + left_pull { - let token = self.parser.nth(idx, true); - if token.kind == SyntaxKind::Eof { - break; - } - if cmp_tokens(p, token) { - return true; - } - // FIXME: we also need to skip non-whitespace tokens such as "(" or ")", but - // not all (e.g. Ident is also a non-whitespace token with type NoKeyword) - // for now, we just do one more iteration if the token has a length == 1 - // can be improved by comparing against a list - if token.text.len() == 1 { - left_pull += 1; - } - idx += 1; - } - false - }); - } - - if !self.node_graph[self.current_node].properties.is_empty() { - break; - } - - self.finish_node(); - if self.open_nodes.is_empty() { - break; - } - self.current_node = *self.open_nodes.last().unwrap(); - } - } - - fn has_children(&self, idx: &NodeIndex) -> bool { - self.node_graph - .neighbors_directed(*idx, Direction::Outgoing) - .count() - > 0 - } - - fn ancestors(&self, from: Option>) -> Ancestors { - Ancestors { - graph: &self.node_graph, - current_node: from.unwrap_or(self.current_node), - } - } - - fn node_is_open(&self, idx: &NodeIndex) -> bool { - self.open_nodes.contains(idx) - } - - fn finish_nodes_until_depth(&mut self, until: usize) { - while self.parser.depth > until { - self.finish_node(); - } - } - - fn finish_node(&mut self) { - let node_to_remove = self.open_nodes.pop().unwrap(); - assert_eq!( - self.node_graph[node_to_remove].depth, - self.parser.depth - 1, - "Tried to finish node with depth {} but parser depth is {}", - self.node_graph[node_to_remove].depth, - self.parser.depth - ); - self.node_graph.remove_node(node_to_remove); - self.parser.finish_node(); - } - - fn remove_property(&mut self, node_idx: NodeIndex, idx: usize) { - self.node_graph[node_idx].properties.remove(idx); - } - - fn start_node(&mut self, idx: NodeIndex) { - assert_eq!( - self.node_graph[idx].depth, self.parser.depth, - "Tried to start node with depth {} but parser depth is {}", - self.node_graph[idx].depth, self.parser.depth - ); - if self.node_graph[idx].location.is_some() { - assert_eq!( - self.node_graph[idx].location.unwrap(), - self.current_location(), - "Tried to start node {:#?} with location {} but current location is {}", - self.node_graph[idx], - self.node_graph[idx].location.unwrap(), - self.current_location() - ); - } - self.parser.start_node(self.node_graph[idx].inner.clone()); - self.open_nodes.push(idx); - } - - fn current_location(&self) -> usize { - usize::from( - self.current_token().span.start() - - self.parser.tokens[self.parser.token_range().start] - .span - .start(), - ) - } - - fn current_token(&self) -> &Token { - self.parser.tokens.get(self.parser.pos).unwrap() - } - - fn at_skippable(&self) -> bool { - SKIPPABLE_TOKENS.contains(&self.current_token().kind) - } - - fn at_whitespace(&self) -> bool { - self.current_token().token_type == TokenType::Whitespace - } - - fn node_properties_position(&self, idx: NodeIndex) -> Option { - self.node_graph[idx] - .properties - .iter() - .position(|p| cmp_tokens(p, self.current_token())) - } -} - -/// list of aliases from https://www.postgresql.org/docs/current/datatype.html -/// NOTE: support for multi-word alias (e.g. time with time zone) requires parser change -const ALIASES: [&[&str]; 10] = [ - &["bigint", "int8"], - &["bigserial", "serial8"], - &["boolean", "bool"], - &["character", "char"], - &["integer", "int", "int4"], - &["numeric", "decimal"], - &["real", "float4"], - &["smallint", "int2"], - &["smallserial", "serial2"], - &["serial", "serial4"], -]; - -fn cmp_tokens(p: &TokenProperty, token: &Token) -> bool { - // TokenProperty has always either value or kind set - assert!(p.value.is_some() || p.kind.is_some()); - - // TODO: move this to lexer - // we should also move alias handling to the lexer - - // remove enclosing ' quotes from token text - let string_delimiter: &[char; 3] = &['\'', '$', '\"']; - let token_text = token - .text - .trim_start_matches(string_delimiter) - .trim_end_matches(string_delimiter) - .to_string() - .to_lowercase(); - let token_text_values = aliases(&token_text); - - (p.value.is_none() || token_text_values.contains(&p.value.as_ref().unwrap().as_str())) - && (p.kind.is_none() || p.kind.unwrap() == token.kind) -} - -/// returns a list of aliases for a string. primarily used for data types. -fn aliases(text: &str) -> Vec<&str> { - for alias in ALIASES { - if alias.contains(&text) { - return alias.to_vec(); - } - } - vec![text] -} - -/// Custom iterator for walking ancestors of a node until the root of the tree is reached -struct Ancestors<'a> { - graph: &'a StableGraph, - current_node: NodeIndex, -} - -impl Iterator for Ancestors<'_> { - type Item = NodeIndex; - - fn next(&mut self) -> Option { - let parent = self - .graph - .neighbors_directed(self.current_node, petgraph::Direction::Incoming) - .next(); - if let Some(parent_node) = parent { - self.current_node = parent_node; - Some(parent_node) - } else { - None - } - } -} diff --git a/crates/pg_syntax/src/syntax_builder.rs b/crates/pg_syntax/src/syntax_builder.rs deleted file mode 100644 index 8d309196..00000000 --- a/crates/pg_syntax/src/syntax_builder.rs +++ /dev/null @@ -1,59 +0,0 @@ -use cstree::build::GreenNodeBuilder; - -use crate::cst::SyntaxNode; -use crate::parser::{EventSink, ParserEvent}; - -use pg_lexer::SyntaxKind; - -use super::ast::{builder::AstBuilder, AST}; -use super::cst::CST; - -#[derive(Debug)] -pub struct Syntax { - /// The abstract syntax tree with resolved ranges for each node - pub ast: AST, - /// The concrete syntax tree - pub cst: CST, -} - -pub(super) struct SyntaxBuilder { - ast_builder: AstBuilder, - cst_builder: GreenNodeBuilder<'static, 'static, SyntaxKind>, -} - -impl SyntaxBuilder { - pub fn new() -> Self { - Self { - ast_builder: AstBuilder::new(), - cst_builder: GreenNodeBuilder::new(), - } - } - - pub fn finish(self) -> Syntax { - let (tree, cache) = self.cst_builder.finish(); - let ast = self.ast_builder.finish(); - Syntax { - cst: SyntaxNode::new_root_with_resolver(tree, cache.unwrap().into_interner().unwrap()), - ast, - } - } -} - -impl EventSink for SyntaxBuilder { - fn push(&mut self, event: ParserEvent) { - match event { - ParserEvent::StartNode(node) => { - self.cst_builder.start_node(SyntaxKind::from(&node)); - self.ast_builder.start_node(node); - } - ParserEvent::FinishNode => { - self.cst_builder.finish_node(); - self.ast_builder.finish_node(); - } - ParserEvent::Token(token) => { - self.cst_builder.token(token.kind, token.text.as_str()); - self.ast_builder.token(token.text.as_str()); - } - } - } -} diff --git a/crates/pg_syntax/tests/data/0001.sql b/crates/pg_syntax/tests/data/0001.sql deleted file mode 100644 index 831b69ab..00000000 --- a/crates/pg_syntax/tests/data/0001.sql +++ /dev/null @@ -1,3 +0,0 @@ -SELECT city, count(*) FILTER (WHERE temp_lo < 45), max(temp_lo) - FROM weather - GROUP BY city; diff --git a/crates/pg_syntax/tests/data/0002.sql b/crates/pg_syntax/tests/data/0002.sql deleted file mode 100644 index 938d1e40..00000000 --- a/crates/pg_syntax/tests/data/0002.sql +++ /dev/null @@ -1 +0,0 @@ -COPY weather FROM '/home/user/weather.txt'; diff --git a/crates/pg_syntax/tests/data/0003.sql b/crates/pg_syntax/tests/data/0003.sql deleted file mode 100644 index 0ac47170..00000000 --- a/crates/pg_syntax/tests/data/0003.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE TABLE weather ( - city varchar(80) references cities(name), - temp_lo int, - temp_hi int, - prcp real, - date date -); diff --git a/crates/pg_syntax/tests/data/0004.sql b/crates/pg_syntax/tests/data/0004.sql deleted file mode 100644 index dc8470e6..00000000 --- a/crates/pg_syntax/tests/data/0004.sql +++ /dev/null @@ -1,4 +0,0 @@ -CREATE VIEW myview AS - SELECT name, location - FROM weather, cities - WHERE city = name; diff --git a/crates/pg_syntax/tests/data/0005.sql b/crates/pg_syntax/tests/data/0005.sql deleted file mode 100644 index 136067af..00000000 --- a/crates/pg_syntax/tests/data/0005.sql +++ /dev/null @@ -1 +0,0 @@ -DELETE FROM weather WHERE city = 'Hayward'; diff --git a/crates/pg_syntax/tests/data/0006.sql b/crates/pg_syntax/tests/data/0006.sql deleted file mode 100644 index 664437a4..00000000 --- a/crates/pg_syntax/tests/data/0006.sql +++ /dev/null @@ -1 +0,0 @@ -DROP TABLE tablename; diff --git a/crates/pg_syntax/tests/data/0007.sql b/crates/pg_syntax/tests/data/0007.sql deleted file mode 100644 index f0e8fc3d..00000000 --- a/crates/pg_syntax/tests/data/0007.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE TABLE cities ( - name text, - population real, - elevation int -- (in ft) -); - diff --git a/crates/pg_syntax/tests/data/0008.sql b/crates/pg_syntax/tests/data/0008.sql deleted file mode 100644 index 308d8d2c..00000000 --- a/crates/pg_syntax/tests/data/0008.sql +++ /dev/null @@ -1,2 +0,0 @@ -INSERT INTO weather (date, city, temp_hi, temp_lo) - VALUES ('1994-11-29', 'Hayward', 54, 37); diff --git a/crates/pg_syntax/tests/data/0009.sql b/crates/pg_syntax/tests/data/0009.sql deleted file mode 100644 index d631c061..00000000 --- a/crates/pg_syntax/tests/data/0009.sql +++ /dev/null @@ -1,4 +0,0 @@ -SELECT w1.city, w1.temp_lo AS low, w1.temp_hi AS high, - w2.city, w2.temp_lo AS low, w2.temp_hi AS high - FROM weather w1 JOIN weather w2 - ON w1.temp_lo < w2.temp_lo AND w1.temp_hi > w2.temp_hi; diff --git a/crates/pg_syntax/tests/data/0010.sql b/crates/pg_syntax/tests/data/0010.sql deleted file mode 100644 index 97d05a75..00000000 --- a/crates/pg_syntax/tests/data/0010.sql +++ /dev/null @@ -1 +0,0 @@ -INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27'); diff --git a/crates/pg_syntax/tests/data/0011.sql b/crates/pg_syntax/tests/data/0011.sql deleted file mode 100644 index f1b088ca..00000000 --- a/crates/pg_syntax/tests/data/0011.sql +++ /dev/null @@ -1,3 +0,0 @@ -SELECT DISTINCT city - FROM weather - ORDER BY city; diff --git a/crates/pg_syntax/tests/data/0012.sql b/crates/pg_syntax/tests/data/0012.sql deleted file mode 100644 index 15073751..00000000 --- a/crates/pg_syntax/tests/data/0012.sql +++ /dev/null @@ -1,4 +0,0 @@ -CREATE TABLE measurement_y2008m01 PARTITION OF measurement - FOR VALUES FROM ('2008-01-01') TO ('2008-02-01') - WITH (parallel_workers = 4) - TABLESPACE fasttablespace; diff --git a/crates/pg_syntax/tests/data/0013.sql b/crates/pg_syntax/tests/data/0013.sql deleted file mode 100644 index 24154690..00000000 --- a/crates/pg_syntax/tests/data/0013.sql +++ /dev/null @@ -1,3 +0,0 @@ -UPDATE weather - SET temp_hi = temp_hi - 2, temp_lo = temp_lo - 2 - WHERE date > '1994-11-28'; diff --git a/crates/pg_syntax/tests/data/0014.sql b/crates/pg_syntax/tests/data/0014.sql deleted file mode 100644 index aafd6fab..00000000 --- a/crates/pg_syntax/tests/data/0014.sql +++ /dev/null @@ -1,3 +0,0 @@ -SELECT sum(salary) OVER w, avg(salary) OVER w - FROM empsalary - WINDOW w AS (PARTITION BY depname ORDER BY salary DESC); diff --git a/crates/pg_syntax/tests/data/0015.sql b/crates/pg_syntax/tests/data/0015.sql deleted file mode 100644 index 62866cad..00000000 --- a/crates/pg_syntax/tests/data/0015.sql +++ /dev/null @@ -1,4 +0,0 @@ -SELECT - count(*) AS unfiltered, - count(*) FILTER (WHERE i < 5) AS filtered -FROM generate_series(1,10) AS s(i); diff --git a/crates/pg_syntax/tests/data/0016.sql b/crates/pg_syntax/tests/data/0016.sql deleted file mode 100644 index 4d7ce856..00000000 --- a/crates/pg_syntax/tests/data/0016.sql +++ /dev/null @@ -1 +0,0 @@ -SELECT * FROM tbl WHERE a COLLATE "C" > 'foo'; diff --git a/crates/pg_syntax/tests/data/0017.sql b/crates/pg_syntax/tests/data/0017.sql deleted file mode 100644 index f9d7b1f0..00000000 --- a/crates/pg_syntax/tests/data/0017.sql +++ /dev/null @@ -1,2 +0,0 @@ -SELECT name, (SELECT max(pop) FROM cities WHERE cities.state = states.name) - FROM states; diff --git a/crates/pg_syntax/tests/data/0018.sql b/crates/pg_syntax/tests/data/0018.sql deleted file mode 100644 index 9ab1949a..00000000 --- a/crates/pg_syntax/tests/data/0018.sql +++ /dev/null @@ -1 +0,0 @@ -SELECT ARRAY[1,2,22.7]::integer[]; diff --git a/crates/pg_syntax/tests/data/0019.sql b/crates/pg_syntax/tests/data/0019.sql deleted file mode 100644 index 822511cf..00000000 --- a/crates/pg_syntax/tests/data/0019.sql +++ /dev/null @@ -1,4 +0,0 @@ -SELECT CASE WHEN min(employees) > 0 - THEN avg(expenses / employees) - END - FROM departments; diff --git a/crates/pg_syntax/tests/data/0020.sql b/crates/pg_syntax/tests/data/0020.sql deleted file mode 100644 index 989af6c2..00000000 --- a/crates/pg_syntax/tests/data/0020.sql +++ /dev/null @@ -1,10 +0,0 @@ -CREATE FUNCTION concat_lower_or_upper(a text, b text, uppercase boolean DEFAULT false) -RETURNS text -AS -$$ - SELECT CASE - WHEN $3 THEN UPPER($1 || ' ' || $2) - ELSE LOWER($1 || ' ' || $2) - END; -$$ -LANGUAGE SQL IMMUTABLE STRICT; diff --git a/crates/pg_syntax/tests/data/0021.sql b/crates/pg_syntax/tests/data/0021.sql deleted file mode 100644 index 155b7f48..00000000 --- a/crates/pg_syntax/tests/data/0021.sql +++ /dev/null @@ -1 +0,0 @@ -SELECT concat_lower_or_upper(a => 'Hello', b => 'World', uppercase => true); diff --git a/crates/pg_syntax/tests/data/0022.sql b/crates/pg_syntax/tests/data/0022.sql deleted file mode 100644 index f4cf2e26..00000000 --- a/crates/pg_syntax/tests/data/0022.sql +++ /dev/null @@ -1,5 +0,0 @@ -CREATE TABLE products ( - product_no integer, - name text, - price numeric DEFAULT 9.99 -); diff --git a/crates/pg_syntax/tests/data/0023.sql b/crates/pg_syntax/tests/data/0023.sql deleted file mode 100644 index 908e3839..00000000 --- a/crates/pg_syntax/tests/data/0023.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE TABLE products ( - product_no integer, - name text, - price numeric CHECK (price > 0), - discounted_price numeric CHECK (discounted_price > 0), - CHECK (price > discounted_price) -); diff --git a/crates/pg_syntax/tests/data/0024.sql b/crates/pg_syntax/tests/data/0024.sql deleted file mode 100644 index 0a97d2bd..00000000 --- a/crates/pg_syntax/tests/data/0024.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE TABLE order_items ( - product_no integer REFERENCES products, - order_id integer REFERENCES orders, - quantity integer, - PRIMARY KEY (product_no, order_id) -); diff --git a/crates/pg_syntax/tests/data/0025.sql b/crates/pg_syntax/tests/data/0025.sql deleted file mode 100644 index a4872682..00000000 --- a/crates/pg_syntax/tests/data/0025.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE products ADD CHECK (name <> ''); diff --git a/crates/pg_syntax/tests/data/0026.sql b/crates/pg_syntax/tests/data/0026.sql deleted file mode 100644 index fc18e84d..00000000 --- a/crates/pg_syntax/tests/data/0026.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE products ALTER COLUMN price TYPE numeric(10,2); diff --git a/crates/pg_syntax/tests/data/0027.sql b/crates/pg_syntax/tests/data/0027.sql deleted file mode 100644 index 8b7e3047..00000000 --- a/crates/pg_syntax/tests/data/0027.sql +++ /dev/null @@ -1 +0,0 @@ -GRANT UPDATE ON accounts TO joe; diff --git a/crates/pg_syntax/tests/data/0028.sql b/crates/pg_syntax/tests/data/0028.sql deleted file mode 100644 index 03fc8b91..00000000 --- a/crates/pg_syntax/tests/data/0028.sql +++ /dev/null @@ -1 +0,0 @@ -REVOKE ALL ON accounts FROM PUBLIC; diff --git a/crates/pg_syntax/tests/data/0029.sql b/crates/pg_syntax/tests/data/0029.sql deleted file mode 100644 index 9612a088..00000000 --- a/crates/pg_syntax/tests/data/0029.sql +++ /dev/null @@ -1 +0,0 @@ -GRANT SELECT (col1), UPDATE (col1) ON mytable TO miriam_rw; diff --git a/crates/pg_syntax/tests/data/0030.sql b/crates/pg_syntax/tests/data/0030.sql deleted file mode 100644 index 7a333a33..00000000 --- a/crates/pg_syntax/tests/data/0030.sql +++ /dev/null @@ -1,2 +0,0 @@ -CREATE POLICY account_managers ON accounts TO managers - USING (manager = current_user); diff --git a/crates/pg_syntax/tests/data/0031.sql b/crates/pg_syntax/tests/data/0031.sql deleted file mode 100644 index cdbb7b20..00000000 --- a/crates/pg_syntax/tests/data/0031.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE POLICY user_mod ON passwd FOR UPDATE - USING (current_user = user_name) - WITH CHECK ( - current_user = user_name AND - shell IN ('/bin/bash','/bin/sh','/bin/dash','/bin/zsh','/bin/tcsh') - ); diff --git a/crates/pg_syntax/tests/data/0032.sql b/crates/pg_syntax/tests/data/0032.sql deleted file mode 100644 index 6d28c679..00000000 --- a/crates/pg_syntax/tests/data/0032.sql +++ /dev/null @@ -1 +0,0 @@ -SET search_path TO myschema,public; diff --git a/crates/pg_syntax/tests/data/0034.sql b/crates/pg_syntax/tests/data/0034.sql deleted file mode 100644 index 2e4bf534..00000000 --- a/crates/pg_syntax/tests/data/0034.sql +++ /dev/null @@ -1 +0,0 @@ -select *,some_col from contact where id = '123 4 5'; diff --git a/crates/pg_syntax/tests/data/0035.sql b/crates/pg_syntax/tests/data/0035.sql deleted file mode 100644 index 2e4bf534..00000000 --- a/crates/pg_syntax/tests/data/0035.sql +++ /dev/null @@ -1 +0,0 @@ -select *,some_col from contact where id = '123 4 5'; diff --git a/crates/pg_syntax/tests/data/0036.sql b/crates/pg_syntax/tests/data/0036.sql deleted file mode 100644 index fd9214ce..00000000 --- a/crates/pg_syntax/tests/data/0036.sql +++ /dev/null @@ -1,3 +0,0 @@ -CREATE FUNCTION dup(in int, out f1 int, out f2 text) - AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$ - LANGUAGE SQL; diff --git a/crates/pg_syntax/tests/data/0037.sql b/crates/pg_syntax/tests/data/0037.sql deleted file mode 100644 index 2995010d..00000000 --- a/crates/pg_syntax/tests/data/0037.sql +++ /dev/null @@ -1 +0,0 @@ -CREATE TYPE bug_status AS ENUM ('new', 'open', 'closed'); diff --git a/crates/pg_syntax/tests/data/0038.sql b/crates/pg_syntax/tests/data/0038.sql deleted file mode 100644 index 2f71d191..00000000 --- a/crates/pg_syntax/tests/data/0038.sql +++ /dev/null @@ -1,3 +0,0 @@ -CREATE CAST (bigint AS int4) WITH FUNCTION int4(bigint) AS ASSIGNMENT; -CREATE CAST (bigint AS int4) WITHOUT FUNCTION AS IMPLICIT; -CREATE CAST (bigint AS int4) WITH INOUT AS ASSIGNMENT; diff --git a/crates/pg_syntax/tests/data/0039.sql b/crates/pg_syntax/tests/data/0039.sql deleted file mode 100644 index 91ad4381..00000000 --- a/crates/pg_syntax/tests/data/0039.sql +++ /dev/null @@ -1,10 +0,0 @@ -CREATE AGGREGATE aggregate1 (int4) (sfunc = sfunc1, stype = stype1); -CREATE AGGREGATE aggregate1 (int4, bool) (sfunc = sfunc1, stype = stype1); -CREATE AGGREGATE aggregate1 (*) (sfunc = sfunc1, stype = stype1); -CREATE AGGREGATE aggregate1 (int4) (sfunc = sfunc1, stype = stype1, finalfunc_extra, mfinalfuncextra); -CREATE AGGREGATE aggregate1 (int4) (sfunc = sfunc1, stype = stype1, finalfunc_modify = read_only, parallel = restricted); -CREATE AGGREGATE percentile_disc (float8 ORDER BY anyelement) (sfunc = ordered_set_transition, stype = internal, finalfunc = percentile_disc_final, finalfunc_extra); -CREATE AGGREGATE custom_aggregate (float8 ORDER BY column1, column2) (sfunc = sfunc1, stype = stype1); - - - diff --git a/crates/pg_syntax/tests/data/0040.sql b/crates/pg_syntax/tests/data/0040.sql deleted file mode 100644 index eb55006c..00000000 --- a/crates/pg_syntax/tests/data/0040.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \"users\" WHERE users.id = $1;$$ LANGUAGE sql; -CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \"users\" WHERE users.id = $1;$$ LANGUAGE sql; -CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \"users\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE; -CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \"users\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE STRICT; -CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \"users\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE RETURNS NULL ON NULL INPUT; -CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \"users\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE CALLED ON NULL INPUT; -CREATE OR REPLACE FUNCTION getfoo() RETURNS text AS $$SELECT name FROM \"users\" LIMIT 1$$ LANGUAGE sql IMMUTABLE CALLED ON NULL INPUT; diff --git a/crates/pg_syntax/tests/data/0041.sql b/crates/pg_syntax/tests/data/0041.sql deleted file mode 100644 index 4d2b6155..00000000 --- a/crates/pg_syntax/tests/data/0041.sql +++ /dev/null @@ -1,4 +0,0 @@ -CREATE SCHEMA myschema; -CREATE SCHEMA AUTHORIZATION joe; -CREATE SCHEMA IF NOT EXISTS test AUTHORIZATION joe; -CREATE SCHEMA hollywood CREATE TABLE films (title text, release date, awards text[]) CREATE VIEW winners AS SELECT title, release FROM films WHERE awards IS NOT NULL; diff --git a/crates/pg_syntax/tests/data/0042.sql b/crates/pg_syntax/tests/data/0042.sql deleted file mode 100644 index 2f922867..00000000 --- a/crates/pg_syntax/tests/data/0042.sql +++ /dev/null @@ -1 +0,0 @@ -CREATE DOMAIN us_postal_code AS TEXT CHECK(VALUE ~ '^\d{5}$' OR VALUE ~ '^\d{5}-\d{4}$'); diff --git a/crates/pg_syntax/tests/data/0043.sql b/crates/pg_syntax/tests/data/0043.sql deleted file mode 100644 index 768611b4..00000000 --- a/crates/pg_syntax/tests/data/0043.sql +++ /dev/null @@ -1,11 +0,0 @@ -CREATE UNLOGGED TABLE cities (name text, population real, altitude double, identifier smallint, postal_code int, foreign_id bigint); -CREATE TABLE IF NOT EXISTS distributors (name varchar(40) DEFAULT 'Luso Films', len interval hour to second(3), name varchar(40) DEFAULT 'Luso Films', did int DEFAULT nextval('distributors_serial'), stamp timestamp DEFAULT now() NOT NULL, stamptz timestamp with time zone, "time" time NOT NULL, timetz time with time zone, CONSTRAINT name_len PRIMARY KEY (name, len)); -CREATE TABLE types (a real, b double precision, c numeric(2, 3), d char(4), e char(5), f varchar(6), g varchar(7)); -CREATE TABLE types (a geometry(point) NOT NULL); -CREATE TABLE tablename (colname int NOT NULL DEFAULT nextval('tablename_colname_seq')); -CREATE TABLE capitals (state char(2)) INHERITS (cities); -CREATE TEMPORARY TABLE temp AS SELECT c FROM t; -CREATE TABLE films2 AS SELECT * FROM films; -CREATE TEMPORARY TABLE films_recent ON COMMIT DROP AS SELECT * FROM films WHERE date_prod > $1; -CREATE TABLE like_constraint_rename_cache (LIKE constraint_rename_cache INCLUDING ALL); -CREATE TABLE distributors (did int, name varchar(40), UNIQUE (name) WITH (fillfactor=70)) WITH (fillfactor=70); diff --git a/crates/pg_syntax/tests/data/0044.sql b/crates/pg_syntax/tests/data/0044.sql deleted file mode 100644 index 68998681..00000000 --- a/crates/pg_syntax/tests/data/0044.sql +++ /dev/null @@ -1,4 +0,0 @@ -CREATE VIEW comedies AS SELECT * FROM films WHERE kind = 'Comedy'; -CREATE VIEW universal_comedies AS SELECT * FROM comedies WHERE classification = 'U' WITH LOCAL CHECK OPTION; -CREATE VIEW pg_comedies AS SELECT * FROM comedies WHERE classification = 'PG' WITH CASCADED CHECK OPTION; -CREATE VIEW comedies AS SELECT f.*, country_code_to_name(f.country_code) AS country, (SELECT avg(r.rating) FROM user_ratings r WHERE r.film_id = f.id) AS avg_rating FROM films f WHERE f.kind = 'Comedy'; diff --git a/crates/pg_syntax/tests/data/0046.sql b/crates/pg_syntax/tests/data/0046.sql deleted file mode 100644 index e5c40295..00000000 --- a/crates/pg_syntax/tests/data/0046.sql +++ /dev/null @@ -1,8 +0,0 @@ -CREATE TYPE type1; -CREATE TYPE type1 AS (attr1 int4, attr2 bool); -/* TODO: CREATE TYPE type1 AS (attr1 int4 COLLATE collation1, attr2 bool); */ SELECT 1; -CREATE TYPE type1 AS ENUM ('value1', 'value2', 'value3'); -CREATE TYPE type1 AS RANGE (subtype = int4); -CREATE TYPE type1 AS RANGE (subtype = int4, receive = receive_func, passedbyvalue); -CREATE TYPE type1 (input = input1, output = output1); -CREATE TYPE type1 (input = input1, output = output1, passedbyvalue); diff --git a/crates/pg_syntax/tests/data/0047.sql b/crates/pg_syntax/tests/data/0047.sql deleted file mode 100644 index 843ea285..00000000 --- a/crates/pg_syntax/tests/data/0047.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE DATABASE x OWNER abc CONNECTION LIMIT 5; -CREATE DATABASE x ENCODING "SQL_ASCII"; -CREATE DATABASE x LC_COLLATE "en_US.UTF-8"; -CREATE DATABASE x LOCATION DEFAULT; -CREATE DATABASE x TABLESPACE abc; -CREATE DATABASE x TEMPLATE TRUE; diff --git a/crates/pg_syntax/tests/data/0048.sql b/crates/pg_syntax/tests/data/0048.sql deleted file mode 100644 index 4d0e2ec2..00000000 --- a/crates/pg_syntax/tests/data/0048.sql +++ /dev/null @@ -1,2 +0,0 @@ -CREATE TABLESPACE x LOCATION 'a'; -CREATE TABLESPACE x OWNER a LOCATION 'b' WITH (random_page_cost=42, seq_page_cost=3); diff --git a/crates/pg_syntax/tests/data/0049.sql b/crates/pg_syntax/tests/data/0049.sql deleted file mode 100644 index f6fb52c3..00000000 --- a/crates/pg_syntax/tests/data/0049.sql +++ /dev/null @@ -1,2 +0,0 @@ -CREATE EXTENSION x; -CREATE EXTENSION IF NOT EXISTS x CASCADE VERSION "1.2" SCHEMA a; diff --git a/crates/pg_syntax/tests/data/0051.sql b/crates/pg_syntax/tests/data/0051.sql deleted file mode 100644 index 411966ce..00000000 --- a/crates/pg_syntax/tests/data/0051.sql +++ /dev/null @@ -1,11 +0,0 @@ -CREATE UNIQUE INDEX title_idx ON films (title); -CREATE UNIQUE INDEX title_idx ON films (title) INCLUDE (director, rating); -CREATE INDEX title_idx ON films (title) WITH (deduplicate_items = off); -CREATE INDEX ON films ((lower(title))); -CREATE INDEX title_idx_german ON films (title COLLATE "de_DE"); -CREATE INDEX title_idx_nulls_low ON films (title NULLS FIRST); -CREATE UNIQUE INDEX title_idx ON films (title) WITH (fillfactor = 70); -CREATE INDEX gin_idx ON documents_table USING GIN (locations) WITH (fastupdate = off); -CREATE INDEX code_idx ON films (code) TABLESPACE indexspace; -CREATE INDEX pointloc ON points USING gist (box(location,location)); -CREATE INDEX CONCURRENTLY sales_quantity_index ON sales_table (quantity); diff --git a/crates/pg_syntax/tests/data/0052.sql b/crates/pg_syntax/tests/data/0052.sql deleted file mode 100644 index 9c09065a..00000000 --- a/crates/pg_syntax/tests/data/0052.sql +++ /dev/null @@ -1,2 +0,0 @@ -CREATE PROCEDURE insert_data(a integer, b integer) LANGUAGE SQL AS $$INSERT INTO tbl VALUES (a); INSERT INTO tbl VALUES (b);$$; -CREATE PROCEDURE insert_data(a integer, b integer) LANGUAGE SQL BEGIN ATOMIC INSERT INTO tbl VALUES (a); INSERT INTO tbl VALUES (b); END; diff --git a/crates/pg_syntax/tests/data/0053.sql b/crates/pg_syntax/tests/data/0053.sql deleted file mode 100644 index 52be0e41..00000000 --- a/crates/pg_syntax/tests/data/0053.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE PUBLICATION mypublication FOR TABLE users, departments; -CREATE PUBLICATION active_departments FOR TABLE departments WHERE (active IS TRUE); -CREATE PUBLICATION alltables FOR ALL TABLES; -CREATE PUBLICATION insert_only FOR TABLE mydata WITH (publish = 'insert'); -CREATE PUBLICATION production_publication FOR TABLE users, departments, TABLES IN SCHEMA production; -CREATE PUBLICATION sales_publication FOR TABLES IN SCHEMA marketing, sales; -CREATE PUBLICATION users_filtered FOR TABLE users (user_id, firstname); diff --git a/crates/pg_syntax/tests/data/0054.sql b/crates/pg_syntax/tests/data/0054.sql deleted file mode 100644 index 4afd7bf2..00000000 --- a/crates/pg_syntax/tests/data/0054.sql +++ /dev/null @@ -1,2 +0,0 @@ -CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc; -CREATE DEFAULT CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc; diff --git a/crates/pg_syntax/tests/data/0055.sql b/crates/pg_syntax/tests/data/0055.sql deleted file mode 100644 index 6f05a39b..00000000 --- a/crates/pg_syntax/tests/data/0055.sql +++ /dev/null @@ -1,2 +0,0 @@ -select 1 union all select 2; -select 1 union select 2; diff --git a/crates/pg_syntax/tests/data/0056.sql b/crates/pg_syntax/tests/data/0056.sql deleted file mode 100644 index 5149bc20..00000000 --- a/crates/pg_syntax/tests/data/0056.sql +++ /dev/null @@ -1,9 +0,0 @@ -CREATE TRANSFORM FOR hstore LANGUAGE plpython3u ( - FROM SQL WITH FUNCTION hstore_to_plpython(internal), - TO SQL WITH FUNCTION plpython_to_hstore(internal) -); - -CREATE OR REPLACE TRANSFORM FOR hstore LANGUAGE plpython3u ( - FROM SQL WITH FUNCTION hstore_to_plpython(internal), - TO SQL WITH FUNCTION plpython_to_hstore(internal) -); diff --git a/crates/pg_syntax/tests/data/0057.sql b/crates/pg_syntax/tests/data/0057.sql deleted file mode 100644 index 12906a21..00000000 --- a/crates/pg_syntax/tests/data/0057.sql +++ /dev/null @@ -1,11 +0,0 @@ -TRUNCATE users CONTINUE IDENTITY RESTRICT; - -TRUNCATE TABLE users RESTART IDENTITY CASCADE; - -TRUNCATE users; - -TRUNCATE accounts CASCADE; - -TRUNCATE accounts RESTRICT; - -TRUNCATE TABLE users; \ No newline at end of file diff --git a/crates/pg_syntax/tests/pg_syntax_tests.rs b/crates/pg_syntax/tests/pg_syntax_tests.rs deleted file mode 100644 index ab02915a..00000000 --- a/crates/pg_syntax/tests/pg_syntax_tests.rs +++ /dev/null @@ -1,66 +0,0 @@ -use insta::{assert_debug_snapshot, Settings}; -use pg_query::split_with_parser; -use std::{ - fs::{self}, - panic, -}; - -const VALID_STATEMENTS_PATH: &str = "tests/data/"; -const POSTGRES_REGRESS_PATH: &str = "../../libpg_query/test/sql/postgres_regress/"; -const SKIPPED_REGRESS_TESTS: &str = include_str!("skipped.txt"); - -const REGRESSION_SNAPSHOTS_PATH: &str = "snapshots/postgres_regress"; -const SNAPSHOTS_PATH: &str = "snapshots/data"; - -#[test] -fn valid_statements() { - // dont do postgres regress tests for now - let skipped_tests: Vec<_> = SKIPPED_REGRESS_TESTS.lines().collect(); - - for path in [VALID_STATEMENTS_PATH] { - let mut paths: Vec<_> = fs::read_dir(path).unwrap().map(|r| r.unwrap()).collect(); - paths.sort_by_key(|dir| dir.path()); - - for f in paths.iter() { - let path = f.path(); - let test_name = path.file_stem().unwrap().to_str().unwrap(); - - if skipped_tests.contains(&test_name) { - continue; - } - - let contents = fs::read_to_string(&path).unwrap(); - - let cases = split_with_parser(&contents).unwrap(); - - for (i, case) in cases.iter().enumerate() { - let case = format!("{};", case.trim()); - - let root = pg_query_ext::parse(&case).unwrap(); - - let result = panic::catch_unwind(|| pg_syntax::parse_syntax(&case, &root)); - - if result.is_err() { - assert!(false, "Failed to parse statement {}:\n{}", test_name, case); - } - - let mut settings = Settings::clone_current(); - settings.set_input_file(&path); - settings.set_prepend_module_to_snapshot(false); - settings.set_description(case.to_string()); - settings.set_omit_expression(true); - let snapshot_path = if path.starts_with(POSTGRES_REGRESS_PATH) { - REGRESSION_SNAPSHOTS_PATH - } else if path.starts_with(VALID_STATEMENTS_PATH) { - SNAPSHOTS_PATH - } else { - panic!("Unknown path: {:?}", path); - }; - settings.set_snapshot_path(snapshot_path); - settings.set_snapshot_suffix((i + 1).to_string()); - - settings.bind(|| assert_debug_snapshot!(test_name, result.unwrap().cst)); - } - } - } -} diff --git a/crates/pg_syntax/tests/skipped.txt b/crates/pg_syntax/tests/skipped.txt deleted file mode 100644 index deb56fa5..00000000 --- a/crates/pg_syntax/tests/skipped.txt +++ /dev/null @@ -1,222 +0,0 @@ -0006 -0013 -0027 -0028 -0029 -0031 -0043 -0046 -0052 -advisory_lock -aggregates -alter_generic -alter_operator -alter_table -amutils -arrays -async -bit -bitmapops -boolean -box -brin -brin_bloom -brin_multi -btree_index -case -char -circle -cluster -collate.icu.utf8 -collate.linux.utf8 -collate -combocid -comments -compression -constraints -conversion -copy -copy2 -copydml -copyselect -create_aggregate -create_am -create_cast -create_function_c -create_function_sql -create_index -create_index_spgist -create_misc -create_operator -create_procedure -create_role -create_table -create_table_like -create_type -create_view -date -dbsize -delete -dependency -domain -drop_if_exists -drop_operator -enum -equivclass -errors -event_trigger -explain -expressions -fast_default -float4 -float8 -foreign_data -foreign_key -functional_deps -generated -geometry -gin -gist -groupingsets -guc -hash_func -hash_index -hash_part -horology -identity -incremental_sort -index_including -index_including_gist -indexing -indirect_toast -inet -infinite_recurse -inherit -init_privs -insert -insert_conflict -int2 -int4 -int8 -interval -join -join_hash -json -json_encoding -jsonb -jsonb_jsonpath -jsonpath -jsonpath_encoding -largeobject -limit -line -lock -lseg -macaddr -macaddr8 -matview -memoize -merge -misc -misc_functions -misc_sanity -money -multirangetypes -mvcc -name -namespace -numeric -numeric_big -numerology -object_address -oid -oidjoins -opr_sanity -partition_aggregate -partition_info -partition_join -partition_prune -password -path -pg_lsn -plancache -plpgsql -point -polygon -polymorphism -portals -portals_p2 -prepare -prepared_xacts -privileges -psql -psql_crosstab -publication -random -rangefuncs -rangetypes -regex -regproc -reindex_catalog -reloptions -replica_identity -returning -roleattributes -rowsecurity -rowtypes -rules -sanity_check -security_label -select -select_distinct -select_distinct_on -select_having -select_implicit -select_into -select_parallel -select_views -sequence -spgist -stats -stats_ext -strings -subscription -subselect -sysviews -tablesample -tablespace -temp -test_setup -text -tid -tidrangescan -tidscan -time -timestamp -timestamptz -timetz -transactions -triggers -truncate -tsdicts -tsearch -tsrf -tstypes -tuplesort -txid -type_sanity -typed_table -unicode -union -updatable_views -update -uuid -vacuum -vacuum_parallel -varchar -window -with -write_parallel -xid -xml -xmlmap diff --git a/crates/pg_syntax/tests/snapshots/data/0001@1.snap b/crates/pg_syntax/tests/snapshots/data/0001@1.snap deleted file mode 100644 index c8a8b631..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0001@1.snap +++ /dev/null @@ -1,58 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "SELECT city, count(*) FILTER (WHERE temp_lo < 45), max(temp_lo)\n FROM weather\n GROUP BY city;" ---- -SelectStmt@0..99 - Select@0..6 "SELECT" - Whitespace@6..7 " " - ResTarget@7..11 - ColumnRef@7..11 - Ident@7..11 "city" - Ascii44@11..12 "," - Whitespace@12..13 " " - ResTarget@13..48 - FuncCall@13..48 - Ident@13..18 "count" - Ascii40@18..19 "(" - Ascii42@19..20 "*" - Ascii41@20..21 ")" - Whitespace@21..22 " " - Filter@22..28 "FILTER" - Whitespace@28..29 " " - Ascii40@29..30 "(" - Where@30..35 "WHERE" - Whitespace@35..36 " " - AExpr@36..48 - ColumnRef@36..43 - Ident@36..43 "temp_lo" - Whitespace@43..44 " " - Ascii60@44..45 "<" - Whitespace@45..46 " " - AConst@46..48 - Iconst@46..48 "45" - Ascii41@48..49 ")" - Ascii44@49..50 "," - Whitespace@50..51 " " - ResTarget@51..62 - FuncCall@51..62 - Ident@51..54 "max" - Ascii40@54..55 "(" - ColumnRef@55..62 - Ident@55..62 "temp_lo" - Ascii41@62..63 ")" - Newline@63..64 "\n" - Whitespace@64..68 " " - From@68..72 "FROM" - Whitespace@72..73 " " - RangeVar@73..80 - Ident@73..80 "weather" - Newline@80..81 "\n" - Whitespace@81..85 " " - GroupP@85..90 "GROUP" - Whitespace@90..91 " " - By@91..93 "BY" - Whitespace@93..94 " " - ColumnRef@94..98 - Ident@94..98 "city" - Ascii59@98..99 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0002@1.snap b/crates/pg_syntax/tests/snapshots/data/0002@1.snap deleted file mode 100644 index a11ec0a5..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0002@1.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "COPY weather FROM '/home/user/weather.txt';" ---- -CopyStmt@0..43 - Copy@0..4 "COPY" - Whitespace@4..5 " " - RangeVar@5..12 - Ident@5..12 "weather" - Whitespace@12..13 " " - From@13..17 "FROM" - Whitespace@17..18 " " - Sconst@18..42 "'/home/user/weather.txt'" - Ascii59@42..43 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0003@1.snap b/crates/pg_syntax/tests/snapshots/data/0003@1.snap deleted file mode 100644 index eff01a03..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0003@1.snap +++ /dev/null @@ -1,69 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TABLE weather (\n city varchar(80) references cities(name),\n temp_lo int,\n temp_hi int,\n prcp real,\n date date\n);" ---- -CreateStmt@0..173 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Table@7..12 "TABLE" - Whitespace@12..13 " " - RangeVar@13..20 - Ident@13..20 "weather" - Whitespace@20..21 " " - Ascii40@21..22 "(" - Newline@22..23 "\n" - Whitespace@23..31 " " - ColumnDef@31..75 - Ident@31..35 "city" - Whitespace@35..41 " " - TypeName@41..51 - Varchar@41..48 "varchar" - Ascii40@48..49 "(" - AConst@49..51 - Iconst@49..51 "80" - Ascii41@51..52 ")" - Whitespace@52..53 " " - Constraint@53..75 - References@53..63 "references" - Whitespace@63..64 " " - RangeVar@64..70 - Ident@64..70 "cities" - Ascii40@70..71 "(" - NameP@71..75 "name" - Ascii41@75..76 ")" - Ascii44@76..77 "," - Newline@77..78 "\n" - Whitespace@78..86 " " - ColumnDef@86..99 - Ident@86..93 "temp_lo" - Whitespace@93..96 " " - TypeName@96..99 - IntP@96..99 "int" - Ascii44@99..100 "," - Newline@100..101 "\n" - Whitespace@101..109 " " - ColumnDef@109..122 - Ident@109..116 "temp_hi" - Whitespace@116..119 " " - TypeName@119..122 - IntP@119..122 "int" - Ascii44@122..123 "," - Newline@123..124 "\n" - Whitespace@124..132 " " - ColumnDef@132..146 - Ident@132..136 "prcp" - Whitespace@136..142 " " - TypeName@142..146 - Real@142..146 "real" - Ascii44@146..147 "," - Newline@147..148 "\n" - Whitespace@148..156 " " - ColumnDef@156..170 - Ident@156..160 "date" - Whitespace@160..166 " " - TypeName@166..170 - Ident@166..170 "date" - Newline@170..171 "\n" - Ascii41@171..172 ")" - Ascii59@172..173 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0004@1.snap b/crates/pg_syntax/tests/snapshots/data/0004@1.snap deleted file mode 100644 index 6c36e8a5..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0004@1.snap +++ /dev/null @@ -1,50 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE VIEW myview AS\n SELECT name, location\n FROM weather, cities\n WHERE city = name;" ---- -ViewStmt@0..103 - Create@0..6 "CREATE" - Whitespace@6..7 " " - View@7..11 "VIEW" - Whitespace@11..12 " " - RangeVar@12..18 - Ident@12..18 "myview" - Whitespace@18..19 " " - As@19..21 "AS" - Newline@21..22 "\n" - Whitespace@22..26 " " - SelectStmt@26..102 - Select@26..32 "SELECT" - Whitespace@32..33 " " - ResTarget@33..37 - ColumnRef@33..37 - NameP@33..37 "name" - Ascii44@37..38 "," - Whitespace@38..39 " " - ResTarget@39..47 - ColumnRef@39..47 - Location@39..47 "location" - Newline@47..48 "\n" - Whitespace@48..56 " " - From@56..60 "FROM" - Whitespace@60..61 " " - RangeVar@61..68 - Ident@61..68 "weather" - Ascii44@68..69 "," - Whitespace@69..70 " " - RangeVar@70..76 - Ident@70..76 "cities" - Newline@76..77 "\n" - Whitespace@77..85 " " - Where@85..90 "WHERE" - Whitespace@90..91 " " - AExpr@91..102 - ColumnRef@91..95 - Ident@91..95 "city" - Whitespace@95..96 " " - Ascii61@96..97 "=" - Whitespace@97..98 " " - ColumnRef@98..102 - NameP@98..102 "name" - Ascii59@102..103 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0005@1.snap b/crates/pg_syntax/tests/snapshots/data/0005@1.snap deleted file mode 100644 index 40e1e15d..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0005@1.snap +++ /dev/null @@ -1,24 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "DELETE FROM weather WHERE city = 'Hayward';" ---- -DeleteStmt@0..43 - DeleteP@0..6 "DELETE" - Whitespace@6..7 " " - From@7..11 "FROM" - Whitespace@11..12 " " - RangeVar@12..19 - Ident@12..19 "weather" - Whitespace@19..20 " " - Where@20..25 "WHERE" - Whitespace@25..26 " " - AExpr@26..42 - ColumnRef@26..30 - Ident@26..30 "city" - Whitespace@30..31 " " - Ascii61@31..32 "=" - Whitespace@32..33 " " - AConst@33..42 - Sconst@33..42 "'Hayward'" - Ascii59@42..43 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0007@1.snap b/crates/pg_syntax/tests/snapshots/data/0007@1.snap deleted file mode 100644 index d495abdb..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0007@1.snap +++ /dev/null @@ -1,42 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TABLE cities (\n name text,\n population real,\n elevation int -- (in ft)\n);" ---- -CreateStmt@0..94 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Table@7..12 "TABLE" - Whitespace@12..13 " " - RangeVar@13..19 - Ident@13..19 "cities" - Whitespace@19..20 " " - Ascii40@20..21 "(" - Newline@21..22 "\n" - Whitespace@22..24 " " - ColumnDef@24..39 - NameP@24..28 "name" - Whitespace@28..35 " " - TypeName@35..39 - TextP@35..39 "text" - Ascii44@39..40 "," - Newline@40..41 "\n" - Whitespace@41..43 " " - ColumnDef@43..58 - Ident@43..53 "population" - Whitespace@53..54 " " - TypeName@54..58 - Real@54..58 "real" - Ascii44@58..59 "," - Newline@59..60 "\n" - Whitespace@60..62 " " - ColumnDef@62..76 - Ident@62..71 "elevation" - Whitespace@71..73 " " - TypeName@73..76 - IntP@73..76 "int" - Whitespace@76..81 " " - SqlComment@81..91 "-- (in ft)" - Newline@91..92 "\n" - Ascii41@92..93 ")" - Ascii59@93..94 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0008@1.snap b/crates/pg_syntax/tests/snapshots/data/0008@1.snap deleted file mode 100644 index 43b99529..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0008@1.snap +++ /dev/null @@ -1,52 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "INSERT INTO weather (date, city, temp_hi, temp_lo)\n VALUES ('1994-11-29', 'Hayward', 54, 37);" ---- -InsertStmt@0..96 - Insert@0..6 "INSERT" - Whitespace@6..7 " " - Into@7..11 "INTO" - Whitespace@11..12 " " - RangeVar@12..19 - Ident@12..19 "weather" - Whitespace@19..20 " " - Ascii40@20..21 "(" - ResTarget@21..25 - Ident@21..25 "date" - Ascii44@25..26 "," - Whitespace@26..27 " " - ResTarget@27..31 - Ident@27..31 "city" - Ascii44@31..32 "," - Whitespace@32..33 " " - ResTarget@33..40 - Ident@33..40 "temp_hi" - Ascii44@40..41 "," - Whitespace@41..42 " " - ResTarget@42..49 - Ident@42..49 "temp_lo" - Ascii41@49..50 ")" - Newline@50..51 "\n" - Whitespace@51..55 " " - SelectStmt@55..94 - Values@55..61 "VALUES" - Whitespace@61..62 " " - Ascii40@62..63 "(" - List@63..94 - AConst@63..75 - Sconst@63..75 "'1994-11-29'" - Ascii44@75..76 "," - Whitespace@76..77 " " - AConst@77..86 - Sconst@77..86 "'Hayward'" - Ascii44@86..87 "," - Whitespace@87..88 " " - AConst@88..90 - Iconst@88..90 "54" - Ascii44@90..91 "," - Whitespace@91..92 " " - AConst@92..94 - Iconst@92..94 "37" - Ascii41@94..95 ")" - Ascii59@95..96 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0009@1.snap b/crates/pg_syntax/tests/snapshots/data/0009@1.snap deleted file mode 100644 index 06968fbf..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0009@1.snap +++ /dev/null @@ -1,116 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "SELECT w1.city, w1.temp_lo AS low, w1.temp_hi AS high,\n w2.city, w2.temp_lo AS low, w2.temp_hi AS high\n FROM weather w1 JOIN weather w2\n ON w1.temp_lo < w2.temp_lo AND w1.temp_hi > w2.temp_hi;" ---- -SelectStmt@0..208 - Select@0..6 "SELECT" - Whitespace@6..7 " " - ResTarget@7..14 - ColumnRef@7..14 - Ident@7..9 "w1" - Ascii46@9..10 "." - Ident@10..14 "city" - Ascii44@14..15 "," - Whitespace@15..16 " " - ResTarget@16..33 - ColumnRef@16..26 - Ident@16..18 "w1" - Ascii46@18..19 "." - Ident@19..26 "temp_lo" - Whitespace@26..27 " " - As@27..29 "AS" - Whitespace@29..30 " " - Ident@30..33 "low" - Ascii44@33..34 "," - Whitespace@34..35 " " - ResTarget@35..53 - ColumnRef@35..45 - Ident@35..37 "w1" - Ascii46@37..38 "." - Ident@38..45 "temp_hi" - Whitespace@45..46 " " - As@46..48 "AS" - Whitespace@48..49 " " - Ident@49..53 "high" - Ascii44@53..54 "," - Newline@54..55 "\n" - Whitespace@55..62 " " - ResTarget@62..69 - ColumnRef@62..69 - Ident@62..64 "w2" - Ascii46@64..65 "." - Ident@65..69 "city" - Ascii44@69..70 "," - Whitespace@70..71 " " - ResTarget@71..88 - ColumnRef@71..81 - Ident@71..73 "w2" - Ascii46@73..74 "." - Ident@74..81 "temp_lo" - Whitespace@81..82 " " - As@82..84 "AS" - Whitespace@84..85 " " - Ident@85..88 "low" - Ascii44@88..89 "," - Whitespace@89..90 " " - ResTarget@90..108 - ColumnRef@90..100 - Ident@90..92 "w2" - Ascii46@92..93 "." - Ident@93..100 "temp_hi" - Whitespace@100..101 " " - As@101..103 "AS" - Whitespace@103..104 " " - Ident@104..108 "high" - Newline@108..109 "\n" - Whitespace@109..113 " " - From@113..117 "FROM" - Whitespace@117..118 " " - JoinExpr@118..207 - RangeVar@118..128 - Ident@118..125 "weather" - Whitespace@125..126 " " - Alias@126..128 - Ident@126..128 "w1" - Whitespace@128..129 " " - Join@129..133 "JOIN" - Whitespace@133..134 " " - RangeVar@134..144 - Ident@134..141 "weather" - Whitespace@141..142 " " - Alias@142..144 - Ident@142..144 "w2" - Newline@144..145 "\n" - Whitespace@145..153 " " - On@153..155 "ON" - Whitespace@155..156 " " - BoolExpr@156..207 - AExpr@156..179 - ColumnRef@156..166 - Ident@156..158 "w1" - Ascii46@158..159 "." - Ident@159..166 "temp_lo" - Whitespace@166..167 " " - Ascii60@167..168 "<" - Whitespace@168..169 " " - ColumnRef@169..179 - Ident@169..171 "w2" - Ascii46@171..172 "." - Ident@172..179 "temp_lo" - Whitespace@179..180 " " - And@180..183 "AND" - Whitespace@183..184 " " - AExpr@184..207 - ColumnRef@184..194 - Ident@184..186 "w1" - Ascii46@186..187 "." - Ident@187..194 "temp_hi" - Whitespace@194..195 " " - Ascii62@195..196 ">" - Whitespace@196..197 " " - ColumnRef@197..207 - Ident@197..199 "w2" - Ascii46@199..200 "." - Ident@200..207 "temp_hi" - Ascii59@207..208 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0010@1.snap b/crates/pg_syntax/tests/snapshots/data/0010@1.snap deleted file mode 100644 index 26c85679..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0010@1.snap +++ /dev/null @@ -1,38 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');" ---- -InsertStmt@0..73 - Insert@0..6 "INSERT" - Whitespace@6..7 " " - Into@7..11 "INTO" - Whitespace@11..12 " " - RangeVar@12..19 - Ident@12..19 "weather" - Whitespace@19..20 " " - SelectStmt@20..71 - Values@20..26 "VALUES" - Whitespace@26..27 " " - Ascii40@27..28 "(" - List@28..71 - AConst@28..43 - Sconst@28..43 "'San Francisco'" - Ascii44@43..44 "," - Whitespace@44..45 " " - AConst@45..47 - Iconst@45..47 "46" - Ascii44@47..48 "," - Whitespace@48..49 " " - AConst@49..51 - Iconst@49..51 "50" - Ascii44@51..52 "," - Whitespace@52..53 " " - AConst@53..57 - Fconst@53..57 "0.25" - Ascii44@57..58 "," - Whitespace@58..59 " " - AConst@59..71 - Sconst@59..71 "'1994-11-27'" - Ascii41@71..72 ")" - Ascii59@72..73 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0011@1.snap b/crates/pg_syntax/tests/snapshots/data/0011@1.snap deleted file mode 100644 index 94b81300..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0011@1.snap +++ /dev/null @@ -1,29 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "SELECT DISTINCT city\n FROM weather\n ORDER BY city;" ---- -SelectStmt@0..56 - Select@0..6 "SELECT" - Whitespace@6..7 " " - Distinct@7..15 "DISTINCT" - Whitespace@15..16 " " - ResTarget@16..20 - ColumnRef@16..20 - Ident@16..20 "city" - Newline@20..21 "\n" - Whitespace@21..25 " " - From@25..29 "FROM" - Whitespace@29..30 " " - RangeVar@30..37 - Ident@30..37 "weather" - Newline@37..38 "\n" - Whitespace@38..42 " " - SortBy@42..55 - Order@42..47 "ORDER" - Whitespace@47..48 " " - By@48..50 "BY" - Whitespace@50..51 " " - ColumnRef@51..55 - Ident@51..55 "city" - Ascii59@55..56 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0012@1.snap b/crates/pg_syntax/tests/snapshots/data/0012@1.snap deleted file mode 100644 index e5f7fb86..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0012@1.snap +++ /dev/null @@ -1,57 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TABLE measurement_y2008m01 PARTITION OF measurement\n FOR VALUES FROM ('2008-01-01') TO ('2008-02-01')\n WITH (parallel_workers = 4)\n TABLESPACE fasttablespace;" ---- -CreateStmt@0..174 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Table@7..12 "TABLE" - Whitespace@12..13 " " - RangeVar@13..33 - Ident@13..33 "measurement_y2008m01" - Whitespace@33..34 " " - Partition@34..43 "PARTITION" - Whitespace@43..44 " " - Of@44..46 "OF" - Whitespace@46..47 " " - RangeVar@47..58 - Ident@47..58 "measurement" - Newline@58..59 "\n" - Whitespace@59..63 " " - For@63..66 "FOR" - Whitespace@66..67 " " - Values@67..73 "VALUES" - Whitespace@73..74 " " - PartitionBoundSpec@74..110 - From@74..78 "FROM" - Whitespace@78..79 " " - Ascii40@79..80 "(" - AConst@80..92 - Sconst@80..92 "'2008-01-01'" - Ascii41@92..93 ")" - Whitespace@93..94 " " - To@94..96 "TO" - Whitespace@96..97 " " - Ascii40@97..98 "(" - AConst@98..110 - Sconst@98..110 "'2008-02-01'" - Ascii41@110..111 ")" - Newline@111..112 "\n" - Whitespace@112..116 " " - With@116..120 "WITH" - Whitespace@120..121 " " - Ascii40@121..122 "(" - DefElem@122..142 - Ident@122..138 "parallel_workers" - Whitespace@138..139 " " - Ascii61@139..140 "=" - Whitespace@140..141 " " - Iconst@141..142 "4" - Ascii41@142..143 ")" - Newline@143..144 "\n" - Whitespace@144..148 " " - Tablespace@148..158 "TABLESPACE" - Whitespace@158..159 " " - Ident@159..173 "fasttablespace" - Ascii59@173..174 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0014@1.snap b/crates/pg_syntax/tests/snapshots/data/0014@1.snap deleted file mode 100644 index 1abaa39a..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0014@1.snap +++ /dev/null @@ -1,68 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "SELECT sum(salary) OVER w, avg(salary) OVER w\n FROM empsalary\n WINDOW w AS (PARTITION BY depname ORDER BY salary DESC);" ---- -SelectStmt@0..121 - Select@0..6 "SELECT" - Whitespace@6..7 " " - ResTarget@7..25 - FuncCall@7..25 - Ident@7..10 "sum" - Ascii40@10..11 "(" - ColumnRef@11..17 - Ident@11..17 "salary" - Ascii41@17..18 ")" - Whitespace@18..19 " " - Over@19..23 "OVER" - Whitespace@23..24 " " - WindowDef@24..25 - Ident@24..25 "w" - Ascii44@25..26 "," - Whitespace@26..27 " " - ResTarget@27..45 - FuncCall@27..45 - Ident@27..30 "avg" - Ascii40@30..31 "(" - ColumnRef@31..37 - Ident@31..37 "salary" - Ascii41@37..38 ")" - Whitespace@38..39 " " - Over@39..43 "OVER" - Whitespace@43..44 " " - WindowDef@44..45 - Ident@44..45 "w" - Newline@45..46 "\n" - Whitespace@46..48 " " - From@48..52 "FROM" - Whitespace@52..53 " " - RangeVar@53..62 - Ident@53..62 "empsalary" - Newline@62..63 "\n" - Whitespace@63..65 " " - WindowDef@65..119 - Window@65..71 "WINDOW" - Whitespace@71..72 " " - Ident@72..73 "w" - Whitespace@73..74 " " - As@74..76 "AS" - Whitespace@76..77 " " - Ascii40@77..78 "(" - Partition@78..87 "PARTITION" - Whitespace@87..88 " " - By@88..90 "BY" - Whitespace@90..91 " " - ColumnRef@91..98 - Ident@91..98 "depname" - Whitespace@98..99 " " - SortBy@99..119 - Order@99..104 "ORDER" - Whitespace@104..105 " " - By@105..107 "BY" - Whitespace@107..108 " " - ColumnRef@108..114 - Ident@108..114 "salary" - Whitespace@114..115 " " - Desc@115..119 "DESC" - Ascii41@119..120 ")" - Ascii59@120..121 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0015@1.snap b/crates/pg_syntax/tests/snapshots/data/0015@1.snap deleted file mode 100644 index 65e97405..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0015@1.snap +++ /dev/null @@ -1,70 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "SELECT\n count(*) AS unfiltered,\n count(*) FILTER (WHERE i < 5) AS filtered\nFROM generate_series(1,10) AS s(i);" ---- -SelectStmt@0..116 - Select@0..6 "SELECT" - Newline@6..7 "\n" - Whitespace@7..11 " " - ResTarget@11..33 - FuncCall@11..18 - Ident@11..16 "count" - Ascii40@16..17 "(" - Ascii42@17..18 "*" - Ascii41@18..19 ")" - Whitespace@19..20 " " - As@20..22 "AS" - Whitespace@22..23 " " - Ident@23..33 "unfiltered" - Ascii44@33..34 "," - Newline@34..35 "\n" - Whitespace@35..39 " " - ResTarget@39..80 - FuncCall@39..67 - Ident@39..44 "count" - Ascii40@44..45 "(" - Ascii42@45..46 "*" - Ascii41@46..47 ")" - Whitespace@47..48 " " - Filter@48..54 "FILTER" - Whitespace@54..55 " " - Ascii40@55..56 "(" - Where@56..61 "WHERE" - Whitespace@61..62 " " - AExpr@62..67 - ColumnRef@62..63 - Ident@62..63 "i" - Whitespace@63..64 " " - Ascii60@64..65 "<" - Whitespace@65..66 " " - AConst@66..67 - Iconst@66..67 "5" - Ascii41@67..68 ")" - Whitespace@68..69 " " - As@69..71 "AS" - Whitespace@71..72 " " - Ident@72..80 "filtered" - Newline@80..81 "\n" - From@81..85 "FROM" - Whitespace@85..86 " " - RangeFunction@86..114 - List@86..106 - FuncCall@86..106 - Ident@86..101 "generate_series" - Ascii40@101..102 "(" - AConst@102..103 - Iconst@102..103 "1" - Ascii44@103..104 "," - AConst@104..106 - Iconst@104..106 "10" - Ascii41@106..107 ")" - Whitespace@107..108 " " - Alias@108..114 - As@108..110 "AS" - Whitespace@110..111 " " - Ident@111..112 "s" - Ascii40@112..113 "(" - Ident@113..114 "i" - Ascii41@114..115 ")" - Ascii59@115..116 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0016@1.snap b/crates/pg_syntax/tests/snapshots/data/0016@1.snap deleted file mode 100644 index d1925e8a..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0016@1.snap +++ /dev/null @@ -1,34 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "SELECT * FROM tbl WHERE a COLLATE \"C\" > 'foo';" ---- -SelectStmt@0..46 - Select@0..6 "SELECT" - Whitespace@6..7 " " - ResTarget@7..8 - ColumnRef@7..8 - AStar@7..8 - Ascii42@7..8 "*" - Whitespace@8..9 " " - From@9..13 "FROM" - Whitespace@13..14 " " - RangeVar@14..17 - Ident@14..17 "tbl" - Whitespace@17..18 " " - Where@18..23 "WHERE" - Whitespace@23..24 " " - AExpr@24..45 - CollateClause@24..37 - ColumnRef@24..25 - Ident@24..25 "a" - Whitespace@25..26 " " - Collate@26..33 "COLLATE" - Whitespace@33..34 " " - Ident@34..37 "\"C\"" - Whitespace@37..38 " " - Ascii62@38..39 ">" - Whitespace@39..40 " " - AConst@40..45 - Sconst@40..45 "'foo'" - Ascii59@45..46 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0017@1.snap b/crates/pg_syntax/tests/snapshots/data/0017@1.snap deleted file mode 100644 index acd52748..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0017@1.snap +++ /dev/null @@ -1,54 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "SELECT name, (SELECT max(pop) FROM cities WHERE cities.state = states.name)\n FROM states;" ---- -SelectStmt@0..92 - Select@0..6 "SELECT" - Whitespace@6..7 " " - ResTarget@7..11 - ColumnRef@7..11 - NameP@7..11 "name" - Ascii44@11..12 "," - Whitespace@12..13 " " - ResTarget@13..74 - SubLink@13..74 - SelectStmt@13..74 - Ascii40@13..14 "(" - Select@14..20 "SELECT" - Whitespace@20..21 " " - ResTarget@21..28 - FuncCall@21..28 - Ident@21..24 "max" - Ascii40@24..25 "(" - ColumnRef@25..28 - Ident@25..28 "pop" - Ascii41@28..29 ")" - Whitespace@29..30 " " - From@30..34 "FROM" - Whitespace@34..35 " " - RangeVar@35..41 - Ident@35..41 "cities" - Whitespace@41..42 " " - Where@42..47 "WHERE" - Whitespace@47..48 " " - AExpr@48..74 - ColumnRef@48..60 - Ident@48..54 "cities" - Ascii46@54..55 "." - Ident@55..60 "state" - Whitespace@60..61 " " - Ascii61@61..62 "=" - Whitespace@62..63 " " - ColumnRef@63..74 - Ident@63..69 "states" - Ascii46@69..70 "." - NameP@70..74 "name" - Ascii41@74..75 ")" - Newline@75..76 "\n" - Whitespace@76..80 " " - From@80..84 "FROM" - Whitespace@84..85 " " - RangeVar@85..91 - Ident@85..91 "states" - Ascii59@91..92 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0018@1.snap b/crates/pg_syntax/tests/snapshots/data/0018@1.snap deleted file mode 100644 index 3ed8760d..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0018@1.snap +++ /dev/null @@ -1,28 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "SELECT ARRAY[1,2,22.7]::integer[];" ---- -SelectStmt@0..34 - Select@0..6 "SELECT" - Whitespace@6..7 " " - ResTarget@7..31 - TypeCast@7..31 - AArrayExpr@7..21 - Array@7..12 "ARRAY" - Ascii91@12..13 "[" - AConst@13..14 - Iconst@13..14 "1" - Ascii44@14..15 "," - AConst@15..16 - Iconst@15..16 "2" - Ascii44@16..17 "," - AConst@17..21 - Fconst@17..21 "22.7" - Ascii93@21..22 "]" - Typecast@22..24 "::" - TypeName@24..31 - Integer@24..31 "integer" - Ascii91@31..32 "[" - Ascii93@32..33 "]" - Ascii59@33..34 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0019@1.snap b/crates/pg_syntax/tests/snapshots/data/0019@1.snap deleted file mode 100644 index 2aa1ce6d..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0019@1.snap +++ /dev/null @@ -1,53 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "SELECT CASE WHEN min(employees) > 0\n THEN avg(expenses / employees)\n END\n FROM departments;" ---- -SelectStmt@0..111 - Select@0..6 "SELECT" - Whitespace@6..7 " " - ResTarget@7..89 - CaseExpr@7..89 - Case@7..11 "CASE" - Whitespace@11..12 " " - CaseWhen@12..77 - When@12..16 "WHEN" - Whitespace@16..17 " " - AExpr@17..35 - FuncCall@17..30 - Ident@17..20 "min" - Ascii40@20..21 "(" - ColumnRef@21..30 - Ident@21..30 "employees" - Ascii41@30..31 ")" - Whitespace@31..32 " " - Ascii62@32..33 ">" - Whitespace@33..34 " " - AConst@34..35 - Iconst@34..35 "0" - Newline@35..36 "\n" - Whitespace@36..48 " " - Then@48..52 "THEN" - Whitespace@52..53 " " - FuncCall@53..77 - Ident@53..56 "avg" - Ascii40@56..57 "(" - AExpr@57..77 - ColumnRef@57..65 - Ident@57..65 "expenses" - Whitespace@65..66 " " - Ascii47@66..67 "/" - Whitespace@67..68 " " - ColumnRef@68..77 - Ident@68..77 "employees" - Ascii41@77..78 ")" - Newline@78..79 "\n" - Whitespace@79..86 " " - EndP@86..89 "END" - Newline@89..90 "\n" - Whitespace@90..94 " " - From@94..98 "FROM" - Whitespace@98..99 " " - RangeVar@99..110 - Ident@99..110 "departments" - Ascii59@110..111 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0020@1.snap b/crates/pg_syntax/tests/snapshots/data/0020@1.snap deleted file mode 100644 index 02d280a7..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0020@1.snap +++ /dev/null @@ -1,60 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE FUNCTION concat_lower_or_upper(a text, b text, uppercase boolean DEFAULT false)\nRETURNS text\nAS\n$$\n SELECT CASE\n WHEN $3 THEN UPPER($1 || ' ' || $2)\n ELSE LOWER($1 || ' ' || $2)\n END;\n$$\nLANGUAGE SQL IMMUTABLE STRICT;" ---- -CreateFunctionStmt@0..245 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Function@7..15 "FUNCTION" - Whitespace@15..16 " " - Ident@16..37 "concat_lower_or_upper" - Ascii40@37..38 "(" - FunctionParameter@38..44 - Ident@38..39 "a" - Whitespace@39..40 " " - TypeName@40..44 - TextP@40..44 "text" - Ascii44@44..45 "," - Whitespace@45..46 " " - FunctionParameter@46..52 - Ident@46..47 "b" - Whitespace@47..48 " " - TypeName@48..52 - TextP@48..52 "text" - Ascii44@52..53 "," - Whitespace@53..54 " " - FunctionParameter@54..85 - Ident@54..63 "uppercase" - Whitespace@63..64 " " - TypeName@64..71 - BooleanP@64..71 "boolean" - Whitespace@71..72 " " - Default@72..79 "DEFAULT" - Whitespace@79..80 " " - AConst@80..85 - FalseP@80..85 "false" - Ascii41@85..86 ")" - Newline@86..87 "\n" - Returns@87..94 "RETURNS" - Whitespace@94..95 " " - TypeName@95..99 - TextP@95..99 "text" - Newline@99..100 "\n" - DefElem@100..214 - As@100..102 "AS" - Newline@102..103 "\n" - List@103..214 - Sconst@103..214 "$$\n SELECT CASE\n ..." - Newline@214..215 "\n" - DefElem@215..227 - Language@215..223 "LANGUAGE" - Whitespace@223..224 " " - SqlP@224..227 "SQL" - Whitespace@227..228 " " - DefElem@228..237 - Immutable@228..237 "IMMUTABLE" - Whitespace@237..238 " " - DefElem@238..244 - StrictP@238..244 "STRICT" - Ascii59@244..245 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0021@1.snap b/crates/pg_syntax/tests/snapshots/data/0021@1.snap deleted file mode 100644 index ee4b44b4..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0021@1.snap +++ /dev/null @@ -1,39 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "SELECT concat_lower_or_upper(a => 'Hello', b => 'World', uppercase => true);" ---- -SelectStmt@0..76 - Select@0..6 "SELECT" - Whitespace@6..7 " " - ResTarget@7..74 - FuncCall@7..74 - Ident@7..28 "concat_lower_or_upper" - Ascii40@28..29 "(" - NamedArgExpr@29..41 - Ident@29..30 "a" - Whitespace@30..31 " " - EqualsGreater@31..33 "=>" - Whitespace@33..34 " " - AConst@34..41 - Sconst@34..41 "'Hello'" - Ascii44@41..42 "," - Whitespace@42..43 " " - NamedArgExpr@43..55 - Ident@43..44 "b" - Whitespace@44..45 " " - EqualsGreater@45..47 "=>" - Whitespace@47..48 " " - AConst@48..55 - Sconst@48..55 "'World'" - Ascii44@55..56 "," - Whitespace@56..57 " " - NamedArgExpr@57..74 - Ident@57..66 "uppercase" - Whitespace@66..67 " " - EqualsGreater@67..69 "=>" - Whitespace@69..70 " " - AConst@70..74 - TrueP@70..74 "true" - Ascii41@74..75 ")" - Ascii59@75..76 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0022@1.snap b/crates/pg_syntax/tests/snapshots/data/0022@1.snap deleted file mode 100644 index db9152a7..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0022@1.snap +++ /dev/null @@ -1,46 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TABLE products (\n product_no integer,\n name text,\n price numeric DEFAULT 9.99\n);" ---- -CreateStmt@0..96 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Table@7..12 "TABLE" - Whitespace@12..13 " " - RangeVar@13..21 - Ident@13..21 "products" - Whitespace@21..22 " " - Ascii40@22..23 "(" - Newline@23..24 "\n" - Whitespace@24..28 " " - ColumnDef@28..46 - Ident@28..38 "product_no" - Whitespace@38..39 " " - TypeName@39..46 - Integer@39..46 "integer" - Ascii44@46..47 "," - Newline@47..48 "\n" - Whitespace@48..52 " " - ColumnDef@52..61 - NameP@52..56 "name" - Whitespace@56..57 " " - TypeName@57..61 - TextP@57..61 "text" - Ascii44@61..62 "," - Newline@62..63 "\n" - Whitespace@63..67 " " - ColumnDef@67..93 - Ident@67..72 "price" - Whitespace@72..73 " " - TypeName@73..80 - Numeric@73..80 "numeric" - Whitespace@80..81 " " - Constraint@81..93 - Default@81..88 "DEFAULT" - Whitespace@88..89 " " - AConst@89..93 - Fconst@89..93 "9.99" - Newline@93..94 "\n" - Ascii41@94..95 ")" - Ascii59@95..96 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0023@1.snap b/crates/pg_syntax/tests/snapshots/data/0023@1.snap deleted file mode 100644 index b1128e2d..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0023@1.snap +++ /dev/null @@ -1,92 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TABLE products (\n product_no integer,\n name text,\n price numeric CHECK (price > 0),\n discounted_price numeric CHECK (discounted_price > 0),\n CHECK (price > discounted_price)\n);" ---- -CreateStmt@0..198 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Table@7..12 "TABLE" - Whitespace@12..13 " " - RangeVar@13..21 - Ident@13..21 "products" - Whitespace@21..22 " " - Ascii40@22..23 "(" - Newline@23..24 "\n" - Whitespace@24..28 " " - ColumnDef@28..46 - Ident@28..38 "product_no" - Whitespace@38..39 " " - TypeName@39..46 - Integer@39..46 "integer" - Ascii44@46..47 "," - Newline@47..48 "\n" - Whitespace@48..52 " " - ColumnDef@52..61 - NameP@52..56 "name" - Whitespace@56..57 " " - TypeName@57..61 - TextP@57..61 "text" - Ascii44@61..62 "," - Newline@62..63 "\n" - Whitespace@63..67 " " - ColumnDef@67..97 - Ident@67..72 "price" - Whitespace@72..73 " " - TypeName@73..80 - Numeric@73..80 "numeric" - Whitespace@80..81 " " - Constraint@81..97 - Check@81..86 "CHECK" - Whitespace@86..87 " " - Ascii40@87..88 "(" - AExpr@88..97 - ColumnRef@88..93 - Ident@88..93 "price" - Whitespace@93..94 " " - Ascii62@94..95 ">" - Whitespace@95..96 " " - AConst@96..97 - Iconst@96..97 "0" - Ascii41@97..98 ")" - Ascii44@98..99 "," - Newline@99..100 "\n" - Whitespace@100..104 " " - ColumnDef@104..156 - Ident@104..120 "discounted_price" - Whitespace@120..121 " " - TypeName@121..128 - Numeric@121..128 "numeric" - Whitespace@128..129 " " - Constraint@129..156 - Check@129..134 "CHECK" - Whitespace@134..135 " " - Ascii40@135..136 "(" - AExpr@136..156 - ColumnRef@136..152 - Ident@136..152 "discounted_price" - Whitespace@152..153 " " - Ascii62@153..154 ">" - Whitespace@154..155 " " - AConst@155..156 - Iconst@155..156 "0" - Ascii41@156..157 ")" - Ascii44@157..158 "," - Newline@158..159 "\n" - Whitespace@159..163 " " - Constraint@163..194 - Check@163..168 "CHECK" - Whitespace@168..169 " " - Ascii40@169..170 "(" - AExpr@170..194 - ColumnRef@170..175 - Ident@170..175 "price" - Whitespace@175..176 " " - Ascii62@176..177 ">" - Whitespace@177..178 " " - ColumnRef@178..194 - Ident@178..194 "discounted_price" - Ascii41@194..195 ")" - Newline@195..196 "\n" - Ascii41@196..197 ")" - Ascii59@197..198 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0024@1.snap b/crates/pg_syntax/tests/snapshots/data/0024@1.snap deleted file mode 100644 index bbfcca9f..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0024@1.snap +++ /dev/null @@ -1,66 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TABLE order_items (\n product_no integer REFERENCES products,\n order_id integer REFERENCES orders,\n quantity integer,\n PRIMARY KEY (product_no, order_id)\n);" ---- -CreateStmt@0..174 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Table@7..12 "TABLE" - Whitespace@12..13 " " - RangeVar@13..24 - Ident@13..24 "order_items" - Whitespace@24..25 " " - Ascii40@25..26 "(" - Newline@26..27 "\n" - Whitespace@27..31 " " - ColumnDef@31..69 - Ident@31..41 "product_no" - Whitespace@41..42 " " - TypeName@42..49 - Integer@42..49 "integer" - Whitespace@49..50 " " - Constraint@50..69 - References@50..60 "REFERENCES" - Whitespace@60..61 " " - RangeVar@61..69 - Ident@61..69 "products" - Ascii44@69..70 "," - Newline@70..71 "\n" - Whitespace@71..75 " " - ColumnDef@75..109 - Ident@75..83 "order_id" - Whitespace@83..84 " " - TypeName@84..91 - Integer@84..91 "integer" - Whitespace@91..92 " " - Constraint@92..109 - References@92..102 "REFERENCES" - Whitespace@102..103 " " - RangeVar@103..109 - Ident@103..109 "orders" - Ascii44@109..110 "," - Newline@110..111 "\n" - Whitespace@111..115 " " - ColumnDef@115..131 - Ident@115..123 "quantity" - Whitespace@123..124 " " - TypeName@124..131 - Integer@124..131 "integer" - Ascii44@131..132 "," - Newline@132..133 "\n" - Whitespace@133..137 " " - Constraint@137..170 - Primary@137..144 "PRIMARY" - Whitespace@144..145 " " - Key@145..148 "KEY" - Whitespace@148..149 " " - Ascii40@149..150 "(" - Ident@150..160 "product_no" - Ascii44@160..161 "," - Whitespace@161..162 " " - Ident@162..170 "order_id" - Ascii41@170..171 ")" - Newline@171..172 "\n" - Ascii41@172..173 ")" - Ascii59@173..174 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0025@1.snap b/crates/pg_syntax/tests/snapshots/data/0025@1.snap deleted file mode 100644 index dfee884d..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0025@1.snap +++ /dev/null @@ -1,30 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "ALTER TABLE products ADD CHECK (name <> '');" ---- -AlterTableStmt@0..44 - Alter@0..5 "ALTER" - Whitespace@5..6 " " - Table@6..11 "TABLE" - Whitespace@11..12 " " - RangeVar@12..20 - Ident@12..20 "products" - Whitespace@20..21 " " - AlterTableCmd@21..42 - AddP@21..24 "ADD" - Whitespace@24..25 " " - Constraint@25..42 - Check@25..30 "CHECK" - Whitespace@30..31 " " - Ascii40@31..32 "(" - AExpr@32..42 - ColumnRef@32..36 - NameP@32..36 "name" - Whitespace@36..37 " " - NotEquals@37..39 "<>" - Whitespace@39..40 " " - AConst@40..42 - Sconst@40..42 "''" - Ascii41@42..43 ")" - Ascii59@43..44 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0026@1.snap b/crates/pg_syntax/tests/snapshots/data/0026@1.snap deleted file mode 100644 index 134d4a2e..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0026@1.snap +++ /dev/null @@ -1,33 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "ALTER TABLE products ALTER COLUMN price TYPE numeric(10,2);" ---- -AlterTableStmt@0..59 - Alter@0..5 "ALTER" - Whitespace@5..6 " " - Table@6..11 "TABLE" - Whitespace@11..12 " " - RangeVar@12..20 - Ident@12..20 "products" - Whitespace@20..21 " " - AlterTableCmd@21..57 - Alter@21..26 "ALTER" - Whitespace@26..27 " " - Column@27..33 "COLUMN" - Whitespace@33..34 " " - Ident@34..39 "price" - Whitespace@39..40 " " - TypeP@40..44 "TYPE" - Whitespace@44..45 " " - ColumnDef@45..57 - TypeName@45..57 - Numeric@45..52 "numeric" - Ascii40@52..53 "(" - AConst@53..55 - Iconst@53..55 "10" - Ascii44@55..56 "," - AConst@56..57 - Iconst@56..57 "2" - Ascii41@57..58 ")" - Ascii59@58..59 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0030@1.snap b/crates/pg_syntax/tests/snapshots/data/0030@1.snap deleted file mode 100644 index 384a318f..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0030@1.snap +++ /dev/null @@ -1,36 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE POLICY account_managers ON accounts TO managers\n USING (manager = current_user);" ---- -CreatePolicyStmt@0..90 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Policy@7..13 "POLICY" - Whitespace@13..14 " " - Ident@14..30 "account_managers" - Whitespace@30..31 " " - On@31..33 "ON" - Whitespace@33..34 " " - RangeVar@34..42 - Ident@34..42 "accounts" - Whitespace@42..43 " " - To@43..45 "TO" - Whitespace@45..46 " " - RoleSpec@46..54 - Ident@46..54 "managers" - Newline@54..55 "\n" - Whitespace@55..59 " " - Using@59..64 "USING" - Whitespace@64..65 " " - Ascii40@65..66 "(" - AExpr@66..88 - ColumnRef@66..73 - Ident@66..73 "manager" - Whitespace@73..74 " " - Ascii61@74..75 "=" - Whitespace@75..76 " " - SqlvalueFunction@76..88 - CurrentUser@76..88 "current_user" - Ascii41@88..89 ")" - Ascii59@89..90 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0032@1.snap b/crates/pg_syntax/tests/snapshots/data/0032@1.snap deleted file mode 100644 index 345a59d5..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0032@1.snap +++ /dev/null @@ -1,18 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "SET search_path TO myschema,public;" ---- -VariableSetStmt@0..35 - Set@0..3 "SET" - Whitespace@3..4 " " - Ident@4..15 "search_path" - Whitespace@15..16 " " - To@16..18 "TO" - Whitespace@18..19 " " - AConst@19..27 - Ident@19..27 "myschema" - Ascii44@27..28 "," - AConst@28..34 - Ident@28..34 "public" - Ascii59@34..35 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0033@1.snap b/crates/pg_syntax/tests/snapshots/data/0033@1.snap deleted file mode 100644 index bc127b2e..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0033@1.snap +++ /dev/null @@ -1,70 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TABLE measurement (\n city_id int not null,\n logdate date not null,\n peaktemp int,\n unitsales int\n) PARTITION BY RANGE (logdate);" ---- -CreateStmt@0..176 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Table@7..12 "TABLE" - Whitespace@12..13 " " - RangeVar@13..24 - Ident@13..24 "measurement" - Whitespace@24..25 " " - Ascii40@25..26 "(" - Newline@26..27 "\n" - Whitespace@27..31 " " - ColumnDef@31..59 - Ident@31..38 "city_id" - Whitespace@38..47 " " - TypeName@47..50 - IntP@47..50 "int" - Whitespace@50..51 " " - Constraint@51..59 - Not@51..54 "not" - Whitespace@54..55 " " - NullP@55..59 "null" - Ascii44@59..60 "," - Newline@60..61 "\n" - Whitespace@61..65 " " - ColumnDef@65..94 - Ident@65..72 "logdate" - Whitespace@72..81 " " - TypeName@81..85 - Ident@81..85 "date" - Whitespace@85..86 " " - Constraint@86..94 - Not@86..89 "not" - Whitespace@89..90 " " - NullP@90..94 "null" - Ascii44@94..95 "," - Newline@95..96 "\n" - Whitespace@96..100 " " - ColumnDef@100..119 - Ident@100..108 "peaktemp" - Whitespace@108..116 " " - TypeName@116..119 - IntP@116..119 "int" - Ascii44@119..120 "," - Newline@120..121 "\n" - Whitespace@121..125 " " - ColumnDef@125..144 - Ident@125..134 "unitsales" - Whitespace@134..141 " " - TypeName@141..144 - IntP@141..144 "int" - Newline@144..145 "\n" - Ascii41@145..146 ")" - Whitespace@146..147 " " - PartitionSpec@147..174 - Partition@147..156 "PARTITION" - Whitespace@156..157 " " - By@157..159 "BY" - Whitespace@159..160 " " - Range@160..165 "RANGE" - Whitespace@165..166 " " - Ascii40@166..167 "(" - PartitionElem@167..174 - Ident@167..174 "logdate" - Ascii41@174..175 ")" - Ascii59@175..176 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0034@1.snap b/crates/pg_syntax/tests/snapshots/data/0034@1.snap deleted file mode 100644 index 2f1114da..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0034@1.snap +++ /dev/null @@ -1,33 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "select *,some_col from contact where id = '123 4 5';" ---- -SelectStmt@0..52 - Select@0..6 "select" - Whitespace@6..7 " " - ResTarget@7..8 - ColumnRef@7..8 - AStar@7..8 - Ascii42@7..8 "*" - Ascii44@8..9 "," - ResTarget@9..17 - ColumnRef@9..17 - Ident@9..17 "some_col" - Whitespace@17..18 " " - From@18..22 "from" - Whitespace@22..23 " " - RangeVar@23..30 - Ident@23..30 "contact" - Whitespace@30..31 " " - Where@31..36 "where" - Whitespace@36..37 " " - AExpr@37..51 - ColumnRef@37..39 - Ident@37..39 "id" - Whitespace@39..40 " " - Ascii61@40..41 "=" - Whitespace@41..42 " " - AConst@42..51 - Sconst@42..51 "'123 4 5'" - Ascii59@51..52 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0035@1.snap b/crates/pg_syntax/tests/snapshots/data/0035@1.snap deleted file mode 100644 index 2f1114da..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0035@1.snap +++ /dev/null @@ -1,33 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "select *,some_col from contact where id = '123 4 5';" ---- -SelectStmt@0..52 - Select@0..6 "select" - Whitespace@6..7 " " - ResTarget@7..8 - ColumnRef@7..8 - AStar@7..8 - Ascii42@7..8 "*" - Ascii44@8..9 "," - ResTarget@9..17 - ColumnRef@9..17 - Ident@9..17 "some_col" - Whitespace@17..18 " " - From@18..22 "from" - Whitespace@22..23 " " - RangeVar@23..30 - Ident@23..30 "contact" - Whitespace@30..31 " " - Where@31..36 "where" - Whitespace@36..37 " " - AExpr@37..51 - ColumnRef@37..39 - Ident@37..39 "id" - Whitespace@39..40 " " - Ascii61@40..41 "=" - Whitespace@41..42 " " - AConst@42..51 - Sconst@42..51 "'123 4 5'" - Ascii59@51..52 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0036@1.snap b/crates/pg_syntax/tests/snapshots/data/0036@1.snap deleted file mode 100644 index 84fa7c53..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0036@1.snap +++ /dev/null @@ -1,50 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE FUNCTION dup(in int, out f1 int, out f2 text)\n AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$\n LANGUAGE SQL;" ---- -CreateFunctionStmt@0..125 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Function@7..15 "FUNCTION" - Whitespace@15..16 " " - Ident@16..19 "dup" - Ascii40@19..20 "(" - FunctionParameter@20..26 - InP@20..22 "in" - Whitespace@22..23 " " - TypeName@23..26 - IntP@23..26 "int" - Ascii44@26..27 "," - Whitespace@27..28 " " - FunctionParameter@28..38 - OutP@28..31 "out" - Whitespace@31..32 " " - Ident@32..34 "f1" - Whitespace@34..35 " " - TypeName@35..38 - IntP@35..38 "int" - Ascii44@38..39 "," - Whitespace@39..40 " " - FunctionParameter@40..51 - OutP@40..43 "out" - Whitespace@43..44 " " - Ident@44..46 "f2" - Whitespace@46..47 " " - TypeName@47..51 - TextP@47..51 "text" - Ascii41@51..52 ")" - Newline@52..53 "\n" - Whitespace@53..57 " " - DefElem@57..107 - As@57..59 "AS" - Whitespace@59..60 " " - List@60..107 - Sconst@60..107 "$$ SELECT $1, CAST($1 ..." - Newline@107..108 "\n" - Whitespace@108..112 " " - DefElem@112..124 - Language@112..120 "LANGUAGE" - Whitespace@120..121 " " - SqlP@121..124 "SQL" - Ascii59@124..125 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0037@1.snap b/crates/pg_syntax/tests/snapshots/data/0037@1.snap deleted file mode 100644 index 6ea71c7a..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0037@1.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TYPE bug_status AS ENUM ('new', 'open', 'closed');" ---- -CreateEnumStmt@0..57 - Create@0..6 "CREATE" - Whitespace@6..7 " " - TypeP@7..11 "TYPE" - Whitespace@11..12 " " - Ident@12..22 "bug_status" - Whitespace@22..23 " " - As@23..25 "AS" - Whitespace@25..26 " " - EnumP@26..30 "ENUM" - Whitespace@30..31 " " - Ascii40@31..32 "(" - Sconst@32..37 "'new'" - Ascii44@37..38 "," - Whitespace@38..39 " " - Sconst@39..45 "'open'" - Ascii44@45..46 "," - Whitespace@46..47 " " - Sconst@47..55 "'closed'" - Ascii41@55..56 ")" - Ascii59@56..57 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0038@1.snap b/crates/pg_syntax/tests/snapshots/data/0038@1.snap deleted file mode 100644 index 0786c84b..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0038@1.snap +++ /dev/null @@ -1,35 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE CAST (bigint AS int4) WITH FUNCTION int4(bigint) AS ASSIGNMENT; ---- -CreateCastStmt@0..70 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Cast@7..11 "CAST" - Whitespace@11..12 " " - Ascii40@12..13 "(" - TypeName@13..19 - Bigint@13..19 "bigint" - Whitespace@19..20 " " - As@20..22 "AS" - Whitespace@22..23 " " - TypeName@23..27 - Ident@23..27 "int4" - Ascii41@27..28 ")" - Whitespace@28..29 " " - With@29..33 "WITH" - Whitespace@33..34 " " - Function@34..42 "FUNCTION" - Whitespace@42..43 " " - ObjectWithArgs@43..55 - Ident@43..47 "int4" - Ascii40@47..48 "(" - TypeName@48..54 - Bigint@48..54 "bigint" - Ascii41@54..55 ")" - Whitespace@55..56 " " - As@56..58 "AS" - Whitespace@58..59 " " - Assignment@59..69 "ASSIGNMENT" - Ascii59@69..70 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0038@2.snap b/crates/pg_syntax/tests/snapshots/data/0038@2.snap deleted file mode 100644 index 2a446dca..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0038@2.snap +++ /dev/null @@ -1,28 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE CAST (bigint AS int4) WITHOUT FUNCTION AS IMPLICIT; ---- -CreateCastStmt@0..58 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Cast@7..11 "CAST" - Whitespace@11..12 " " - Ascii40@12..13 "(" - TypeName@13..19 - Bigint@13..19 "bigint" - Whitespace@19..20 " " - As@20..22 "AS" - Whitespace@22..23 " " - TypeName@23..27 - Ident@23..27 "int4" - Ascii41@27..28 ")" - Whitespace@28..29 " " - Without@29..36 "WITHOUT" - Whitespace@36..37 " " - Function@37..45 "FUNCTION" - Whitespace@45..46 " " - As@46..48 "AS" - Whitespace@48..49 " " - ImplicitP@49..57 "IMPLICIT" - Ascii59@57..58 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0038@3.snap b/crates/pg_syntax/tests/snapshots/data/0038@3.snap deleted file mode 100644 index e8993525..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0038@3.snap +++ /dev/null @@ -1,28 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE CAST (bigint AS int4) WITH INOUT AS ASSIGNMENT; ---- -CreateCastStmt@0..54 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Cast@7..11 "CAST" - Whitespace@11..12 " " - Ascii40@12..13 "(" - TypeName@13..19 - Bigint@13..19 "bigint" - Whitespace@19..20 " " - As@20..22 "AS" - Whitespace@22..23 " " - TypeName@23..27 - Ident@23..27 "int4" - Ascii41@27..28 ")" - Whitespace@28..29 " " - With@29..33 "WITH" - Whitespace@33..34 " " - Inout@34..39 "INOUT" - Whitespace@39..40 " " - As@40..42 "AS" - Whitespace@42..43 " " - Assignment@43..53 "ASSIGNMENT" - Ascii59@53..54 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0039@1.snap b/crates/pg_syntax/tests/snapshots/data/0039@1.snap deleted file mode 100644 index 1762308f..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0039@1.snap +++ /dev/null @@ -1,38 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE AGGREGATE aggregate1 (int4) (sfunc = sfunc1, stype = stype1);" ---- -DefineStmt@0..68 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Aggregate@7..16 "AGGREGATE" - Whitespace@16..17 " " - Ident@17..27 "aggregate1" - Whitespace@27..28 " " - Ascii40@28..29 "(" - List@29..33 - FunctionParameter@29..33 - TypeName@29..33 - Ident@29..33 "int4" - Ascii41@33..34 ")" - Whitespace@34..35 " " - Ascii40@35..36 "(" - DefElem@36..50 - Ident@36..41 "sfunc" - Whitespace@41..42 " " - Ascii61@42..43 "=" - Whitespace@43..44 " " - TypeName@44..50 - Ident@44..50 "sfunc1" - Ascii44@50..51 "," - Whitespace@51..52 " " - DefElem@52..66 - Ident@52..57 "stype" - Whitespace@57..58 " " - Ascii61@58..59 "=" - Whitespace@59..60 " " - TypeName@60..66 - Ident@60..66 "stype1" - Ascii41@66..67 ")" - Ascii59@67..68 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0039@2.snap b/crates/pg_syntax/tests/snapshots/data/0039@2.snap deleted file mode 100644 index bb38da14..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0039@2.snap +++ /dev/null @@ -1,43 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE AGGREGATE aggregate1 (int4, bool) (sfunc = sfunc1, stype = stype1);" ---- -DefineStmt@0..74 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Aggregate@7..16 "AGGREGATE" - Whitespace@16..17 " " - Ident@17..27 "aggregate1" - Whitespace@27..28 " " - Ascii40@28..29 "(" - List@29..39 - FunctionParameter@29..33 - TypeName@29..33 - Ident@29..33 "int4" - Ascii44@33..34 "," - Whitespace@34..35 " " - FunctionParameter@35..39 - TypeName@35..39 - Ident@35..39 "bool" - Ascii41@39..40 ")" - Whitespace@40..41 " " - Ascii40@41..42 "(" - DefElem@42..56 - Ident@42..47 "sfunc" - Whitespace@47..48 " " - Ascii61@48..49 "=" - Whitespace@49..50 " " - TypeName@50..56 - Ident@50..56 "sfunc1" - Ascii44@56..57 "," - Whitespace@57..58 " " - DefElem@58..72 - Ident@58..63 "stype" - Whitespace@63..64 " " - Ascii61@64..65 "=" - Whitespace@65..66 " " - TypeName@66..72 - Ident@66..72 "stype1" - Ascii41@72..73 ")" - Ascii59@73..74 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0039@3.snap b/crates/pg_syntax/tests/snapshots/data/0039@3.snap deleted file mode 100644 index 54adc89c..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0039@3.snap +++ /dev/null @@ -1,35 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE AGGREGATE aggregate1 (*) (sfunc = sfunc1, stype = stype1);" ---- -DefineStmt@0..65 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Aggregate@7..16 "AGGREGATE" - Whitespace@16..17 " " - Ident@17..27 "aggregate1" - Whitespace@27..28 " " - Ascii40@28..29 "(" - Ascii42@29..30 "*" - Ascii41@30..31 ")" - Whitespace@31..32 " " - Ascii40@32..33 "(" - DefElem@33..47 - Ident@33..38 "sfunc" - Whitespace@38..39 " " - Ascii61@39..40 "=" - Whitespace@40..41 " " - TypeName@41..47 - Ident@41..47 "sfunc1" - Ascii44@47..48 "," - Whitespace@48..49 " " - DefElem@49..63 - Ident@49..54 "stype" - Whitespace@54..55 " " - Ascii61@55..56 "=" - Whitespace@56..57 " " - TypeName@57..63 - Ident@57..63 "stype1" - Ascii41@63..64 ")" - Ascii59@64..65 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0039@4.snap b/crates/pg_syntax/tests/snapshots/data/0039@4.snap deleted file mode 100644 index c9c833e1..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0039@4.snap +++ /dev/null @@ -1,46 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE AGGREGATE aggregate1 (int4) (sfunc = sfunc1, stype = stype1, finalfunc_extra, mfinalfuncextra);" ---- -DefineStmt@0..102 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Aggregate@7..16 "AGGREGATE" - Whitespace@16..17 " " - Ident@17..27 "aggregate1" - Whitespace@27..28 " " - Ascii40@28..29 "(" - List@29..33 - FunctionParameter@29..33 - TypeName@29..33 - Ident@29..33 "int4" - Ascii41@33..34 ")" - Whitespace@34..35 " " - Ascii40@35..36 "(" - DefElem@36..50 - Ident@36..41 "sfunc" - Whitespace@41..42 " " - Ascii61@42..43 "=" - Whitespace@43..44 " " - TypeName@44..50 - Ident@44..50 "sfunc1" - Ascii44@50..51 "," - Whitespace@51..52 " " - DefElem@52..66 - Ident@52..57 "stype" - Whitespace@57..58 " " - Ascii61@58..59 "=" - Whitespace@59..60 " " - TypeName@60..66 - Ident@60..66 "stype1" - Ascii44@66..67 "," - Whitespace@67..68 " " - DefElem@68..83 - Ident@68..83 "finalfunc_extra" - Ascii44@83..84 "," - Whitespace@84..85 " " - DefElem@85..100 - Ident@85..100 "mfinalfuncextra" - Ascii41@100..101 ")" - Ascii59@101..102 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0039@5.snap b/crates/pg_syntax/tests/snapshots/data/0039@5.snap deleted file mode 100644 index 9c894ba5..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0039@5.snap +++ /dev/null @@ -1,56 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE AGGREGATE aggregate1 (int4) (sfunc = sfunc1, stype = stype1, finalfunc_modify = read_only, parallel = restricted);" ---- -DefineStmt@0..121 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Aggregate@7..16 "AGGREGATE" - Whitespace@16..17 " " - Ident@17..27 "aggregate1" - Whitespace@27..28 " " - Ascii40@28..29 "(" - List@29..33 - FunctionParameter@29..33 - TypeName@29..33 - Ident@29..33 "int4" - Ascii41@33..34 ")" - Whitespace@34..35 " " - Ascii40@35..36 "(" - DefElem@36..50 - Ident@36..41 "sfunc" - Whitespace@41..42 " " - Ascii61@42..43 "=" - Whitespace@43..44 " " - TypeName@44..50 - Ident@44..50 "sfunc1" - Ascii44@50..51 "," - Whitespace@51..52 " " - DefElem@52..66 - Ident@52..57 "stype" - Whitespace@57..58 " " - Ascii61@58..59 "=" - Whitespace@59..60 " " - TypeName@60..66 - Ident@60..66 "stype1" - Ascii44@66..67 "," - Whitespace@67..68 " " - DefElem@68..96 - Ident@68..84 "finalfunc_modify" - Whitespace@84..85 " " - Ascii61@85..86 "=" - Whitespace@86..87 " " - TypeName@87..96 - Ident@87..96 "read_only" - Ascii44@96..97 "," - Whitespace@97..98 " " - DefElem@98..119 - Parallel@98..106 "parallel" - Whitespace@106..107 " " - Ascii61@107..108 "=" - Whitespace@108..109 " " - TypeName@109..119 - Ident@109..119 "restricted" - Ascii41@119..120 ")" - Ascii59@120..121 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0039@6.snap b/crates/pg_syntax/tests/snapshots/data/0039@6.snap deleted file mode 100644 index 12f0a7ec..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0039@6.snap +++ /dev/null @@ -1,59 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE AGGREGATE percentile_disc (float8 ORDER BY anyelement) (sfunc = ordered_set_transition, stype = internal, finalfunc = percentile_disc_final, finalfunc_extra);" ---- -DefineStmt@0..165 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Aggregate@7..16 "AGGREGATE" - Whitespace@16..17 " " - Ident@17..32 "percentile_disc" - Whitespace@32..33 " " - Ascii40@33..34 "(" - List@34..60 - FunctionParameter@34..40 - TypeName@34..40 - Ident@34..40 "float8" - Whitespace@40..41 " " - Order@41..46 "ORDER" - Whitespace@46..47 " " - By@47..49 "BY" - Whitespace@49..50 " " - FunctionParameter@50..60 - TypeName@50..60 - Ident@50..60 "anyelement" - Ascii41@60..61 ")" - Whitespace@61..62 " " - Ascii40@62..63 "(" - DefElem@63..93 - Ident@63..68 "sfunc" - Whitespace@68..69 " " - Ascii61@69..70 "=" - Whitespace@70..71 " " - TypeName@71..93 - Ident@71..93 "ordered_set_transition" - Ascii44@93..94 "," - Whitespace@94..95 " " - DefElem@95..111 - Ident@95..100 "stype" - Whitespace@100..101 " " - Ascii61@101..102 "=" - Whitespace@102..103 " " - TypeName@103..111 - Ident@103..111 "internal" - Ascii44@111..112 "," - Whitespace@112..113 " " - DefElem@113..146 - Ident@113..122 "finalfunc" - Whitespace@122..123 " " - Ascii61@123..124 "=" - Whitespace@124..125 " " - TypeName@125..146 - Ident@125..146 "percentile_disc_final" - Ascii44@146..147 "," - Whitespace@147..148 " " - DefElem@148..163 - Ident@148..163 "finalfunc_extra" - Ascii41@163..164 ")" - Ascii59@164..165 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0039@7.snap b/crates/pg_syntax/tests/snapshots/data/0039@7.snap deleted file mode 100644 index ecaaca72..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0039@7.snap +++ /dev/null @@ -1,51 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE AGGREGATE custom_aggregate (float8 ORDER BY column1, column2) (sfunc = sfunc1, stype = stype1);" ---- -DefineStmt@0..102 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Aggregate@7..16 "AGGREGATE" - Whitespace@16..17 " " - Ident@17..33 "custom_aggregate" - Whitespace@33..34 " " - Ascii40@34..35 "(" - List@35..67 - FunctionParameter@35..41 - TypeName@35..41 - Ident@35..41 "float8" - Whitespace@41..42 " " - Order@42..47 "ORDER" - Whitespace@47..48 " " - By@48..50 "BY" - Whitespace@50..51 " " - FunctionParameter@51..58 - TypeName@51..58 - Ident@51..58 "column1" - Ascii44@58..59 "," - Whitespace@59..60 " " - FunctionParameter@60..67 - TypeName@60..67 - Ident@60..67 "column2" - Ascii41@67..68 ")" - Whitespace@68..69 " " - Ascii40@69..70 "(" - DefElem@70..84 - Ident@70..75 "sfunc" - Whitespace@75..76 " " - Ascii61@76..77 "=" - Whitespace@77..78 " " - TypeName@78..84 - Ident@78..84 "sfunc1" - Ascii44@84..85 "," - Whitespace@85..86 " " - DefElem@86..100 - Ident@86..91 "stype" - Whitespace@91..92 " " - Ascii61@92..93 "=" - Whitespace@93..94 " " - TypeName@94..100 - Ident@94..100 "stype1" - Ascii41@100..101 ")" - Ascii59@101..102 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0040@1.snap b/crates/pg_syntax/tests/snapshots/data/0040@1.snap deleted file mode 100644 index 9327b8f6..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0040@1.snap +++ /dev/null @@ -1,35 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql;" ---- -CreateFunctionStmt@0..113 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Function@7..15 "FUNCTION" - Whitespace@15..16 " " - Ident@16..22 "getfoo" - Ascii40@22..23 "(" - FunctionParameter@23..26 - TypeName@23..26 - IntP@23..26 "int" - Ascii41@26..27 ")" - Whitespace@27..28 " " - Returns@28..35 "RETURNS" - Whitespace@35..36 " " - Setof@36..41 "SETOF" - Whitespace@41..42 " " - TypeName@42..47 - Ident@42..47 "users" - Whitespace@47..48 " " - DefElem@48..99 - As@48..50 "AS" - Whitespace@50..51 " " - List@51..99 - Sconst@51..99 "$$SELECT * FROM \\\"use ..." - Whitespace@99..100 " " - DefElem@100..112 - Language@100..108 "LANGUAGE" - Whitespace@108..109 " " - SqlP@109..112 "sql" - Ascii59@112..113 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0040@2.snap b/crates/pg_syntax/tests/snapshots/data/0040@2.snap deleted file mode 100644 index 1856ee9d..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0040@2.snap +++ /dev/null @@ -1,39 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql;" ---- -CreateFunctionStmt@0..124 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Or@7..9 "OR" - Whitespace@9..10 " " - Replace@10..17 "REPLACE" - Whitespace@17..18 " " - Function@18..26 "FUNCTION" - Whitespace@26..27 " " - Ident@27..33 "getfoo" - Ascii40@33..34 "(" - FunctionParameter@34..37 - TypeName@34..37 - IntP@34..37 "int" - Ascii41@37..38 ")" - Whitespace@38..39 " " - Returns@39..46 "RETURNS" - Whitespace@46..47 " " - Setof@47..52 "SETOF" - Whitespace@52..53 " " - TypeName@53..58 - Ident@53..58 "users" - Whitespace@58..59 " " - DefElem@59..110 - As@59..61 "AS" - Whitespace@61..62 " " - List@62..110 - Sconst@62..110 "$$SELECT * FROM \\\"use ..." - Whitespace@110..111 " " - DefElem@111..123 - Language@111..119 "LANGUAGE" - Whitespace@119..120 " " - SqlP@120..123 "sql" - Ascii59@123..124 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0040@3.snap b/crates/pg_syntax/tests/snapshots/data/0040@3.snap deleted file mode 100644 index 621be529..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0040@3.snap +++ /dev/null @@ -1,42 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE;" ---- -CreateFunctionStmt@0..134 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Or@7..9 "OR" - Whitespace@9..10 " " - Replace@10..17 "REPLACE" - Whitespace@17..18 " " - Function@18..26 "FUNCTION" - Whitespace@26..27 " " - Ident@27..33 "getfoo" - Ascii40@33..34 "(" - FunctionParameter@34..37 - TypeName@34..37 - IntP@34..37 "int" - Ascii41@37..38 ")" - Whitespace@38..39 " " - Returns@39..46 "RETURNS" - Whitespace@46..47 " " - Setof@47..52 "SETOF" - Whitespace@52..53 " " - TypeName@53..58 - Ident@53..58 "users" - Whitespace@58..59 " " - DefElem@59..110 - As@59..61 "AS" - Whitespace@61..62 " " - List@62..110 - Sconst@62..110 "$$SELECT * FROM \\\"use ..." - Whitespace@110..111 " " - DefElem@111..123 - Language@111..119 "LANGUAGE" - Whitespace@119..120 " " - SqlP@120..123 "sql" - Whitespace@123..124 " " - DefElem@124..133 - Immutable@124..133 "IMMUTABLE" - Ascii59@133..134 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0040@4.snap b/crates/pg_syntax/tests/snapshots/data/0040@4.snap deleted file mode 100644 index 1d40703e..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0040@4.snap +++ /dev/null @@ -1,45 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE STRICT;" ---- -CreateFunctionStmt@0..141 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Or@7..9 "OR" - Whitespace@9..10 " " - Replace@10..17 "REPLACE" - Whitespace@17..18 " " - Function@18..26 "FUNCTION" - Whitespace@26..27 " " - Ident@27..33 "getfoo" - Ascii40@33..34 "(" - FunctionParameter@34..37 - TypeName@34..37 - IntP@34..37 "int" - Ascii41@37..38 ")" - Whitespace@38..39 " " - Returns@39..46 "RETURNS" - Whitespace@46..47 " " - Setof@47..52 "SETOF" - Whitespace@52..53 " " - TypeName@53..58 - Ident@53..58 "users" - Whitespace@58..59 " " - DefElem@59..110 - As@59..61 "AS" - Whitespace@61..62 " " - List@62..110 - Sconst@62..110 "$$SELECT * FROM \\\"use ..." - Whitespace@110..111 " " - DefElem@111..123 - Language@111..119 "LANGUAGE" - Whitespace@119..120 " " - SqlP@120..123 "sql" - Whitespace@123..124 " " - DefElem@124..133 - Immutable@124..133 "IMMUTABLE" - Whitespace@133..134 " " - DefElem@134..140 - StrictP@134..140 "STRICT" - Ascii59@140..141 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0040@5.snap b/crates/pg_syntax/tests/snapshots/data/0040@5.snap deleted file mode 100644 index 30e37019..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0040@5.snap +++ /dev/null @@ -1,53 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE RETURNS NULL ON NULL INPUT;" ---- -CreateFunctionStmt@0..161 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Or@7..9 "OR" - Whitespace@9..10 " " - Replace@10..17 "REPLACE" - Whitespace@17..18 " " - Function@18..26 "FUNCTION" - Whitespace@26..27 " " - Ident@27..33 "getfoo" - Ascii40@33..34 "(" - FunctionParameter@34..37 - TypeName@34..37 - IntP@34..37 "int" - Ascii41@37..38 ")" - Whitespace@38..39 " " - Returns@39..46 "RETURNS" - Whitespace@46..47 " " - Setof@47..52 "SETOF" - Whitespace@52..53 " " - TypeName@53..58 - Ident@53..58 "users" - Whitespace@58..59 " " - DefElem@59..110 - As@59..61 "AS" - Whitespace@61..62 " " - List@62..110 - Sconst@62..110 "$$SELECT * FROM \\\"use ..." - Whitespace@110..111 " " - DefElem@111..123 - Language@111..119 "LANGUAGE" - Whitespace@119..120 " " - SqlP@120..123 "sql" - Whitespace@123..124 " " - DefElem@124..133 - Immutable@124..133 "IMMUTABLE" - Whitespace@133..134 " " - DefElem@134..141 - Returns@134..141 "RETURNS" - Whitespace@141..142 " " - NullP@142..146 "NULL" - Whitespace@146..147 " " - On@147..149 "ON" - Whitespace@149..150 " " - NullP@150..154 "NULL" - Whitespace@154..155 " " - InputP@155..160 "INPUT" - Ascii59@160..161 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0040@6.snap b/crates/pg_syntax/tests/snapshots/data/0040@6.snap deleted file mode 100644 index e7c3b344..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0040@6.snap +++ /dev/null @@ -1,51 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE CALLED ON NULL INPUT;" ---- -CreateFunctionStmt@0..155 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Or@7..9 "OR" - Whitespace@9..10 " " - Replace@10..17 "REPLACE" - Whitespace@17..18 " " - Function@18..26 "FUNCTION" - Whitespace@26..27 " " - Ident@27..33 "getfoo" - Ascii40@33..34 "(" - FunctionParameter@34..37 - TypeName@34..37 - IntP@34..37 "int" - Ascii41@37..38 ")" - Whitespace@38..39 " " - Returns@39..46 "RETURNS" - Whitespace@46..47 " " - Setof@47..52 "SETOF" - Whitespace@52..53 " " - TypeName@53..58 - Ident@53..58 "users" - Whitespace@58..59 " " - DefElem@59..110 - As@59..61 "AS" - Whitespace@61..62 " " - List@62..110 - Sconst@62..110 "$$SELECT * FROM \\\"use ..." - Whitespace@110..111 " " - DefElem@111..123 - Language@111..119 "LANGUAGE" - Whitespace@119..120 " " - SqlP@120..123 "sql" - Whitespace@123..124 " " - DefElem@124..133 - Immutable@124..133 "IMMUTABLE" - Whitespace@133..134 " " - DefElem@134..140 - Called@134..140 "CALLED" - Whitespace@140..141 " " - On@141..143 "ON" - Whitespace@143..144 " " - NullP@144..148 "NULL" - Whitespace@148..149 " " - InputP@149..154 "INPUT" - Ascii59@154..155 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0040@7.snap b/crates/pg_syntax/tests/snapshots/data/0040@7.snap deleted file mode 100644 index a9a97cf6..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0040@7.snap +++ /dev/null @@ -1,46 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE OR REPLACE FUNCTION getfoo() RETURNS text AS $$SELECT name FROM \\\"users\\\" LIMIT 1$$ LANGUAGE sql IMMUTABLE CALLED ON NULL INPUT;" ---- -CreateFunctionStmt@0..135 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Or@7..9 "OR" - Whitespace@9..10 " " - Replace@10..17 "REPLACE" - Whitespace@17..18 " " - Function@18..26 "FUNCTION" - Whitespace@26..27 " " - Ident@27..33 "getfoo" - Ascii40@33..34 "(" - Ascii41@34..35 ")" - Whitespace@35..36 " " - Returns@36..43 "RETURNS" - Whitespace@43..44 " " - TypeName@44..48 - TextP@44..48 "text" - Whitespace@48..49 " " - DefElem@49..90 - As@49..51 "AS" - Whitespace@51..52 " " - List@52..90 - Sconst@52..90 "$$SELECT name FROM \\\" ..." - Whitespace@90..91 " " - DefElem@91..103 - Language@91..99 "LANGUAGE" - Whitespace@99..100 " " - SqlP@100..103 "sql" - Whitespace@103..104 " " - DefElem@104..113 - Immutable@104..113 "IMMUTABLE" - Whitespace@113..114 " " - DefElem@114..120 - Called@114..120 "CALLED" - Whitespace@120..121 " " - On@121..123 "ON" - Whitespace@123..124 " " - NullP@124..128 "NULL" - Whitespace@128..129 " " - InputP@129..134 "INPUT" - Ascii59@134..135 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0041@1.snap b/crates/pg_syntax/tests/snapshots/data/0041@1.snap deleted file mode 100644 index 4fff07e6..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0041@1.snap +++ /dev/null @@ -1,12 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE SCHEMA myschema; ---- -CreateSchemaStmt@0..23 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Schema@7..13 "SCHEMA" - Whitespace@13..14 " " - Ident@14..22 "myschema" - Ascii59@22..23 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0041@2.snap b/crates/pg_syntax/tests/snapshots/data/0041@2.snap deleted file mode 100644 index 4fe627a5..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0041@2.snap +++ /dev/null @@ -1,15 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE SCHEMA AUTHORIZATION joe; ---- -CreateSchemaStmt@0..32 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Schema@7..13 "SCHEMA" - Whitespace@13..14 " " - Authorization@14..27 "AUTHORIZATION" - Whitespace@27..28 " " - RoleSpec@28..31 - Ident@28..31 "joe" - Ascii59@31..32 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0041@3.snap b/crates/pg_syntax/tests/snapshots/data/0041@3.snap deleted file mode 100644 index e6cbf88e..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0041@3.snap +++ /dev/null @@ -1,23 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE SCHEMA IF NOT EXISTS test AUTHORIZATION joe; ---- -CreateSchemaStmt@0..51 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Schema@7..13 "SCHEMA" - Whitespace@13..14 " " - IfP@14..16 "IF" - Whitespace@16..17 " " - Not@17..20 "NOT" - Whitespace@20..21 " " - Exists@21..27 "EXISTS" - Whitespace@27..28 " " - Ident@28..32 "test" - Whitespace@32..33 " " - Authorization@33..46 "AUTHORIZATION" - Whitespace@46..47 " " - RoleSpec@47..50 - Ident@47..50 "joe" - Ascii59@50..51 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0041@4.snap b/crates/pg_syntax/tests/snapshots/data/0041@4.snap deleted file mode 100644 index 5ef37004..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0041@4.snap +++ /dev/null @@ -1,83 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE SCHEMA hollywood CREATE TABLE films (title text, release date, awards text[]) CREATE VIEW winners AS SELECT title, release FROM films WHERE awards IS NOT NULL;" ---- -CreateSchemaStmt@0..166 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Schema@7..13 "SCHEMA" - Whitespace@13..14 " " - Ident@14..23 "hollywood" - Whitespace@23..24 " " - CreateStmt@24..81 - Create@24..30 "CREATE" - Whitespace@30..31 " " - Table@31..36 "TABLE" - Whitespace@36..37 " " - RangeVar@37..42 - Ident@37..42 "films" - Whitespace@42..43 " " - Ascii40@43..44 "(" - ColumnDef@44..54 - Ident@44..49 "title" - Whitespace@49..50 " " - TypeName@50..54 - TextP@50..54 "text" - Ascii44@54..55 "," - Whitespace@55..56 " " - ColumnDef@56..68 - Release@56..63 "release" - Whitespace@63..64 " " - TypeName@64..68 - Ident@64..68 "date" - Ascii44@68..69 "," - Whitespace@69..70 " " - ColumnDef@70..81 - Ident@70..76 "awards" - Whitespace@76..77 " " - TypeName@77..81 - TextP@77..81 "text" - Ascii91@81..82 "[" - Ascii93@82..83 "]" - Ascii41@83..84 ")" - Whitespace@84..85 " " - ViewStmt@85..165 - Create@85..91 "CREATE" - Whitespace@91..92 " " - View@92..96 "VIEW" - Whitespace@96..97 " " - RangeVar@97..104 - Ident@97..104 "winners" - Whitespace@104..105 " " - As@105..107 "AS" - Whitespace@107..108 " " - SelectStmt@108..165 - Select@108..114 "SELECT" - Whitespace@114..115 " " - ResTarget@115..120 - ColumnRef@115..120 - Ident@115..120 "title" - Ascii44@120..121 "," - Whitespace@121..122 " " - ResTarget@122..129 - ColumnRef@122..129 - Release@122..129 "release" - Whitespace@129..130 " " - From@130..134 "FROM" - Whitespace@134..135 " " - RangeVar@135..140 - Ident@135..140 "films" - Whitespace@140..141 " " - Where@141..146 "WHERE" - Whitespace@146..147 " " - NullTest@147..165 - ColumnRef@147..153 - Ident@147..153 "awards" - Whitespace@153..154 " " - Is@154..156 "IS" - Whitespace@156..157 " " - Not@157..160 "NOT" - Whitespace@160..161 " " - NullP@161..165 "NULL" - Ascii59@165..166 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0042@1.snap b/crates/pg_syntax/tests/snapshots/data/0042@1.snap deleted file mode 100644 index 57b18249..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0042@1.snap +++ /dev/null @@ -1,42 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE DOMAIN us_postal_code AS TEXT CHECK(VALUE ~ '^\\d{5}$' OR VALUE ~ '^\\d{5}-\\d{4}$');" ---- -CreateDomainStmt@0..89 - Create@0..6 "CREATE" - Whitespace@6..7 " " - DomainP@7..13 "DOMAIN" - Whitespace@13..14 " " - Ident@14..28 "us_postal_code" - Whitespace@28..29 " " - As@29..31 "AS" - Whitespace@31..32 " " - TypeName@32..36 - TextP@32..36 "TEXT" - Whitespace@36..37 " " - Constraint@37..87 - Check@37..42 "CHECK" - Ascii40@42..43 "(" - BoolExpr@43..87 - AExpr@43..60 - ColumnRef@43..48 - ValueP@43..48 "VALUE" - Whitespace@48..49 " " - Op@49..50 "~" - Whitespace@50..51 " " - AConst@51..60 - Sconst@51..60 "'^\\d{5}$'" - Whitespace@60..61 " " - Or@61..63 "OR" - Whitespace@63..64 " " - AExpr@64..87 - ColumnRef@64..69 - ValueP@64..69 "VALUE" - Whitespace@69..70 " " - Op@70..71 "~" - Whitespace@71..72 " " - AConst@72..87 - Sconst@72..87 "'^\\d{5}-\\d{4}$'" - Ascii41@87..88 ")" - Ascii59@88..89 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0043@1.snap b/crates/pg_syntax/tests/snapshots/data/0043@1.snap deleted file mode 100644 index 433b48c3..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0043@1.snap +++ /dev/null @@ -1,58 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE UNLOGGED TABLE cities (name text, population real, altitude double, identifier smallint, postal_code int, foreign_id bigint);" ---- -CreateStmt@0..132 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Unlogged@7..15 "UNLOGGED" - Whitespace@15..16 " " - Table@16..21 "TABLE" - Whitespace@21..22 " " - RangeVar@22..28 - Ident@22..28 "cities" - Whitespace@28..29 " " - Ascii40@29..30 "(" - ColumnDef@30..39 - NameP@30..34 "name" - Whitespace@34..35 " " - TypeName@35..39 - TextP@35..39 "text" - Ascii44@39..40 "," - Whitespace@40..41 " " - ColumnDef@41..56 - Ident@41..51 "population" - Whitespace@51..52 " " - TypeName@52..56 - Real@52..56 "real" - Ascii44@56..57 "," - Whitespace@57..58 " " - ColumnDef@58..73 - Ident@58..66 "altitude" - Whitespace@66..67 " " - TypeName@67..73 - DoubleP@67..73 "double" - Ascii44@73..74 "," - Whitespace@74..75 " " - ColumnDef@75..94 - Ident@75..85 "identifier" - Whitespace@85..86 " " - TypeName@86..94 - Smallint@86..94 "smallint" - Ascii44@94..95 "," - Whitespace@95..96 " " - ColumnDef@96..111 - Ident@96..107 "postal_code" - Whitespace@107..108 " " - TypeName@108..111 - IntP@108..111 "int" - Ascii44@111..112 "," - Whitespace@112..113 " " - ColumnDef@113..130 - Ident@113..123 "foreign_id" - Whitespace@123..124 " " - TypeName@124..130 - Bigint@124..130 "bigint" - Ascii41@130..131 ")" - Ascii59@131..132 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0043@10.snap b/crates/pg_syntax/tests/snapshots/data/0043@10.snap deleted file mode 100644 index 3c51d79b..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0043@10.snap +++ /dev/null @@ -1,25 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE TABLE like_constraint_rename_cache (LIKE constraint_rename_cache INCLUDING ALL); ---- -CreateStmt@0..87 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Table@7..12 "TABLE" - Whitespace@12..13 " " - RangeVar@13..41 - Ident@13..41 "like_constraint_renam ..." - Whitespace@41..42 " " - Ascii40@42..43 "(" - TableLikeClause@43..85 - Like@43..47 "LIKE" - Whitespace@47..48 " " - RangeVar@48..71 - Ident@48..71 "constraint_rename_cache" - Whitespace@71..72 " " - Including@72..81 "INCLUDING" - Whitespace@81..82 " " - All@82..85 "ALL" - Ascii41@85..86 ")" - Ascii59@86..87 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0043@11.snap b/crates/pg_syntax/tests/snapshots/data/0043@11.snap deleted file mode 100644 index d79df88e..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0043@11.snap +++ /dev/null @@ -1,58 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TABLE distributors (did int, name varchar(40), UNIQUE (name) WITH (fillfactor=70)) WITH (fillfactor=70);" ---- -CreateStmt@0..111 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Table@7..12 "TABLE" - Whitespace@12..13 " " - RangeVar@13..25 - Ident@13..25 "distributors" - Whitespace@25..26 " " - Ascii40@26..27 "(" - ColumnDef@27..34 - Ident@27..30 "did" - Whitespace@30..31 " " - TypeName@31..34 - IntP@31..34 "int" - Ascii44@34..35 "," - Whitespace@35..36 " " - ColumnDef@36..51 - NameP@36..40 "name" - Whitespace@40..41 " " - TypeName@41..51 - Varchar@41..48 "varchar" - Ascii40@48..49 "(" - AConst@49..51 - Iconst@49..51 "40" - Ascii41@51..52 ")" - Ascii44@52..53 "," - Whitespace@53..54 " " - Constraint@54..87 - Unique@54..60 "UNIQUE" - Whitespace@60..61 " " - Ascii40@61..62 "(" - NameP@62..66 "name" - Ascii41@66..67 ")" - Whitespace@67..68 " " - With@68..72 "WITH" - Whitespace@72..73 " " - Ascii40@73..74 "(" - DefElem@74..87 - Ident@74..84 "fillfactor" - Ascii61@84..85 "=" - Iconst@85..87 "70" - Ascii41@87..88 ")" - Ascii41@88..89 ")" - Whitespace@89..90 " " - With@90..94 "WITH" - Whitespace@94..95 " " - Ascii40@95..96 "(" - DefElem@96..109 - Ident@96..106 "fillfactor" - Ascii61@106..107 "=" - Iconst@107..109 "70" - Ascii41@109..110 ")" - Ascii59@110..111 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0043@2.snap b/crates/pg_syntax/tests/snapshots/data/0043@2.snap deleted file mode 100644 index 3c460f90..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0043@2.snap +++ /dev/null @@ -1,164 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TABLE IF NOT EXISTS distributors (name varchar(40) DEFAULT 'Luso Films', len interval hour to second(3), name varchar(40) DEFAULT 'Luso Films', did int DEFAULT nextval('distributors_serial'), stamp timestamp DEFAULT now() NOT NULL, stamptz timestamp with time zone, \"time\" time NOT NULL, timetz time with time zone, CONSTRAINT name_len PRIMARY KEY (name, len));" ---- -CreateStmt@0..368 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Table@7..12 "TABLE" - Whitespace@12..13 " " - IfP@13..15 "IF" - Whitespace@15..16 " " - Not@16..19 "NOT" - Whitespace@19..20 " " - Exists@20..26 "EXISTS" - Whitespace@26..27 " " - RangeVar@27..39 - Ident@27..39 "distributors" - Whitespace@39..40 " " - Ascii40@40..41 "(" - ColumnDef@41..78 - NameP@41..45 "name" - Whitespace@45..46 " " - TypeName@46..56 - Varchar@46..53 "varchar" - Ascii40@53..54 "(" - AConst@54..56 - Iconst@54..56 "40" - Ascii41@56..57 ")" - Whitespace@57..58 " " - Constraint@58..78 - Default@58..65 "DEFAULT" - Whitespace@65..66 " " - AConst@66..78 - Sconst@66..78 "'Luso Films'" - Ascii44@78..79 "," - Whitespace@79..80 " " - ColumnDef@80..109 - Ident@80..83 "len" - Whitespace@83..84 " " - TypeName@84..109 - Interval@84..92 "interval" - Whitespace@92..93 " " - AConst@93..97 - HourP@93..97 "hour" - Whitespace@97..98 " " - To@98..100 "to" - Whitespace@100..101 " " - SecondP@101..107 "second" - Ascii40@107..108 "(" - AConst@108..109 - Iconst@108..109 "3" - Ascii41@109..110 ")" - Ascii44@110..111 "," - Whitespace@111..112 " " - ColumnDef@112..149 - NameP@112..116 "name" - Whitespace@116..117 " " - TypeName@117..127 - Varchar@117..124 "varchar" - Ascii40@124..125 "(" - AConst@125..127 - Iconst@125..127 "40" - Ascii41@127..128 ")" - Whitespace@128..129 " " - Constraint@129..149 - Default@129..136 "DEFAULT" - Whitespace@136..137 " " - AConst@137..149 - Sconst@137..149 "'Luso Films'" - Ascii44@149..150 "," - Whitespace@150..151 " " - ColumnDef@151..196 - Ident@151..154 "did" - Whitespace@154..155 " " - TypeName@155..158 - IntP@155..158 "int" - Whitespace@158..159 " " - Constraint@159..196 - Default@159..166 "DEFAULT" - Whitespace@166..167 " " - FuncCall@167..196 - Ident@167..174 "nextval" - Ascii40@174..175 "(" - AConst@175..196 - Sconst@175..196 "'distributors_serial'" - Ascii41@196..197 ")" - Ascii44@197..198 "," - Whitespace@198..199 " " - ColumnDef@199..237 - Ident@199..204 "stamp" - Whitespace@204..205 " " - TypeName@205..214 - Timestamp@205..214 "timestamp" - Whitespace@214..215 " " - Constraint@215..226 - Default@215..222 "DEFAULT" - Whitespace@222..223 " " - FuncCall@223..226 - Ident@223..226 "now" - Ascii40@226..227 "(" - Ascii41@227..228 ")" - Whitespace@228..229 " " - Constraint@229..237 - Not@229..232 "NOT" - Whitespace@232..233 " " - NullP@233..237 "NULL" - Ascii44@237..238 "," - Whitespace@238..239 " " - ColumnDef@239..271 - Ident@239..246 "stamptz" - Whitespace@246..247 " " - TypeName@247..271 - Timestamp@247..256 "timestamp" - Whitespace@256..257 " " - With@257..261 "with" - Whitespace@261..262 " " - Time@262..266 "time" - Whitespace@266..267 " " - Zone@267..271 "zone" - Ascii44@271..272 "," - Whitespace@272..273 " " - ColumnDef@273..293 - Ident@273..279 "\"time\"" - Whitespace@279..280 " " - TypeName@280..284 - Time@280..284 "time" - Whitespace@284..285 " " - Constraint@285..293 - Not@285..288 "NOT" - Whitespace@288..289 " " - NullP@289..293 "NULL" - Ascii44@293..294 "," - Whitespace@294..295 " " - ColumnDef@295..321 - Ident@295..301 "timetz" - Whitespace@301..302 " " - TypeName@302..321 - Time@302..306 "time" - Whitespace@306..307 " " - With@307..311 "with" - Whitespace@311..312 " " - Time@312..316 "time" - Whitespace@316..317 " " - Zone@317..321 "zone" - Ascii44@321..322 "," - Whitespace@322..323 " " - Constraint@323..365 - Constraint@323..333 "CONSTRAINT" - Whitespace@333..334 " " - Ident@334..342 "name_len" - Whitespace@342..343 " " - Primary@343..350 "PRIMARY" - Whitespace@350..351 " " - Key@351..354 "KEY" - Whitespace@354..355 " " - Ascii40@355..356 "(" - NameP@356..360 "name" - Ascii44@360..361 "," - Whitespace@361..362 " " - Ident@362..365 "len" - Ascii41@365..366 ")" - Ascii41@366..367 ")" - Ascii59@367..368 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0043@3.snap b/crates/pg_syntax/tests/snapshots/data/0043@3.snap deleted file mode 100644 index d388454b..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0043@3.snap +++ /dev/null @@ -1,89 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TABLE types (a real, b double precision, c numeric(2, 3), d char(4), e char(5), f varchar(6), g varchar(7));" ---- -CreateStmt@0..115 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Table@7..12 "TABLE" - Whitespace@12..13 " " - RangeVar@13..18 - TypesP@13..18 "types" - Whitespace@18..19 " " - Ascii40@19..20 "(" - ColumnDef@20..26 - Ident@20..21 "a" - Whitespace@21..22 " " - TypeName@22..26 - Real@22..26 "real" - Ascii44@26..27 "," - Whitespace@27..28 " " - ColumnDef@28..46 - Ident@28..29 "b" - Whitespace@29..30 " " - TypeName@30..46 - DoubleP@30..36 "double" - Whitespace@36..37 " " - Precision@37..46 "precision" - Ascii44@46..47 "," - Whitespace@47..48 " " - ColumnDef@48..62 - Ident@48..49 "c" - Whitespace@49..50 " " - TypeName@50..62 - Numeric@50..57 "numeric" - Ascii40@57..58 "(" - AConst@58..59 - Iconst@58..59 "2" - Ascii44@59..60 "," - Whitespace@60..61 " " - AConst@61..62 - Iconst@61..62 "3" - Ascii41@62..63 ")" - Ascii44@63..64 "," - Whitespace@64..65 " " - ColumnDef@65..73 - Ident@65..66 "d" - Whitespace@66..67 " " - TypeName@67..73 - CharP@67..71 "char" - Ascii40@71..72 "(" - AConst@72..73 - Iconst@72..73 "4" - Ascii41@73..74 ")" - Ascii44@74..75 "," - Whitespace@75..76 " " - ColumnDef@76..84 - Ident@76..77 "e" - Whitespace@77..78 " " - TypeName@78..84 - CharP@78..82 "char" - Ascii40@82..83 "(" - AConst@83..84 - Iconst@83..84 "5" - Ascii41@84..85 ")" - Ascii44@85..86 "," - Whitespace@86..87 " " - ColumnDef@87..98 - Ident@87..88 "f" - Whitespace@88..89 " " - TypeName@89..98 - Varchar@89..96 "varchar" - Ascii40@96..97 "(" - AConst@97..98 - Iconst@97..98 "6" - Ascii41@98..99 ")" - Ascii44@99..100 "," - Whitespace@100..101 " " - ColumnDef@101..112 - Ident@101..102 "g" - Whitespace@102..103 " " - TypeName@103..112 - Varchar@103..110 "varchar" - Ascii40@110..111 "(" - AConst@111..112 - Iconst@111..112 "7" - Ascii41@112..113 ")" - Ascii41@113..114 ")" - Ascii59@114..115 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0043@4.snap b/crates/pg_syntax/tests/snapshots/data/0043@4.snap deleted file mode 100644 index e2e65193..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0043@4.snap +++ /dev/null @@ -1,30 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE TABLE types (a geometry(point) NOT NULL); ---- -CreateStmt@0..48 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Table@7..12 "TABLE" - Whitespace@12..13 " " - RangeVar@13..18 - TypesP@13..18 "types" - Whitespace@18..19 " " - Ascii40@19..20 "(" - ColumnDef@20..46 - Ident@20..21 "a" - Whitespace@21..22 " " - TypeName@22..36 - Ident@22..30 "geometry" - Ascii40@30..31 "(" - ColumnRef@31..36 - Ident@31..36 "point" - Ascii41@36..37 ")" - Whitespace@37..38 " " - Constraint@38..46 - Not@38..41 "NOT" - Whitespace@41..42 " " - NullP@42..46 "NULL" - Ascii41@46..47 ")" - Ascii59@47..48 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0043@5.snap b/crates/pg_syntax/tests/snapshots/data/0043@5.snap deleted file mode 100644 index 5eea1e8f..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0043@5.snap +++ /dev/null @@ -1,36 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TABLE tablename (colname int NOT NULL DEFAULT nextval('tablename_colname_seq'));" ---- -CreateStmt@0..87 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Table@7..12 "TABLE" - Whitespace@12..13 " " - RangeVar@13..22 - Ident@13..22 "tablename" - Whitespace@22..23 " " - Ascii40@23..24 "(" - ColumnDef@24..84 - Ident@24..31 "colname" - Whitespace@31..32 " " - TypeName@32..35 - IntP@32..35 "int" - Whitespace@35..36 " " - Constraint@36..44 - Not@36..39 "NOT" - Whitespace@39..40 " " - NullP@40..44 "NULL" - Whitespace@44..45 " " - Constraint@45..84 - Default@45..52 "DEFAULT" - Whitespace@52..53 " " - FuncCall@53..84 - Ident@53..60 "nextval" - Ascii40@60..61 "(" - AConst@61..84 - Sconst@61..84 "'tablename_colname_seq'" - Ascii41@84..85 ")" - Ascii41@85..86 ")" - Ascii59@86..87 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0043@6.snap b/crates/pg_syntax/tests/snapshots/data/0043@6.snap deleted file mode 100644 index 879bdc39..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0043@6.snap +++ /dev/null @@ -1,32 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE TABLE capitals (state char(2)) INHERITS (cities); ---- -CreateStmt@0..56 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Table@7..12 "TABLE" - Whitespace@12..13 " " - RangeVar@13..21 - Ident@13..21 "capitals" - Whitespace@21..22 " " - Ascii40@22..23 "(" - ColumnDef@23..35 - Ident@23..28 "state" - Whitespace@28..29 " " - TypeName@29..35 - CharP@29..33 "char" - Ascii40@33..34 "(" - AConst@34..35 - Iconst@34..35 "2" - Ascii41@35..36 ")" - Ascii41@36..37 ")" - Whitespace@37..38 " " - Inherits@38..46 "INHERITS" - Whitespace@46..47 " " - Ascii40@47..48 "(" - RangeVar@48..54 - Ident@48..54 "cities" - Ascii41@54..55 ")" - Ascii59@55..56 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0044@1.snap b/crates/pg_syntax/tests/snapshots/data/0044@1.snap deleted file mode 100644 index 17fbd351..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0044@1.snap +++ /dev/null @@ -1,39 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE VIEW comedies AS SELECT * FROM films WHERE kind = 'Comedy';" ---- -ViewStmt@0..66 - Create@0..6 "CREATE" - Whitespace@6..7 " " - View@7..11 "VIEW" - Whitespace@11..12 " " - RangeVar@12..20 - Ident@12..20 "comedies" - Whitespace@20..21 " " - As@21..23 "AS" - Whitespace@23..24 " " - SelectStmt@24..65 - Select@24..30 "SELECT" - Whitespace@30..31 " " - ResTarget@31..32 - ColumnRef@31..32 - AStar@31..32 - Ascii42@31..32 "*" - Whitespace@32..33 " " - From@33..37 "FROM" - Whitespace@37..38 " " - RangeVar@38..43 - Ident@38..43 "films" - Whitespace@43..44 " " - Where@44..49 "WHERE" - Whitespace@49..50 " " - AExpr@50..65 - ColumnRef@50..54 - Ident@50..54 "kind" - Whitespace@54..55 " " - Ascii61@55..56 "=" - Whitespace@56..57 " " - AConst@57..65 - Sconst@57..65 "'Comedy'" - Ascii59@65..66 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0044@2.snap b/crates/pg_syntax/tests/snapshots/data/0044@2.snap deleted file mode 100644 index 1edcbbb5..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0044@2.snap +++ /dev/null @@ -1,47 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE VIEW universal_comedies AS SELECT * FROM comedies WHERE classification = 'U' WITH LOCAL CHECK OPTION;" ---- -ViewStmt@0..108 - Create@0..6 "CREATE" - Whitespace@6..7 " " - View@7..11 "VIEW" - Whitespace@11..12 " " - RangeVar@12..30 - Ident@12..30 "universal_comedies" - Whitespace@30..31 " " - As@31..33 "AS" - Whitespace@33..34 " " - SelectStmt@34..83 - Select@34..40 "SELECT" - Whitespace@40..41 " " - ResTarget@41..42 - ColumnRef@41..42 - AStar@41..42 - Ascii42@41..42 "*" - Whitespace@42..43 " " - From@43..47 "FROM" - Whitespace@47..48 " " - RangeVar@48..56 - Ident@48..56 "comedies" - Whitespace@56..57 " " - Where@57..62 "WHERE" - Whitespace@62..63 " " - AExpr@63..83 - ColumnRef@63..77 - Ident@63..77 "classification" - Whitespace@77..78 " " - Ascii61@78..79 "=" - Whitespace@79..80 " " - AConst@80..83 - Sconst@80..83 "'U'" - Whitespace@83..84 " " - With@84..88 "WITH" - Whitespace@88..89 " " - Local@89..94 "LOCAL" - Whitespace@94..95 " " - Check@95..100 "CHECK" - Whitespace@100..101 " " - Option@101..107 "OPTION" - Ascii59@107..108 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0044@3.snap b/crates/pg_syntax/tests/snapshots/data/0044@3.snap deleted file mode 100644 index 0f082ead..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0044@3.snap +++ /dev/null @@ -1,47 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE VIEW pg_comedies AS SELECT * FROM comedies WHERE classification = 'PG' WITH CASCADED CHECK OPTION;" ---- -ViewStmt@0..105 - Create@0..6 "CREATE" - Whitespace@6..7 " " - View@7..11 "VIEW" - Whitespace@11..12 " " - RangeVar@12..23 - Ident@12..23 "pg_comedies" - Whitespace@23..24 " " - As@24..26 "AS" - Whitespace@26..27 " " - SelectStmt@27..77 - Select@27..33 "SELECT" - Whitespace@33..34 " " - ResTarget@34..35 - ColumnRef@34..35 - AStar@34..35 - Ascii42@34..35 "*" - Whitespace@35..36 " " - From@36..40 "FROM" - Whitespace@40..41 " " - RangeVar@41..49 - Ident@41..49 "comedies" - Whitespace@49..50 " " - Where@50..55 "WHERE" - Whitespace@55..56 " " - AExpr@56..77 - ColumnRef@56..70 - Ident@56..70 "classification" - Whitespace@70..71 " " - Ascii61@71..72 "=" - Whitespace@72..73 " " - AConst@73..77 - Sconst@73..77 "'PG'" - Whitespace@77..78 " " - With@78..82 "WITH" - Whitespace@82..83 " " - Cascaded@83..91 "CASCADED" - Whitespace@91..92 " " - Check@92..97 "CHECK" - Whitespace@97..98 " " - Option@98..104 "OPTION" - Ascii59@104..105 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0044@4.snap b/crates/pg_syntax/tests/snapshots/data/0044@4.snap deleted file mode 100644 index 3f74e0a5..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0044@4.snap +++ /dev/null @@ -1,106 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE VIEW comedies AS SELECT f.*, country_code_to_name(f.country_code) AS country, (SELECT avg(r.rating) FROM user_ratings r WHERE r.film_id = f.id) AS avg_rating FROM films f WHERE f.kind = 'Comedy';" ---- -ViewStmt@0..202 - Create@0..6 "CREATE" - Whitespace@6..7 " " - View@7..11 "VIEW" - Whitespace@11..12 " " - RangeVar@12..20 - Ident@12..20 "comedies" - Whitespace@20..21 " " - As@21..23 "AS" - Whitespace@23..24 " " - SelectStmt@24..201 - Select@24..30 "SELECT" - Whitespace@30..31 " " - ResTarget@31..34 - ColumnRef@31..34 - Ident@31..32 "f" - Ascii46@32..33 "." - AStar@33..34 - Ascii42@33..34 "*" - Ascii44@34..35 "," - Whitespace@35..36 " " - ResTarget@36..83 - FuncCall@36..71 - Ident@36..56 "country_code_to_name" - Ascii40@56..57 "(" - ColumnRef@57..71 - Ident@57..58 "f" - Ascii46@58..59 "." - Ident@59..71 "country_code" - Ascii41@71..72 ")" - Whitespace@72..73 " " - As@73..75 "AS" - Whitespace@75..76 " " - Ident@76..83 "country" - Ascii44@83..84 "," - Whitespace@84..85 " " - ResTarget@85..164 - SubLink@85..149 - SelectStmt@85..149 - Ascii40@85..86 "(" - Select@86..92 "SELECT" - Whitespace@92..93 " " - ResTarget@93..105 - FuncCall@93..105 - Ident@93..96 "avg" - Ascii40@96..97 "(" - ColumnRef@97..105 - Ident@97..98 "r" - Ascii46@98..99 "." - Ident@99..105 "rating" - Ascii41@105..106 ")" - Whitespace@106..107 " " - From@107..111 "FROM" - Whitespace@111..112 " " - RangeVar@112..126 - Ident@112..124 "user_ratings" - Whitespace@124..125 " " - Alias@125..126 - Ident@125..126 "r" - Whitespace@126..127 " " - Where@127..132 "WHERE" - Whitespace@132..133 " " - AExpr@133..149 - ColumnRef@133..142 - Ident@133..134 "r" - Ascii46@134..135 "." - Ident@135..142 "film_id" - Whitespace@142..143 " " - Ascii61@143..144 "=" - Whitespace@144..145 " " - ColumnRef@145..149 - Ident@145..146 "f" - Ascii46@146..147 "." - Ident@147..149 "id" - Ascii41@149..150 ")" - Whitespace@150..151 " " - As@151..153 "AS" - Whitespace@153..154 " " - Ident@154..164 "avg_rating" - Whitespace@164..165 " " - From@165..169 "FROM" - Whitespace@169..170 " " - RangeVar@170..177 - Ident@170..175 "films" - Whitespace@175..176 " " - Alias@176..177 - Ident@176..177 "f" - Whitespace@177..178 " " - Where@178..183 "WHERE" - Whitespace@183..184 " " - AExpr@184..201 - ColumnRef@184..190 - Ident@184..185 "f" - Ascii46@185..186 "." - Ident@186..190 "kind" - Whitespace@190..191 " " - Ascii61@191..192 "=" - Whitespace@192..193 " " - AConst@193..201 - Sconst@193..201 "'Comedy'" - Ascii59@201..202 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0046@1.snap b/crates/pg_syntax/tests/snapshots/data/0046@1.snap deleted file mode 100644 index 8c6d568c..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0046@1.snap +++ /dev/null @@ -1,12 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE TYPE type1; ---- -DefineStmt@0..18 - Create@0..6 "CREATE" - Whitespace@6..7 " " - TypeP@7..11 "TYPE" - Whitespace@11..12 " " - Ident@12..17 "type1" - Ascii59@17..18 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0046@2.snap b/crates/pg_syntax/tests/snapshots/data/0046@2.snap deleted file mode 100644 index 239c104f..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0046@2.snap +++ /dev/null @@ -1,30 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TYPE type1 AS (attr1 int4, attr2 bool);" ---- -CompositeTypeStmt@0..46 - Create@0..6 "CREATE" - Whitespace@6..7 " " - TypeP@7..11 "TYPE" - Whitespace@11..12 " " - RangeVar@12..17 - Ident@12..17 "type1" - Whitespace@17..18 " " - As@18..20 "AS" - Whitespace@20..21 " " - Ascii40@21..22 "(" - ColumnDef@22..32 - Ident@22..27 "attr1" - Whitespace@27..28 " " - TypeName@28..32 - Ident@28..32 "int4" - Ascii44@32..33 "," - Whitespace@33..34 " " - ColumnDef@34..44 - Ident@34..39 "attr2" - Whitespace@39..40 " " - TypeName@40..44 - Ident@40..44 "bool" - Ascii41@44..45 ")" - Ascii59@45..46 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0046@4.snap b/crates/pg_syntax/tests/snapshots/data/0046@4.snap deleted file mode 100644 index a132fa05..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0046@4.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TYPE type1 AS ENUM ('value1', 'value2', 'value3');" ---- -CreateEnumStmt@0..57 - Create@0..6 "CREATE" - Whitespace@6..7 " " - TypeP@7..11 "TYPE" - Whitespace@11..12 " " - Ident@12..17 "type1" - Whitespace@17..18 " " - As@18..20 "AS" - Whitespace@20..21 " " - EnumP@21..25 "ENUM" - Whitespace@25..26 " " - Ascii40@26..27 "(" - Sconst@27..35 "'value1'" - Ascii44@35..36 "," - Whitespace@36..37 " " - Sconst@37..45 "'value2'" - Ascii44@45..46 "," - Whitespace@46..47 " " - Sconst@47..55 "'value3'" - Ascii41@55..56 ")" - Ascii59@56..57 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0046@5.snap b/crates/pg_syntax/tests/snapshots/data/0046@5.snap deleted file mode 100644 index 4c4ca388..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0046@5.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE TYPE type1 AS RANGE (subtype = int4); ---- -CreateRangeStmt@0..44 - Create@0..6 "CREATE" - Whitespace@6..7 " " - TypeP@7..11 "TYPE" - Whitespace@11..12 " " - Ident@12..17 "type1" - Whitespace@17..18 " " - As@18..20 "AS" - Whitespace@20..21 " " - Range@21..26 "RANGE" - Whitespace@26..27 " " - Ascii40@27..28 "(" - DefElem@28..42 - Ident@28..35 "subtype" - Whitespace@35..36 " " - Ascii61@36..37 "=" - Whitespace@37..38 " " - TypeName@38..42 - Ident@38..42 "int4" - Ascii41@42..43 ")" - Ascii59@43..44 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0046@6.snap b/crates/pg_syntax/tests/snapshots/data/0046@6.snap deleted file mode 100644 index ce3eaaab..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0046@6.snap +++ /dev/null @@ -1,39 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TYPE type1 AS RANGE (subtype = int4, receive = receive_func, passedbyvalue);" ---- -CreateRangeStmt@0..83 - Create@0..6 "CREATE" - Whitespace@6..7 " " - TypeP@7..11 "TYPE" - Whitespace@11..12 " " - Ident@12..17 "type1" - Whitespace@17..18 " " - As@18..20 "AS" - Whitespace@20..21 " " - Range@21..26 "RANGE" - Whitespace@26..27 " " - Ascii40@27..28 "(" - DefElem@28..42 - Ident@28..35 "subtype" - Whitespace@35..36 " " - Ascii61@36..37 "=" - Whitespace@37..38 " " - TypeName@38..42 - Ident@38..42 "int4" - Ascii44@42..43 "," - Whitespace@43..44 " " - DefElem@44..66 - Ident@44..51 "receive" - Whitespace@51..52 " " - Ascii61@52..53 "=" - Whitespace@53..54 " " - TypeName@54..66 - Ident@54..66 "receive_func" - Ascii44@66..67 "," - Whitespace@67..68 " " - DefElem@68..81 - Ident@68..81 "passedbyvalue" - Ascii41@81..82 ")" - Ascii59@82..83 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0046@7.snap b/crates/pg_syntax/tests/snapshots/data/0046@7.snap deleted file mode 100644 index 4422b755..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0046@7.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TYPE type1 (input = input1, output = output1);" ---- -DefineStmt@0..53 - Create@0..6 "CREATE" - Whitespace@6..7 " " - TypeP@7..11 "TYPE" - Whitespace@11..12 " " - Ident@12..17 "type1" - Whitespace@17..18 " " - Ascii40@18..19 "(" - DefElem@19..33 - InputP@19..24 "input" - Whitespace@24..25 " " - Ascii61@25..26 "=" - Whitespace@26..27 " " - TypeName@27..33 - Ident@27..33 "input1" - Ascii44@33..34 "," - Whitespace@34..35 " " - DefElem@35..51 - Ident@35..41 "output" - Whitespace@41..42 " " - Ascii61@42..43 "=" - Whitespace@43..44 " " - TypeName@44..51 - Ident@44..51 "output1" - Ascii41@51..52 ")" - Ascii59@52..53 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0046@8.snap b/crates/pg_syntax/tests/snapshots/data/0046@8.snap deleted file mode 100644 index c7ccaeee..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0046@8.snap +++ /dev/null @@ -1,35 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TYPE type1 (input = input1, output = output1, passedbyvalue);" ---- -DefineStmt@0..68 - Create@0..6 "CREATE" - Whitespace@6..7 " " - TypeP@7..11 "TYPE" - Whitespace@11..12 " " - Ident@12..17 "type1" - Whitespace@17..18 " " - Ascii40@18..19 "(" - DefElem@19..33 - InputP@19..24 "input" - Whitespace@24..25 " " - Ascii61@25..26 "=" - Whitespace@26..27 " " - TypeName@27..33 - Ident@27..33 "input1" - Ascii44@33..34 "," - Whitespace@34..35 " " - DefElem@35..51 - Ident@35..41 "output" - Whitespace@41..42 " " - Ascii61@42..43 "=" - Whitespace@43..44 " " - TypeName@44..51 - Ident@44..51 "output1" - Ascii44@51..52 "," - Whitespace@52..53 " " - DefElem@53..66 - Ident@53..66 "passedbyvalue" - Ascii41@66..67 ")" - Ascii59@67..68 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0047@1.snap b/crates/pg_syntax/tests/snapshots/data/0047@1.snap deleted file mode 100644 index 1722a226..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0047@1.snap +++ /dev/null @@ -1,24 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE DATABASE x OWNER abc CONNECTION LIMIT 5; ---- -CreatedbStmt@0..47 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Database@7..15 "DATABASE" - Whitespace@15..16 " " - Ident@16..17 "x" - Whitespace@17..18 " " - DefElem@18..27 - Owner@18..23 "OWNER" - Whitespace@23..24 " " - Ident@24..27 "abc" - Whitespace@27..28 " " - DefElem@28..46 - Connection@28..38 "CONNECTION" - Whitespace@38..39 " " - Limit@39..44 "LIMIT" - Whitespace@44..45 " " - Iconst@45..46 "5" - Ascii59@46..47 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0047@2.snap b/crates/pg_syntax/tests/snapshots/data/0047@2.snap deleted file mode 100644 index 51deb3d3..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0047@2.snap +++ /dev/null @@ -1,17 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE DATABASE x ENCODING \"SQL_ASCII\";" ---- -CreatedbStmt@0..39 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Database@7..15 "DATABASE" - Whitespace@15..16 " " - Ident@16..17 "x" - Whitespace@17..18 " " - DefElem@18..38 - Encoding@18..26 "ENCODING" - Whitespace@26..27 " " - Ident@27..38 "\"SQL_ASCII\"" - Ascii59@38..39 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0047@3.snap b/crates/pg_syntax/tests/snapshots/data/0047@3.snap deleted file mode 100644 index 722053ab..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0047@3.snap +++ /dev/null @@ -1,17 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE DATABASE x LC_COLLATE \"en_US.UTF-8\";" ---- -CreatedbStmt@0..43 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Database@7..15 "DATABASE" - Whitespace@15..16 " " - Ident@16..17 "x" - Whitespace@17..18 " " - DefElem@18..42 - Ident@18..28 "LC_COLLATE" - Whitespace@28..29 " " - Ident@29..42 "\"en_US.UTF-8\"" - Ascii59@42..43 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0047@4.snap b/crates/pg_syntax/tests/snapshots/data/0047@4.snap deleted file mode 100644 index 77fd4d9d..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0047@4.snap +++ /dev/null @@ -1,17 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE DATABASE x LOCATION DEFAULT; ---- -CreatedbStmt@0..35 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Database@7..15 "DATABASE" - Whitespace@15..16 " " - Ident@16..17 "x" - Whitespace@17..18 " " - DefElem@18..34 - Location@18..26 "LOCATION" - Whitespace@26..27 " " - Default@27..34 "DEFAULT" - Ascii59@34..35 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0047@5.snap b/crates/pg_syntax/tests/snapshots/data/0047@5.snap deleted file mode 100644 index c66afef2..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0047@5.snap +++ /dev/null @@ -1,17 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE DATABASE x TABLESPACE abc; ---- -CreatedbStmt@0..33 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Database@7..15 "DATABASE" - Whitespace@15..16 " " - Ident@16..17 "x" - Whitespace@17..18 " " - DefElem@18..32 - Tablespace@18..28 "TABLESPACE" - Whitespace@28..29 " " - Ident@29..32 "abc" - Ascii59@32..33 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0047@6.snap b/crates/pg_syntax/tests/snapshots/data/0047@6.snap deleted file mode 100644 index 1332b3b9..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0047@6.snap +++ /dev/null @@ -1,17 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE DATABASE x TEMPLATE TRUE; ---- -CreatedbStmt@0..32 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Database@7..15 "DATABASE" - Whitespace@15..16 " " - Ident@16..17 "x" - Whitespace@17..18 " " - DefElem@18..31 - Template@18..26 "TEMPLATE" - Whitespace@26..27 " " - TrueP@27..31 "TRUE" - Ascii59@31..32 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0048@1.snap b/crates/pg_syntax/tests/snapshots/data/0048@1.snap deleted file mode 100644 index 198bb5a4..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0048@1.snap +++ /dev/null @@ -1,16 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TABLESPACE x LOCATION 'a';" ---- -CreateTableSpaceStmt@0..33 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Tablespace@7..17 "TABLESPACE" - Whitespace@17..18 " " - Ident@18..19 "x" - Whitespace@19..20 " " - Location@20..28 "LOCATION" - Whitespace@28..29 " " - Sconst@29..32 "'a'" - Ascii59@32..33 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0048@2.snap b/crates/pg_syntax/tests/snapshots/data/0048@2.snap deleted file mode 100644 index a6f44bcf..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0048@2.snap +++ /dev/null @@ -1,36 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TABLESPACE x OWNER a LOCATION 'b' WITH (random_page_cost=42, seq_page_cost=3);" ---- -CreateTableSpaceStmt@0..85 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Tablespace@7..17 "TABLESPACE" - Whitespace@17..18 " " - Ident@18..19 "x" - Whitespace@19..20 " " - Owner@20..25 "OWNER" - Whitespace@25..26 " " - RoleSpec@26..27 - Ident@26..27 "a" - Whitespace@27..28 " " - Location@28..36 "LOCATION" - Whitespace@36..37 " " - Sconst@37..40 "'b'" - Whitespace@40..41 " " - With@41..45 "WITH" - Whitespace@45..46 " " - Ascii40@46..47 "(" - DefElem@47..66 - Ident@47..63 "random_page_cost" - Ascii61@63..64 "=" - Iconst@64..66 "42" - Ascii44@66..67 "," - Whitespace@67..68 " " - DefElem@68..83 - Ident@68..81 "seq_page_cost" - Ascii61@81..82 "=" - Iconst@82..83 "3" - Ascii41@83..84 ")" - Ascii59@84..85 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0049@1.snap b/crates/pg_syntax/tests/snapshots/data/0049@1.snap deleted file mode 100644 index e9b86aab..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0049@1.snap +++ /dev/null @@ -1,12 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE EXTENSION x; ---- -CreateExtensionStmt@0..19 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Extension@7..16 "EXTENSION" - Whitespace@16..17 " " - Ident@17..18 "x" - Ascii59@18..19 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0049@2.snap b/crates/pg_syntax/tests/snapshots/data/0049@2.snap deleted file mode 100644 index 307757bf..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0049@2.snap +++ /dev/null @@ -1,31 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE EXTENSION IF NOT EXISTS x CASCADE VERSION \"1.2\" SCHEMA a;" ---- -CreateExtensionStmt@0..64 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Extension@7..16 "EXTENSION" - Whitespace@16..17 " " - IfP@17..19 "IF" - Whitespace@19..20 " " - Not@20..23 "NOT" - Whitespace@23..24 " " - Exists@24..30 "EXISTS" - Whitespace@30..31 " " - Ident@31..32 "x" - Whitespace@32..33 " " - DefElem@33..40 - Cascade@33..40 "CASCADE" - Whitespace@40..41 " " - DefElem@41..54 - VersionP@41..48 "VERSION" - Whitespace@48..49 " " - Ident@49..54 "\"1.2\"" - Whitespace@54..55 " " - DefElem@55..63 - Schema@55..61 "SCHEMA" - Whitespace@61..62 " " - Ident@62..63 "a" - Ascii59@63..64 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0051@1.snap b/crates/pg_syntax/tests/snapshots/data/0051@1.snap deleted file mode 100644 index aa1caca9..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0051@1.snap +++ /dev/null @@ -1,24 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE UNIQUE INDEX title_idx ON films (title); ---- -IndexStmt@0..47 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Unique@7..13 "UNIQUE" - Whitespace@13..14 " " - Index@14..19 "INDEX" - Whitespace@19..20 " " - Ident@20..29 "title_idx" - Whitespace@29..30 " " - On@30..32 "ON" - Whitespace@32..33 " " - RangeVar@33..38 - Ident@33..38 "films" - Whitespace@38..39 " " - Ascii40@39..40 "(" - IndexElem@40..45 - Ident@40..45 "title" - Ascii41@45..46 ")" - Ascii59@46..47 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0051@10.snap b/crates/pg_syntax/tests/snapshots/data/0051@10.snap deleted file mode 100644 index aba2ea95..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0051@10.snap +++ /dev/null @@ -1,34 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE INDEX pointloc ON points USING gist (box(location,location));" ---- -IndexStmt@0..68 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Index@7..12 "INDEX" - Whitespace@12..13 " " - Ident@13..21 "pointloc" - Whitespace@21..22 " " - On@22..24 "ON" - Whitespace@24..25 " " - RangeVar@25..31 - Ident@25..31 "points" - Whitespace@31..32 " " - Using@32..37 "USING" - Whitespace@37..38 " " - Ident@38..42 "gist" - Whitespace@42..43 " " - Ascii40@43..44 "(" - IndexElem@44..65 - FuncCall@44..65 - Ident@44..47 "box" - Ascii40@47..48 "(" - ColumnRef@48..56 - Location@48..56 "location" - Ascii44@56..57 "," - ColumnRef@57..65 - Location@57..65 "location" - Ascii41@65..66 ")" - Ascii41@66..67 ")" - Ascii59@67..68 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0051@11.snap b/crates/pg_syntax/tests/snapshots/data/0051@11.snap deleted file mode 100644 index 9e016565..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0051@11.snap +++ /dev/null @@ -1,24 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE INDEX CONCURRENTLY sales_quantity_index ON sales_table (quantity); ---- -IndexStmt@0..73 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Index@7..12 "INDEX" - Whitespace@12..13 " " - Concurrently@13..25 "CONCURRENTLY" - Whitespace@25..26 " " - Ident@26..46 "sales_quantity_index" - Whitespace@46..47 " " - On@47..49 "ON" - Whitespace@49..50 " " - RangeVar@50..61 - Ident@50..61 "sales_table" - Whitespace@61..62 " " - Ascii40@62..63 "(" - IndexElem@63..71 - Ident@63..71 "quantity" - Ascii41@71..72 ")" - Ascii59@72..73 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0051@2.snap b/crates/pg_syntax/tests/snapshots/data/0051@2.snap deleted file mode 100644 index b2b5d71d..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0051@2.snap +++ /dev/null @@ -1,35 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE UNIQUE INDEX title_idx ON films (title) INCLUDE (director, rating);" ---- -IndexStmt@0..74 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Unique@7..13 "UNIQUE" - Whitespace@13..14 " " - Index@14..19 "INDEX" - Whitespace@19..20 " " - Ident@20..29 "title_idx" - Whitespace@29..30 " " - On@30..32 "ON" - Whitespace@32..33 " " - RangeVar@33..38 - Ident@33..38 "films" - Whitespace@38..39 " " - Ascii40@39..40 "(" - IndexElem@40..45 - Ident@40..45 "title" - Ascii41@45..46 ")" - Whitespace@46..47 " " - Include@47..54 "INCLUDE" - Whitespace@54..55 " " - Ascii40@55..56 "(" - IndexElem@56..64 - Ident@56..64 "director" - Ascii44@64..65 "," - Whitespace@65..66 " " - IndexElem@66..72 - Ident@66..72 "rating" - Ascii41@72..73 ")" - Ascii59@73..74 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0051@3.snap b/crates/pg_syntax/tests/snapshots/data/0051@3.snap deleted file mode 100644 index d906b6f4..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0051@3.snap +++ /dev/null @@ -1,34 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE INDEX title_idx ON films (title) WITH (deduplicate_items = off); ---- -IndexStmt@0..71 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Index@7..12 "INDEX" - Whitespace@12..13 " " - Ident@13..22 "title_idx" - Whitespace@22..23 " " - On@23..25 "ON" - Whitespace@25..26 " " - RangeVar@26..31 - Ident@26..31 "films" - Whitespace@31..32 " " - Ascii40@32..33 "(" - IndexElem@33..38 - Ident@33..38 "title" - Ascii41@38..39 ")" - Whitespace@39..40 " " - With@40..44 "WITH" - Whitespace@44..45 " " - Ascii40@45..46 "(" - DefElem@46..69 - Ident@46..63 "deduplicate_items" - Whitespace@63..64 " " - Ascii61@64..65 "=" - Whitespace@65..66 " " - TypeName@66..69 - Off@66..69 "off" - Ascii41@69..70 ")" - Ascii59@70..71 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0051@4.snap b/crates/pg_syntax/tests/snapshots/data/0051@4.snap deleted file mode 100644 index 17b3ea3f..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0051@4.snap +++ /dev/null @@ -1,27 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE INDEX ON films ((lower(title))); ---- -IndexStmt@0..39 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Index@7..12 "INDEX" - Whitespace@12..13 " " - On@13..15 "ON" - Whitespace@15..16 " " - RangeVar@16..21 - Ident@16..21 "films" - Whitespace@21..22 " " - Ascii40@22..23 "(" - Ascii40@23..24 "(" - IndexElem@24..35 - FuncCall@24..35 - Ident@24..29 "lower" - Ascii40@29..30 "(" - ColumnRef@30..35 - Ident@30..35 "title" - Ascii41@35..36 ")" - Ascii41@36..37 ")" - Ascii41@37..38 ")" - Ascii59@38..39 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0051@5.snap b/crates/pg_syntax/tests/snapshots/data/0051@5.snap deleted file mode 100644 index bdffe04e..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0051@5.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE INDEX title_idx_german ON films (title COLLATE \"de_DE\");" ---- -IndexStmt@0..63 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Index@7..12 "INDEX" - Whitespace@12..13 " " - Ident@13..29 "title_idx_german" - Whitespace@29..30 " " - On@30..32 "ON" - Whitespace@32..33 " " - RangeVar@33..38 - Ident@33..38 "films" - Whitespace@38..39 " " - Ascii40@39..40 "(" - IndexElem@40..61 - Ident@40..45 "title" - Whitespace@45..46 " " - Collate@46..53 "COLLATE" - Whitespace@53..54 " " - Ident@54..61 "\"de_DE\"" - Ascii41@61..62 ")" - Ascii59@62..63 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0051@6.snap b/crates/pg_syntax/tests/snapshots/data/0051@6.snap deleted file mode 100644 index a34569e0..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0051@6.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE INDEX title_idx_nulls_low ON films (title NULLS FIRST); ---- -IndexStmt@0..62 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Index@7..12 "INDEX" - Whitespace@12..13 " " - Ident@13..32 "title_idx_nulls_low" - Whitespace@32..33 " " - On@33..35 "ON" - Whitespace@35..36 " " - RangeVar@36..41 - Ident@36..41 "films" - Whitespace@41..42 " " - Ascii40@42..43 "(" - IndexElem@43..60 - Ident@43..48 "title" - Whitespace@48..49 " " - NullsP@49..54 "NULLS" - Whitespace@54..55 " " - FirstP@55..60 "FIRST" - Ascii41@60..61 ")" - Ascii59@61..62 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0051@7.snap b/crates/pg_syntax/tests/snapshots/data/0051@7.snap deleted file mode 100644 index ad884c6f..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0051@7.snap +++ /dev/null @@ -1,35 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE UNIQUE INDEX title_idx ON films (title) WITH (fillfactor = 70); ---- -IndexStmt@0..70 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Unique@7..13 "UNIQUE" - Whitespace@13..14 " " - Index@14..19 "INDEX" - Whitespace@19..20 " " - Ident@20..29 "title_idx" - Whitespace@29..30 " " - On@30..32 "ON" - Whitespace@32..33 " " - RangeVar@33..38 - Ident@33..38 "films" - Whitespace@38..39 " " - Ascii40@39..40 "(" - IndexElem@40..45 - Ident@40..45 "title" - Ascii41@45..46 ")" - Whitespace@46..47 " " - With@47..51 "WITH" - Whitespace@51..52 " " - Ascii40@52..53 "(" - DefElem@53..68 - Ident@53..63 "fillfactor" - Whitespace@63..64 " " - Ascii61@64..65 "=" - Whitespace@65..66 " " - Iconst@66..68 "70" - Ascii41@68..69 ")" - Ascii59@69..70 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0051@8.snap b/crates/pg_syntax/tests/snapshots/data/0051@8.snap deleted file mode 100644 index 20de1d06..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0051@8.snap +++ /dev/null @@ -1,38 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE INDEX gin_idx ON documents_table USING GIN (locations) WITH (fastupdate = off); ---- -IndexStmt@0..86 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Index@7..12 "INDEX" - Whitespace@12..13 " " - Ident@13..20 "gin_idx" - Whitespace@20..21 " " - On@21..23 "ON" - Whitespace@23..24 " " - RangeVar@24..39 - Ident@24..39 "documents_table" - Whitespace@39..40 " " - Using@40..45 "USING" - Whitespace@45..46 " " - Ident@46..49 "GIN" - Whitespace@49..50 " " - Ascii40@50..51 "(" - IndexElem@51..60 - Ident@51..60 "locations" - Ascii41@60..61 ")" - Whitespace@61..62 " " - With@62..66 "WITH" - Whitespace@66..67 " " - Ascii40@67..68 "(" - DefElem@68..84 - Ident@68..78 "fastupdate" - Whitespace@78..79 " " - Ascii61@79..80 "=" - Whitespace@80..81 " " - TypeName@81..84 - Off@81..84 "off" - Ascii41@84..85 ")" - Ascii59@85..86 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0051@9.snap b/crates/pg_syntax/tests/snapshots/data/0051@9.snap deleted file mode 100644 index b78e5c34..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0051@9.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE INDEX code_idx ON films (code) TABLESPACE indexspace; ---- -IndexStmt@0..60 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Index@7..12 "INDEX" - Whitespace@12..13 " " - Ident@13..21 "code_idx" - Whitespace@21..22 " " - On@22..24 "ON" - Whitespace@24..25 " " - RangeVar@25..30 - Ident@25..30 "films" - Whitespace@30..31 " " - Ascii40@31..32 "(" - IndexElem@32..36 - Ident@32..36 "code" - Ascii41@36..37 ")" - Whitespace@37..38 " " - Tablespace@38..48 "TABLESPACE" - Whitespace@48..49 " " - Ident@49..59 "indexspace" - Ascii59@59..60 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0052@1.snap b/crates/pg_syntax/tests/snapshots/data/0052@1.snap deleted file mode 100644 index 35277c77..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0052@1.snap +++ /dev/null @@ -1,37 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE PROCEDURE insert_data(a integer, b integer) LANGUAGE SQL AS $$INSERT INTO tbl VALUES (a); INSERT INTO tbl VALUES (b);$$;" ---- -CreateFunctionStmt@0..127 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Procedure@7..16 "PROCEDURE" - Whitespace@16..17 " " - Ident@17..28 "insert_data" - Ascii40@28..29 "(" - FunctionParameter@29..38 - Ident@29..30 "a" - Whitespace@30..31 " " - TypeName@31..38 - Integer@31..38 "integer" - Ascii44@38..39 "," - Whitespace@39..40 " " - FunctionParameter@40..49 - Ident@40..41 "b" - Whitespace@41..42 " " - TypeName@42..49 - Integer@42..49 "integer" - Ascii41@49..50 ")" - Whitespace@50..51 " " - DefElem@51..63 - Language@51..59 "LANGUAGE" - Whitespace@59..60 " " - SqlP@60..63 "SQL" - Whitespace@63..64 " " - DefElem@64..126 - As@64..66 "AS" - Whitespace@66..67 " " - List@67..126 - Sconst@67..126 "$$INSERT INTO tbl VAL ..." - Ascii59@126..127 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0053@1.snap b/crates/pg_syntax/tests/snapshots/data/0053@1.snap deleted file mode 100644 index ec36c719..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0053@1.snap +++ /dev/null @@ -1,27 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE PUBLICATION mypublication FOR TABLE users, departments;" ---- -CreatePublicationStmt@0..62 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Publication@7..18 "PUBLICATION" - Whitespace@18..19 " " - Ident@19..32 "mypublication" - Whitespace@32..33 " " - For@33..36 "FOR" - Whitespace@36..37 " " - Table@37..42 "TABLE" - Whitespace@42..43 " " - PublicationObjSpec@43..48 - PublicationTable@43..48 - RangeVar@43..48 - Ident@43..48 "users" - Ascii44@48..49 "," - Whitespace@49..50 " " - PublicationObjSpec@50..61 - PublicationTable@50..61 - RangeVar@50..61 - Ident@50..61 "departments" - Ascii59@61..62 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0053@2.snap b/crates/pg_syntax/tests/snapshots/data/0053@2.snap deleted file mode 100644 index af2529cc..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0053@2.snap +++ /dev/null @@ -1,33 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE PUBLICATION active_departments FOR TABLE departments WHERE (active IS TRUE); ---- -CreatePublicationStmt@0..83 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Publication@7..18 "PUBLICATION" - Whitespace@18..19 " " - Ident@19..37 "active_departments" - Whitespace@37..38 " " - For@38..41 "FOR" - Whitespace@41..42 " " - Table@42..47 "TABLE" - Whitespace@47..48 " " - PublicationObjSpec@48..81 - PublicationTable@48..81 - RangeVar@48..59 - Ident@48..59 "departments" - Whitespace@59..60 " " - Where@60..65 "WHERE" - Whitespace@65..66 " " - Ascii40@66..67 "(" - BooleanTest@67..81 - ColumnRef@67..73 - Ident@67..73 "active" - Whitespace@73..74 " " - Is@74..76 "IS" - Whitespace@76..77 " " - TrueP@77..81 "TRUE" - Ascii41@81..82 ")" - Ascii59@82..83 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0053@3.snap b/crates/pg_syntax/tests/snapshots/data/0053@3.snap deleted file mode 100644 index e4d5a7e0..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0053@3.snap +++ /dev/null @@ -1,18 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: CREATE PUBLICATION alltables FOR ALL TABLES; ---- -CreatePublicationStmt@0..44 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Publication@7..18 "PUBLICATION" - Whitespace@18..19 " " - Ident@19..28 "alltables" - Whitespace@28..29 " " - For@29..32 "FOR" - Whitespace@32..33 " " - All@33..36 "ALL" - Whitespace@36..37 " " - Tables@37..43 "TABLES" - Ascii59@43..44 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0053@4.snap b/crates/pg_syntax/tests/snapshots/data/0053@4.snap deleted file mode 100644 index 4e54a678..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0053@4.snap +++ /dev/null @@ -1,32 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE PUBLICATION insert_only FOR TABLE mydata WITH (publish = 'insert');" ---- -CreatePublicationStmt@0..74 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Publication@7..18 "PUBLICATION" - Whitespace@18..19 " " - Ident@19..30 "insert_only" - Whitespace@30..31 " " - For@31..34 "FOR" - Whitespace@34..35 " " - Table@35..40 "TABLE" - Whitespace@40..41 " " - PublicationObjSpec@41..47 - PublicationTable@41..47 - RangeVar@41..47 - Ident@41..47 "mydata" - Whitespace@47..48 " " - With@48..52 "WITH" - Whitespace@52..53 " " - Ascii40@53..54 "(" - DefElem@54..72 - Ident@54..61 "publish" - Whitespace@61..62 " " - Ascii61@62..63 "=" - Whitespace@63..64 " " - Sconst@64..72 "'insert'" - Ascii41@72..73 ")" - Ascii59@73..74 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0053@5.snap b/crates/pg_syntax/tests/snapshots/data/0053@5.snap deleted file mode 100644 index bc175999..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0053@5.snap +++ /dev/null @@ -1,37 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE PUBLICATION production_publication FOR TABLE users, departments, TABLES IN SCHEMA production;" ---- -CreatePublicationStmt@0..100 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Publication@7..18 "PUBLICATION" - Whitespace@18..19 " " - Ident@19..41 "production_publication" - Whitespace@41..42 " " - For@42..45 "FOR" - Whitespace@45..46 " " - Table@46..51 "TABLE" - Whitespace@51..52 " " - PublicationObjSpec@52..57 - PublicationTable@52..57 - RangeVar@52..57 - Ident@52..57 "users" - Ascii44@57..58 "," - Whitespace@58..59 " " - PublicationObjSpec@59..70 - PublicationTable@59..70 - RangeVar@59..70 - Ident@59..70 "departments" - Ascii44@70..71 "," - Whitespace@71..72 " " - Tables@72..78 "TABLES" - Whitespace@78..79 " " - InP@79..81 "IN" - Whitespace@81..82 " " - Schema@82..88 "SCHEMA" - Whitespace@88..89 " " - PublicationObjSpec@89..99 - Ident@89..99 "production" - Ascii59@99..100 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0053@6.snap b/crates/pg_syntax/tests/snapshots/data/0053@6.snap deleted file mode 100644 index 0e30fdee..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0053@6.snap +++ /dev/null @@ -1,27 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE PUBLICATION sales_publication FOR TABLES IN SCHEMA marketing, sales;" ---- -CreatePublicationStmt@0..75 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Publication@7..18 "PUBLICATION" - Whitespace@18..19 " " - Ident@19..36 "sales_publication" - Whitespace@36..37 " " - For@37..40 "FOR" - Whitespace@40..41 " " - Tables@41..47 "TABLES" - Whitespace@47..48 " " - InP@48..50 "IN" - Whitespace@50..51 " " - Schema@51..57 "SCHEMA" - Whitespace@57..58 " " - PublicationObjSpec@58..67 - Ident@58..67 "marketing" - Ascii44@67..68 "," - Whitespace@68..69 " " - PublicationObjSpec@69..74 - Ident@69..74 "sales" - Ascii59@74..75 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0053@7.snap b/crates/pg_syntax/tests/snapshots/data/0053@7.snap deleted file mode 100644 index 54e47703..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0053@7.snap +++ /dev/null @@ -1,28 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE PUBLICATION users_filtered FOR TABLE users (user_id, firstname);" ---- -CreatePublicationStmt@0..71 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Publication@7..18 "PUBLICATION" - Whitespace@18..19 " " - Ident@19..33 "users_filtered" - Whitespace@33..34 " " - For@34..37 "FOR" - Whitespace@37..38 " " - Table@38..43 "TABLE" - Whitespace@43..44 " " - PublicationObjSpec@44..69 - PublicationTable@44..69 - RangeVar@44..49 - Ident@44..49 "users" - Whitespace@49..50 " " - Ascii40@50..51 "(" - Ident@51..58 "user_id" - Ascii44@58..59 "," - Whitespace@59..60 " " - Ident@60..69 "firstname" - Ascii41@69..70 ")" - Ascii59@70..71 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0054@1.snap b/crates/pg_syntax/tests/snapshots/data/0054@1.snap deleted file mode 100644 index 4259b54d..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0054@1.snap +++ /dev/null @@ -1,24 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;" ---- -CreateConversionStmt@0..60 - Create@0..6 "CREATE" - Whitespace@6..7 " " - ConversionP@7..17 "CONVERSION" - Whitespace@17..18 " " - Ident@18..24 "myconv" - Whitespace@24..25 " " - For@25..28 "FOR" - Whitespace@28..29 " " - Sconst@29..35 "'UTF8'" - Whitespace@35..36 " " - To@36..38 "TO" - Whitespace@38..39 " " - Sconst@39..47 "'LATIN1'" - Whitespace@47..48 " " - From@48..52 "FROM" - Whitespace@52..53 " " - Ident@53..59 "myfunc" - Ascii59@59..60 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0054@2.snap b/crates/pg_syntax/tests/snapshots/data/0054@2.snap deleted file mode 100644 index ce4fdeec..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0054@2.snap +++ /dev/null @@ -1,26 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE DEFAULT CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;" ---- -CreateConversionStmt@0..68 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Default@7..14 "DEFAULT" - Whitespace@14..15 " " - ConversionP@15..25 "CONVERSION" - Whitespace@25..26 " " - Ident@26..32 "myconv" - Whitespace@32..33 " " - For@33..36 "FOR" - Whitespace@36..37 " " - Sconst@37..43 "'UTF8'" - Whitespace@43..44 " " - To@44..46 "TO" - Whitespace@46..47 " " - Sconst@47..55 "'LATIN1'" - Whitespace@55..56 " " - From@56..60 "FROM" - Whitespace@60..61 " " - Ident@61..67 "myfunc" - Ascii59@67..68 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0055@1.snap b/crates/pg_syntax/tests/snapshots/data/0055@1.snap deleted file mode 100644 index 3584f630..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0055@1.snap +++ /dev/null @@ -1,24 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: select 1 union all select 2; ---- -SelectStmt@0..28 - Select@0..6 "select" - Whitespace@6..7 " " - SelectStmt@7..8 - ResTarget@7..8 - AConst@7..8 - Iconst@7..8 "1" - Whitespace@8..9 " " - Union@9..14 "union" - Whitespace@14..15 " " - All@15..18 "all" - Whitespace@18..19 " " - SelectStmt@19..27 - Select@19..25 "select" - Whitespace@25..26 " " - ResTarget@26..27 - AConst@26..27 - Iconst@26..27 "2" - Ascii59@27..28 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0055@2.snap b/crates/pg_syntax/tests/snapshots/data/0055@2.snap deleted file mode 100644 index e1172033..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0055@2.snap +++ /dev/null @@ -1,22 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: select 1 union select 2; ---- -SelectStmt@0..24 - Select@0..6 "select" - Whitespace@6..7 " " - SelectStmt@7..8 - ResTarget@7..8 - AConst@7..8 - Iconst@7..8 "1" - Whitespace@8..9 " " - Union@9..14 "union" - Whitespace@14..15 " " - SelectStmt@15..23 - Select@15..21 "select" - Whitespace@21..22 " " - ResTarget@22..23 - AConst@22..23 - Iconst@22..23 "2" - Ascii59@23..24 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0056@1.snap b/crates/pg_syntax/tests/snapshots/data/0056@1.snap deleted file mode 100644 index 65ba58ac..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0056@1.snap +++ /dev/null @@ -1,56 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE TRANSFORM FOR hstore LANGUAGE plpython3u (\n FROM SQL WITH FUNCTION hstore_to_plpython(internal),\n TO SQL WITH FUNCTION plpython_to_hstore(internal)\n);" ---- -CreateTransformStmt@0..163 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Transform@7..16 "TRANSFORM" - Whitespace@16..17 " " - For@17..20 "FOR" - Whitespace@20..21 " " - TypeName@21..27 - Ident@21..27 "hstore" - Whitespace@27..28 " " - Language@28..36 "LANGUAGE" - Whitespace@36..37 " " - Ident@37..47 "plpython3u" - Whitespace@47..48 " " - Ascii40@48..49 "(" - Newline@49..50 "\n" - Whitespace@50..54 " " - From@54..58 "FROM" - Whitespace@58..59 " " - SqlP@59..62 "SQL" - Whitespace@62..63 " " - With@63..67 "WITH" - Whitespace@67..68 " " - Function@68..76 "FUNCTION" - Whitespace@76..77 " " - ObjectWithArgs@77..107 - Ident@77..95 "hstore_to_plpython" - Ascii40@95..96 "(" - TypeName@96..104 - Ident@96..104 "internal" - Ascii41@104..105 ")" - Ascii44@105..106 "," - Newline@106..107 "\n" - Whitespace@107..111 " " - To@111..113 "TO" - Whitespace@113..114 " " - SqlP@114..117 "SQL" - Whitespace@117..118 " " - With@118..122 "WITH" - Whitespace@122..123 " " - Function@123..131 "FUNCTION" - Whitespace@131..132 " " - ObjectWithArgs@132..163 - Ident@132..150 "plpython_to_hstore" - Ascii40@150..151 "(" - TypeName@151..159 - Ident@151..159 "internal" - Ascii41@159..160 ")" - Newline@160..161 "\n" - Ascii41@161..162 ")" - Ascii59@162..163 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0056@2.snap b/crates/pg_syntax/tests/snapshots/data/0056@2.snap deleted file mode 100644 index 677d332a..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0056@2.snap +++ /dev/null @@ -1,60 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: "CREATE OR REPLACE TRANSFORM FOR hstore LANGUAGE plpython3u (\n FROM SQL WITH FUNCTION hstore_to_plpython(internal),\n TO SQL WITH FUNCTION plpython_to_hstore(internal)\n);" ---- -CreateTransformStmt@0..174 - Create@0..6 "CREATE" - Whitespace@6..7 " " - Or@7..9 "OR" - Whitespace@9..10 " " - Replace@10..17 "REPLACE" - Whitespace@17..18 " " - Transform@18..27 "TRANSFORM" - Whitespace@27..28 " " - For@28..31 "FOR" - Whitespace@31..32 " " - TypeName@32..38 - Ident@32..38 "hstore" - Whitespace@38..39 " " - Language@39..47 "LANGUAGE" - Whitespace@47..48 " " - Ident@48..58 "plpython3u" - Whitespace@58..59 " " - Ascii40@59..60 "(" - Newline@60..61 "\n" - Whitespace@61..65 " " - From@65..69 "FROM" - Whitespace@69..70 " " - SqlP@70..73 "SQL" - Whitespace@73..74 " " - With@74..78 "WITH" - Whitespace@78..79 " " - Function@79..87 "FUNCTION" - Whitespace@87..88 " " - ObjectWithArgs@88..118 - Ident@88..106 "hstore_to_plpython" - Ascii40@106..107 "(" - TypeName@107..115 - Ident@107..115 "internal" - Ascii41@115..116 ")" - Ascii44@116..117 "," - Newline@117..118 "\n" - Whitespace@118..122 " " - To@122..124 "TO" - Whitespace@124..125 " " - SqlP@125..128 "SQL" - Whitespace@128..129 " " - With@129..133 "WITH" - Whitespace@133..134 " " - Function@134..142 "FUNCTION" - Whitespace@142..143 " " - ObjectWithArgs@143..174 - Ident@143..161 "plpython_to_hstore" - Ascii40@161..162 "(" - TypeName@162..170 - Ident@162..170 "internal" - Ascii41@170..171 ")" - Newline@171..172 "\n" - Ascii41@172..173 ")" - Ascii59@173..174 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0057@1.snap b/crates/pg_syntax/tests/snapshots/data/0057@1.snap deleted file mode 100644 index 27222365..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0057@1.snap +++ /dev/null @@ -1,17 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: TRUNCATE users CONTINUE IDENTITY RESTRICT; ---- -TruncateStmt@0..42 - Truncate@0..8 "TRUNCATE" - Whitespace@8..9 " " - RangeVar@9..14 - Ident@9..14 "users" - Whitespace@14..15 " " - ContinueP@15..23 "CONTINUE" - Whitespace@23..24 " " - IdentityP@24..32 "IDENTITY" - Whitespace@32..33 " " - Restrict@33..41 "RESTRICT" - Ascii59@41..42 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0057@2.snap b/crates/pg_syntax/tests/snapshots/data/0057@2.snap deleted file mode 100644 index a3b78e8d..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0057@2.snap +++ /dev/null @@ -1,19 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: TRUNCATE TABLE users RESTART IDENTITY CASCADE; ---- -TruncateStmt@0..46 - Truncate@0..8 "TRUNCATE" - Whitespace@8..9 " " - Table@9..14 "TABLE" - Whitespace@14..15 " " - RangeVar@15..20 - Ident@15..20 "users" - Whitespace@20..21 " " - Restart@21..28 "RESTART" - Whitespace@28..29 " " - IdentityP@29..37 "IDENTITY" - Whitespace@37..38 " " - Cascade@38..45 "CASCADE" - Ascii59@45..46 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0057@3.snap b/crates/pg_syntax/tests/snapshots/data/0057@3.snap deleted file mode 100644 index d317dd4b..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0057@3.snap +++ /dev/null @@ -1,11 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: TRUNCATE users; ---- -TruncateStmt@0..15 - Truncate@0..8 "TRUNCATE" - Whitespace@8..9 " " - RangeVar@9..14 - Ident@9..14 "users" - Ascii59@14..15 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0057@4.snap b/crates/pg_syntax/tests/snapshots/data/0057@4.snap deleted file mode 100644 index 73f22275..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0057@4.snap +++ /dev/null @@ -1,13 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: TRUNCATE accounts CASCADE; ---- -TruncateStmt@0..26 - Truncate@0..8 "TRUNCATE" - Whitespace@8..9 " " - RangeVar@9..17 - Ident@9..17 "accounts" - Whitespace@17..18 " " - Cascade@18..25 "CASCADE" - Ascii59@25..26 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0057@5.snap b/crates/pg_syntax/tests/snapshots/data/0057@5.snap deleted file mode 100644 index 180590de..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0057@5.snap +++ /dev/null @@ -1,13 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: TRUNCATE accounts RESTRICT; ---- -TruncateStmt@0..27 - Truncate@0..8 "TRUNCATE" - Whitespace@8..9 " " - RangeVar@9..17 - Ident@9..17 "accounts" - Whitespace@17..18 " " - Restrict@18..26 "RESTRICT" - Ascii59@26..27 ";" - diff --git a/crates/pg_syntax/tests/snapshots/data/0057@6.snap b/crates/pg_syntax/tests/snapshots/data/0057@6.snap deleted file mode 100644 index 3d2cb600..00000000 --- a/crates/pg_syntax/tests/snapshots/data/0057@6.snap +++ /dev/null @@ -1,13 +0,0 @@ ---- -source: crates/pg_syntax/tests/pg_syntax_tests.rs -description: TRUNCATE TABLE users; ---- -TruncateStmt@0..21 - Truncate@0..8 "TRUNCATE" - Whitespace@8..9 " " - Table@9..14 "TABLE" - Whitespace@14..15 " " - RangeVar@15..20 - Ident@15..20 "users" - Ascii59@20..21 ";" - From 3aca1523a461f569d570fc4598a0ba11932d6c30 Mon Sep 17 00:00:00 2001 From: psteinroe Date: Fri, 31 Jan 2025 09:27:37 -0100 Subject: [PATCH 07/11] chore: pin pg_query on worksapce level --- Cargo.toml | 1 + crates/pg_lexer/Cargo.toml | 2 +- crates/pg_query_ext/Cargo.toml | 2 +- crates/pg_statement_splitter/Cargo.toml | 4 ++-- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index dfcac5b6..b73642a3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,6 +24,7 @@ enumflags2 = "0.7.10" ignore = "0.4.23" indexmap = { version = "2.6.0", features = ["serde"] } line_index = { path = "./lib/line_index", version = "0.0.0" } +pg_query = "6.0.0" proc-macro2 = "1.0.66" quote = "1.0.33" rayon = "1.10.0" diff --git a/crates/pg_lexer/Cargo.toml b/crates/pg_lexer/Cargo.toml index e8643571..db5a18fa 100644 --- a/crates/pg_lexer/Cargo.toml +++ b/crates/pg_lexer/Cargo.toml @@ -15,7 +15,7 @@ version = "0.0.0" regex = "1.9.1" pg_lexer_codegen.workspace = true -pg_query = "6.0.0" +pg_query.workspace = true cstree = { version = "0.12.0", features = ["derive"] } text-size.workspace = true diff --git a/crates/pg_query_ext/Cargo.toml b/crates/pg_query_ext/Cargo.toml index 40155460..5ff3a493 100644 --- a/crates/pg_query_ext/Cargo.toml +++ b/crates/pg_query_ext/Cargo.toml @@ -13,10 +13,10 @@ version = "0.0.0" [dependencies] petgraph = "0.6.4" -pg_query = "6.0.0" pg_diagnostics.workspace = true pg_lexer.workspace = true +pg_query.workspace = true pg_query_ext_codegen.workspace = true text-size.workspace = true diff --git a/crates/pg_statement_splitter/Cargo.toml b/crates/pg_statement_splitter/Cargo.toml index 820079fb..4ca03c15 100644 --- a/crates/pg_statement_splitter/Cargo.toml +++ b/crates/pg_statement_splitter/Cargo.toml @@ -16,5 +16,5 @@ pg_lexer.workspace = true text-size.workspace = true [dev-dependencies] -ntest = "0.9.3" -pg_query = "6.0.0" +ntest = "0.9.3" +pg_query.workspace = true From 6fae65122504a42920ff918dd26ba138fb6d2418 Mon Sep 17 00:00:00 2001 From: psteinroe Date: Fri, 31 Jan 2025 09:52:48 -0100 Subject: [PATCH 08/11] fix: normalize snaphots --- crates/pg_typecheck/tests/diagnostics.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/crates/pg_typecheck/tests/diagnostics.rs b/crates/pg_typecheck/tests/diagnostics.rs index 4295e310..f44fc092 100644 --- a/crates/pg_typecheck/tests/diagnostics.rs +++ b/crates/pg_typecheck/tests/diagnostics.rs @@ -42,10 +42,17 @@ async fn test(name: &str, query: &str, setup: &str) { .unwrap(); let content = String::from_utf8(content).unwrap(); + + // Normalize line endings + let normalized_content = content.replace("\r\n", "\n"); + + // Replace Windows-style path separators with forward slashes + let normalized_content = normalized_content.replace("\\", "/"); + insta::with_settings!({ prepend_module_to_snapshot => false, }, { - insta::assert_snapshot!(name, content); + insta::assert_snapshot!(name, normalized_content); }); } From b10ab3bbf2c11bf3c21c335767a38bf40ac84dde Mon Sep 17 00:00:00 2001 From: psteinroe Date: Fri, 31 Jan 2025 10:14:20 -0100 Subject: [PATCH 09/11] fix: lets try it with unicde normalisaation --- Cargo.lock | 1 + crates/pg_typecheck/Cargo.toml | 1 + crates/pg_typecheck/tests/diagnostics.rs | 10 ++++------ .../pg_typecheck/tests/snapshots/invalid_column.snap | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8ad8fef0..164616b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2579,6 +2579,7 @@ dependencies = [ "tokio", "tree-sitter", "tree_sitter_sql", + "unicode-normalization", ] [[package]] diff --git a/crates/pg_typecheck/Cargo.toml b/crates/pg_typecheck/Cargo.toml index 1845636d..d9cc2168 100644 --- a/crates/pg_typecheck/Cargo.toml +++ b/crates/pg_typecheck/Cargo.toml @@ -25,6 +25,7 @@ tree_sitter_sql.workspace = true [dev-dependencies] pg_test_utils.workspace = true +unicode-normalization = "0.1.24" [lib] doctest = false diff --git a/crates/pg_typecheck/tests/diagnostics.rs b/crates/pg_typecheck/tests/diagnostics.rs index f44fc092..ef072be3 100644 --- a/crates/pg_typecheck/tests/diagnostics.rs +++ b/crates/pg_typecheck/tests/diagnostics.rs @@ -6,6 +6,7 @@ use pg_diagnostics::PrintDiagnostic; use pg_test_utils::test_database::get_new_test_db; use pg_typecheck::{check_sql, TypecheckParams}; use sqlx::Executor; +use unicode_normalization::UnicodeNormalization; async fn test(name: &str, query: &str, setup: &str) { let test_db = get_new_test_db().await; @@ -43,16 +44,13 @@ async fn test(name: &str, query: &str, setup: &str) { let content = String::from_utf8(content).unwrap(); - // Normalize line endings - let normalized_content = content.replace("\r\n", "\n"); - - // Replace Windows-style path separators with forward slashes - let normalized_content = normalized_content.replace("\\", "/"); + // Normalize Unicode characters + let normalized = content.nfkd().collect::(); insta::with_settings!({ prepend_module_to_snapshot => false, }, { - insta::assert_snapshot!(name, normalized_content); + insta::assert_snapshot!(name, normalized); }); } diff --git a/crates/pg_typecheck/tests/snapshots/invalid_column.snap b/crates/pg_typecheck/tests/snapshots/invalid_column.snap index 87796fb4..be33b455 100644 --- a/crates/pg_typecheck/tests/snapshots/invalid_column.snap +++ b/crates/pg_typecheck/tests/snapshots/invalid_column.snap @@ -1,6 +1,6 @@ --- source: crates/pg_typecheck/tests/diagnostics.rs -expression: content +expression: normalized snapshot_kind: text --- typecheck ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @@ -9,4 +9,4 @@ typecheck ━━━━━━━━━━━━━━━━━━━━━━━ Error Code: 42703 - Source: parse_relation.c:3716 in errorMissingColumn + i Source: parse_relation.c:3716 in errorMissingColumn From d649440dff5a857c8e544be16ffc9d1eb7f5f28f Mon Sep 17 00:00:00 2001 From: psteinroe Date: Fri, 31 Jan 2025 10:35:33 -0100 Subject: [PATCH 10/11] fix: dont print source for typecheck bc no one cares about the c code in the server anyways --- Cargo.lock | 1 - crates/pg_typecheck/Cargo.toml | 1 - crates/pg_typecheck/src/diagnostics.rs | 12 ------------ crates/pg_typecheck/tests/diagnostics.rs | 2 +- .../pg_typecheck/tests/snapshots/invalid_column.snap | 2 -- 5 files changed, 1 insertion(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 164616b0..8ad8fef0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2579,7 +2579,6 @@ dependencies = [ "tokio", "tree-sitter", "tree_sitter_sql", - "unicode-normalization", ] [[package]] diff --git a/crates/pg_typecheck/Cargo.toml b/crates/pg_typecheck/Cargo.toml index d9cc2168..1845636d 100644 --- a/crates/pg_typecheck/Cargo.toml +++ b/crates/pg_typecheck/Cargo.toml @@ -25,7 +25,6 @@ tree_sitter_sql.workspace = true [dev-dependencies] pg_test_utils.workspace = true -unicode-normalization = "0.1.24" [lib] doctest = false diff --git a/crates/pg_typecheck/src/diagnostics.rs b/crates/pg_typecheck/src/diagnostics.rs index dad260be..6a6fe914 100644 --- a/crates/pg_typecheck/src/diagnostics.rs +++ b/crates/pg_typecheck/src/diagnostics.rs @@ -86,18 +86,6 @@ impl Advices for TypecheckAdvices { visitor.record_log(LogCategory::Info, &markup! { "Hint: "{hint}"" })?; } - // Show source location if available - if let (Some(file), Some(line)) = (&self.file, &self.line) { - if let Some(routine) = &self.routine { - visitor.record_log( - LogCategory::Info, - &markup! { "Source: "{file}":"{line}" in "{routine}"" }, - )?; - } else { - visitor.record_log(LogCategory::Info, &markup! { "Source: "{file}":"{line}"" })?; - } - } - Ok(()) } } diff --git a/crates/pg_typecheck/tests/diagnostics.rs b/crates/pg_typecheck/tests/diagnostics.rs index ef072be3..68c53c51 100644 --- a/crates/pg_typecheck/tests/diagnostics.rs +++ b/crates/pg_typecheck/tests/diagnostics.rs @@ -45,7 +45,7 @@ async fn test(name: &str, query: &str, setup: &str) { let content = String::from_utf8(content).unwrap(); // Normalize Unicode characters - let normalized = content.nfkd().collect::(); + let normalized = content.nfkc().collect::(); insta::with_settings!({ prepend_module_to_snapshot => false, diff --git a/crates/pg_typecheck/tests/snapshots/invalid_column.snap b/crates/pg_typecheck/tests/snapshots/invalid_column.snap index be33b455..b8b5150a 100644 --- a/crates/pg_typecheck/tests/snapshots/invalid_column.snap +++ b/crates/pg_typecheck/tests/snapshots/invalid_column.snap @@ -8,5 +8,3 @@ typecheck ━━━━━━━━━━━━━━━━━━━━━━━ column "unknown" does not exist Error Code: 42703 - - i Source: parse_relation.c:3716 in errorMissingColumn From 20ba8655a80c30b701676b1ec3f98ad04df6420b Mon Sep 17 00:00:00 2001 From: psteinroe Date: Fri, 31 Jan 2025 10:42:05 -0100 Subject: [PATCH 11/11] fix: cleanup --- crates/pg_typecheck/tests/diagnostics.rs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/crates/pg_typecheck/tests/diagnostics.rs b/crates/pg_typecheck/tests/diagnostics.rs index 68c53c51..3488884e 100644 --- a/crates/pg_typecheck/tests/diagnostics.rs +++ b/crates/pg_typecheck/tests/diagnostics.rs @@ -6,7 +6,6 @@ use pg_diagnostics::PrintDiagnostic; use pg_test_utils::test_database::get_new_test_db; use pg_typecheck::{check_sql, TypecheckParams}; use sqlx::Executor; -use unicode_normalization::UnicodeNormalization; async fn test(name: &str, query: &str, setup: &str) { let test_db = get_new_test_db().await; @@ -44,13 +43,10 @@ async fn test(name: &str, query: &str, setup: &str) { let content = String::from_utf8(content).unwrap(); - // Normalize Unicode characters - let normalized = content.nfkc().collect::(); - insta::with_settings!({ prepend_module_to_snapshot => false, }, { - insta::assert_snapshot!(name, normalized); + insta::assert_snapshot!(name, content); }); }