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 a8ab92354..4b56d7486 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 e52723863..2cd9fa934 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 30d8b45b0..e86435715 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 4ef2ef879..401554606 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 697ce8dc2..820079fb5 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 da2d1eff4..b9d109588 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 db39825bc..27b2af947 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 219c2e7b0..000000000 --- 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 b75489f74..e816e584d 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 2cd9fa934..96ce98068 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 52cb7e1d0..aaddc24c3 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 0bf933e97..85c390f62 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 96ce98068..8ad8fef01 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 9bf1c1004..dfcac5b64 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 61af3bcdf..000000000 --- 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 22e9ed925..000000000 --- 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 a7eb8466f..000000000 --- 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 3a73bf4b5..000000000 --- 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 0b7589aa1..000000000 --- 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 67dc5fae3..000000000 --- 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 1e5bb091f..000000000 --- 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 ce26a68b7..000000000 --- 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 a349c57d1..000000000 --- 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 a9fb9b35d..000000000 --- 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 3e68e53ae..000000000 --- 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 e69de29bb..000000000 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 e69de29bb..000000000 diff --git a/crates/pg_lint/src/rules/mod.rs b/crates/pg_lint/src/rules/mod.rs deleted file mode 100644 index a396405a5..000000000 --- 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 a3f74322e..000000000 --- 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 aaddc24c3..000000000 --- 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 0c39a37e4..000000000 --- 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 8da2b984a..000000000 --- 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 7e556f7f6..000000000 --- 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 81e46e2ae..000000000 --- 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 b2dfc865b..000000000 --- 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 56bba2c2b..000000000 --- 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 8d3091961..000000000 --- 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 831b69ab5..000000000 --- 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 938d1e402..000000000 --- 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 0ac47170a..000000000 --- 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 dc8470e61..000000000 --- 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 136067af3..000000000 --- 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 664437a4a..000000000 --- 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 f0e8fc3d2..000000000 --- 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 308d8d2c3..000000000 --- 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 d631c061e..000000000 --- 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 97d05a75e..000000000 --- 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 f1b088ca5..000000000 --- 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 15073751d..000000000 --- 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 241546901..000000000 --- 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 aafd6fabb..000000000 --- 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 62866cad8..000000000 --- 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 4d7ce856a..000000000 --- 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 f9d7b1f00..000000000 --- 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 9ab1949ac..000000000 --- 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 822511cf8..000000000 --- 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 989af6c2f..000000000 --- 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 155b7f489..000000000 --- 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 f4cf2e268..000000000 --- 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 908e3839b..000000000 --- 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 0a97d2bd4..000000000 --- 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 a4872682f..000000000 --- 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 fc18e84d7..000000000 --- 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 8b7e30477..000000000 --- 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 03fc8b918..000000000 --- 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 9612a0881..000000000 --- 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 7a333a338..000000000 --- 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 cdbb7b203..000000000 --- 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 6d28c6796..000000000 --- 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 2e4bf5343..000000000 --- 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 2e4bf5343..000000000 --- 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 fd9214ceb..000000000 --- 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 2995010de..000000000 --- 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 2f71d1911..000000000 --- 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 91ad43816..000000000 --- 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 eb55006c5..000000000 --- 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 4d2b61552..000000000 --- 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 2f922867c..000000000 --- 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 768611b4f..000000000 --- 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 68998681c..000000000 --- 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 e5c402958..000000000 --- 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 843ea2854..000000000 --- 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 4d0e2ec22..000000000 --- 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 f6fb52c3b..000000000 --- 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 411966ce3..000000000 --- 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 9c09065a5..000000000 --- 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 52be0e413..000000000 --- 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 4afd7bf24..000000000 --- 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 6f05a39bc..000000000 --- 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 5149bc20d..000000000 --- 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 12906a214..000000000 --- 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 ab02915a7..000000000 --- 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 deb56fa5f..000000000 --- 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 c8a8b6318..000000000 --- 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 a11ec0a57..000000000 --- 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 eff01a03c..000000000 --- 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 6c36e8a56..000000000 --- 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 40e1e15dc..000000000 --- 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 d495abdbb..000000000 --- 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 43b995292..000000000 --- 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 06968fbf2..000000000 --- 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 26c856799..000000000 --- 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 94b813002..000000000 --- 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 e5f7fb86f..000000000 --- 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 1abaa39a5..000000000 --- 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 65e974053..000000000 --- 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 d1925e8a7..000000000 --- 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 acd52748a..000000000 --- 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 3ed8760d2..000000000 --- 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 2aa1ce6dd..000000000 --- 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 02d280a7e..000000000 --- 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 ee4b44b48..000000000 --- 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 db9152a7a..000000000 --- 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 b1128e2d0..000000000 --- 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 bbfcca9f6..000000000 --- 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 dfee884d9..000000000 --- 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 134d4a2e9..000000000 --- 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 384a318ff..000000000 --- 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 345a59d5d..000000000 --- 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 bc127b2e8..000000000 --- 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 2f1114daa..000000000 --- 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 2f1114daa..000000000 --- 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 84fa7c53a..000000000 --- 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 6ea71c7a4..000000000 --- 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 0786c84b7..000000000 --- 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 2a446dca0..000000000 --- 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 e89935257..000000000 --- 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 1762308fd..000000000 --- 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 bb38da149..000000000 --- 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 54adc89ca..000000000 --- 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 c9c833e17..000000000 --- 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 9c894ba5c..000000000 --- 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 12f0a7ecc..000000000 --- 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 ecaaca721..000000000 --- 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 9327b8f66..000000000 --- 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 1856ee9dc..000000000 --- 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 621be5290..000000000 --- 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 1d40703ee..000000000 --- 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 30e37019c..000000000 --- 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 e7c3b344e..000000000 --- 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 a9a97cf6c..000000000 --- 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 4fff07e64..000000000 --- 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 4fe627a52..000000000 --- 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 e6cbf88e4..000000000 --- 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 5ef370049..000000000 --- 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 57b18249a..000000000 --- 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 433b48c35..000000000 --- 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 3c51d79b0..000000000 --- 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 d79df88ed..000000000 --- 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 3c460f909..000000000 --- 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 d388454b5..000000000 --- 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 e2e65193e..000000000 --- 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 5eea1e8f9..000000000 --- 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 879bdc393..000000000 --- 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 17fbd3513..000000000 --- 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 1edcbbb5c..000000000 --- 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 0f082ead1..000000000 --- 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 3f74e0a5e..000000000 --- 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 8c6d568c0..000000000 --- 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 239c104f7..000000000 --- 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 a132fa05d..000000000 --- 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 4c4ca388a..000000000 --- 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 ce3eaaabb..000000000 --- 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 4422b7552..000000000 --- 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 c7ccaeeee..000000000 --- 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 1722a2269..000000000 --- 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 51deb3d35..000000000 --- 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 722053ab1..000000000 --- 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 77fd4d9d5..000000000 --- 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 c66afef2b..000000000 --- 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 1332b3b90..000000000 --- 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 198bb5a43..000000000 --- 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 a6f44bcf2..000000000 --- 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 e9b86aab8..000000000 --- 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 307757bf5..000000000 --- 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 aa1caca97..000000000 --- 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 aba2ea951..000000000 --- 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 9e016565b..000000000 --- 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 b2b5d71da..000000000 --- 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 d906b6f4c..000000000 --- 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 17b3ea3f2..000000000 --- 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 bdffe04e5..000000000 --- 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 a34569e00..000000000 --- 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 ad884c6fa..000000000 --- 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 20de1d063..000000000 --- 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 b78e5c340..000000000 --- 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 35277c779..000000000 --- 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 ec36c719f..000000000 --- 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 af2529ccb..000000000 --- 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 e4d5a7e00..000000000 --- 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 4e54a6784..000000000 --- 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 bc1759996..000000000 --- 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 0e30fdee8..000000000 --- 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 54e477034..000000000 --- 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 4259b54d1..000000000 --- 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 ce4fdeec0..000000000 --- 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 3584f6309..000000000 --- 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 e11720336..000000000 --- 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 65ba58acb..000000000 --- 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 677d332a7..000000000 --- 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 272223655..000000000 --- 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 a3b78e8da..000000000 --- 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 d317dd4b2..000000000 --- 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 73f222757..000000000 --- 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 180590de9..000000000 --- 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 3d2cb600a..000000000 --- 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 dfcac5b64..b73642a36 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 e86435715..db5a18fa1 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 401554606..5ff3a493a 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 820079fb5..4ca03c153 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 4295e310d..f44fc092d 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 8ad8fef01..164616b04 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 1845636d3..d9cc21687 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 f44fc092d..ef072be32 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 87796fb41..be33b4557 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 164616b04..8ad8fef01 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 d9cc21687..1845636d3 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 dad260be9..6a6fe9143 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 ef072be32..68c53c51b 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 be33b4557..b8b5150ae 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 68c53c51b..3488884ed 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); }); }