diff --git a/Cargo.lock b/Cargo.lock index 96d5f578d..80f93074c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1360,6 +1360,7 @@ dependencies = [ "sqlquack-snowflake", "sqlquack-syntax", "tempfile", + "toml", "walkdir", ] diff --git a/Makefile b/Makefile index 076be54a2..f7ffbbb45 100644 --- a/Makefile +++ b/Makefile @@ -30,7 +30,7 @@ PYTHON_TYPED := scripts tests/unit/scripts python/src $(PYTHON_API_TESTS) PYTHON_TESTS := tests/unit/scripts $(PYTHON_API_TESTS) endif -.PHONY: format rust-lint python-check fensu syntax-coverage gate-build evidence-guard polyglot-guard generate-cases generated-cases generate-referee-cases referee-cases referee-pending translation-results check-ci check-merge test test-rust test-python python-module python-api python-wheel verify-recorded polyglot-duckshop census-duckshop fuzz-smoke gate gate-parallel census duckshop-compiled duckshop-measure +.PHONY: format rust-lint python-check fensu syntax-coverage gate-build evidence-guard polyglot-guard generate-cases generated-cases corpus-rerecord generate-referee-cases referee-cases referee-pending translation-results check-ci check-merge test test-rust test-python python-module python-api python-wheel verify-recorded polyglot-duckshop census-duckshop fuzz-smoke gate gate-parallel census duckshop-compiled duckshop-measure format: cargo fmt --all @@ -74,6 +74,11 @@ polyglot-guard: generate-cases: uv run python -m scripts.generate_cases +# Rewrites the outcomes recorded in corpora/everyday, everyday-models and basics from the current +# converter. Run it in the PR whose change moves an outcome, and commit the corpora with it. +corpus-rerecord: + SQLQUACK_RERECORD=1 cargo test --locked -p sqlquack --lib everyday_corpus + # Fails when a generated case file differs from what its generator writes. generated-cases: uv run python -m scripts.generate_cases --check diff --git a/corpora/basics/fixture.sql b/corpora/basics/fixture.sql new file mode 100644 index 000000000..57c79d9db --- /dev/null +++ b/corpora/basics/fixture.sql @@ -0,0 +1,29 @@ +-- The rows the basics corpus's translations run over, in the DuckDB types converted SQL reads +-- corpora/basics/schema.json as; the playground's sample rows. +CREATE TABLE "CUSTOMERS" ("CUSTOMER_ID" DECIMAL(38,0), "EMAIL" VARCHAR, "FIRST_NAME" VARCHAR, "COUNTRY" VARCHAR, "SIGNUP_DATE" DATE); +CREATE TABLE "EVENTS" ("EVENT_ID" DECIMAL(38,0), "CUSTOMER_ID" DECIMAL(38,0), "EVENT_TYPE" VARCHAR, "OCCURRED_AT" TIMESTAMP_NS, "PAYLOAD" JSON); +CREATE TABLE "ORDERS" ("ORDER_ID" DECIMAL(38,0), "CUSTOMER_ID" DECIMAL(38,0), "STATUS" VARCHAR, "TOTAL" DECIMAL(12,2), "ORDERED_AT" TIMESTAMP_NS); +CREATE TABLE "ORDER_ITEMS" ("ORDER_ID" DECIMAL(38,0), "PRODUCT_ID" DECIMAL(38,0), "QUANTITY" DECIMAL(38,0), "UNIT_PRICE" DECIMAL(10,2)); +CREATE TABLE "PRODUCTS" ("PRODUCT_ID" DECIMAL(38,0), "NAME" VARCHAR, "CATEGORY" VARCHAR, "PRICE" DECIMAL(10,2)); +INSERT INTO "ORDERS" VALUES + (1, 10, 'shipped', 120.50, TIMESTAMP '2026-10-01 09:30:00'), + (2, 10, 'shipped', 80.00, TIMESTAMP '2026-10-03 14:00:00'), + (3, 11, 'pending', 45.25, TIMESTAMP '2026-10-04 11:15:00'), + (4, 12, 'shipped', 310.00, TIMESTAMP '2026-10-05 16:45:00'), + (5, 12, NULL, 12.99, TIMESTAMP '2026-10-06 08:05:00'); +INSERT INTO "CUSTOMERS" VALUES + (10, 'ada@example.com', 'Ada', 'GB', DATE '2026-01-15'), + (11, 'grace@example.com', 'Grace', 'US', DATE '2026-03-02'), + (12, 'linus@example.com', 'Linus', 'FI', DATE '2026-06-20'); +INSERT INTO "PRODUCTS" VALUES + (100, 'Duck mug', 'kitchen', 12.50), + (101, 'Rubber duck', 'toys', 4.99), + (102, 'Pond map', 'books', 30.00); +INSERT INTO "ORDER_ITEMS" VALUES + (1, 100, 2, 12.50), (1, 101, 1, 4.99), (2, 102, 2, 30.00), + (3, 101, 5, 4.99), (4, 102, 10, 30.00), (5, 101, 1, 4.99); +INSERT INTO "EVENTS" VALUES + (1000, 10, 'view', TIMESTAMP '2026-10-01 09:00:00', '{"page": "/mugs", "ms": 820}'), + (1001, 10, 'purchase', TIMESTAMP '2026-10-01 09:30:00', '{"order_id": 1, "items": [100, 101]}'), + (1002, 11, 'view', TIMESTAMP '2026-10-04 11:00:00', '{"page": "/ducks", "ms": 310}'), + (1003, 12, 'purchase', TIMESTAMP '2026-10-05 16:45:00', '{"order_id": 4, "items": [102]}'); diff --git a/corpora/basics/queries.toml b/corpora/basics/queries.toml new file mode 100644 index 000000000..9f90d9954 --- /dev/null +++ b/corpora/basics/queries.toml @@ -0,0 +1,14593 @@ +# Generated by scripts/generate_basics_corpus.py, then `make corpus-rerecord`. +# Do not edit. Basic Snowflake statements a first-time user types, each in its plain spelling +# and others that mean the same statement (case, whitespace, a final semicolon, comments, a +# quoted table name), with the outcome SQLQuack gives each under the built-in policy (`expect`) +# and under the repository policy in a UTC session (`expect_repository`), and the translation's +# result on fixture.sql. The everyday corpus test checks them. + +[[query]] +category = "select_literal" +sql = '''SELECT 1 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select 1 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_literal" +sql = '''SelEct 1 AS v -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_literal" +sql = '''select /* c */ 1 as v;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_literal" +sql = '''select 1 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_literal" +sql = '''SELECT 1''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_literal" +sql = '''sELECT 1 -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..8" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..8" + +[[query]] +category = "select_literal" +sql = '''select /* c */ 1''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_literal" +sql = '''select 1 -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..8" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..8" + +[[query]] +category = "select_literal" +sql = '''-- a comment +SELECT 1''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_literal_from" +sql = '''SELECT /* c */ 1 AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_literal_from" +sql = '''select 1 as v + from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_literal_from" +sql = '''select /* c */ 1 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_literal_from" +sql = '''select /* c */ 1 as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_literal_from" +sql = '''select 1 from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_literal_from" +sql = '''SelECt 1 fROM OrderS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_literal_from" +sql = '''seleCT /* c */ 1 froM "ORDERS" +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_literal_from" +sql = '''select 1 from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_literal" +sql = '''SELECT 0 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5feceb66ffc86f38" +result_repository = "1 rows 5feceb66ffc86f38" + +[[query]] +category = "select_literal" +sql = '''seLect 0 As V -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5feceb66ffc86f38" +result_repository = "1 rows 5feceb66ffc86f38" + +[[query]] +category = "select_literal" +sql = '''seLecT 0 As v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5feceb66ffc86f38" +result_repository = "1 rows 5feceb66ffc86f38" + +[[query]] +category = "select_literal" +sql = '''select /* c */ 0 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5feceb66ffc86f38" +result_repository = "1 rows 5feceb66ffc86f38" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select 0 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5feceb66ffc86f38" +result_repository = "1 rows 5feceb66ffc86f38" + +[[query]] +category = "select_literal" +sql = '''SELECT 0''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5feceb66ffc86f38" +result_repository = "1 rows 5feceb66ffc86f38" + +[[query]] +category = "select_literal" +sql = '''select /* c */ 0 +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5feceb66ffc86f38" +result_repository = "1 rows 5feceb66ffc86f38" + +[[query]] +category = "select_literal" +sql = '''-- a comment +sElECt 0''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5feceb66ffc86f38" +result_repository = "1 rows 5feceb66ffc86f38" + +[[query]] +category = "select_literal" +sql = '''select 0''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5feceb66ffc86f38" +result_repository = "1 rows 5feceb66ffc86f38" + +[[query]] +category = "select_literal" +sql = '''selECt /* c */ 0''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5feceb66ffc86f38" +result_repository = "1 rows 5feceb66ffc86f38" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 0 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 605a24fda3506c2d" +result_repository = "5 rows 605a24fda3506c2d" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 0 AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 605a24fda3506c2d" +result_repository = "5 rows 605a24fda3506c2d" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select 0 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 605a24fda3506c2d" +result_repository = "5 rows 605a24fda3506c2d" + +[[query]] +category = "select_literal_from" +sql = '''select 0 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 605a24fda3506c2d" +result_repository = "5 rows 605a24fda3506c2d" + +[[query]] +category = "select_literal_from" +sql = '''SELecT 0 AS v FROm OrDerS ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 605a24fda3506c2d" +result_repository = "5 rows 605a24fda3506c2d" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 0 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 605a24fda3506c2d" +result_repository = "5 rows 605a24fda3506c2d" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 0 FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 605a24fda3506c2d" +result_repository = "5 rows 605a24fda3506c2d" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select 0 from "ORDERS" ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 605a24fda3506c2d" +result_repository = "5 rows 605a24fda3506c2d" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +sElECT 0 FRoM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 605a24fda3506c2d" +result_repository = "5 rows 605a24fda3506c2d" + +[[query]] +category = "select_literal_from" +sql = '''select 0 + from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 605a24fda3506c2d" +result_repository = "5 rows 605a24fda3506c2d" + +[[query]] +category = "select_literal" +sql = '''SELECT 42 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 73475cb40a568e8d" +result_repository = "1 rows 73475cb40a568e8d" + +[[query]] +category = "select_literal" +sql = '''select 42 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 73475cb40a568e8d" +result_repository = "1 rows 73475cb40a568e8d" + +[[query]] +category = "select_literal" +sql = '''SeLeCt /* c */ 42 aS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 73475cb40a568e8d" +result_repository = "1 rows 73475cb40a568e8d" + +[[query]] +category = "select_literal" +sql = '''SELECT /* c */ 42 AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 73475cb40a568e8d" +result_repository = "1 rows 73475cb40a568e8d" + +[[query]] +category = "select_literal" +sql = '''SELECT 42 AS V; +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 73475cb40a568e8d" +result_repository = "1 rows 73475cb40a568e8d" + +[[query]] +category = "select_literal" +sql = '''SELECT 42''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 73475cb40a568e8d" +result_repository = "1 rows 73475cb40a568e8d" + +[[query]] +category = "select_literal" +sql = '''select 42 -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..9" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..9" + +[[query]] +category = "select_literal" +sql = '''-- a comment +SEleCt 42''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 73475cb40a568e8d" +result_repository = "1 rows 73475cb40a568e8d" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 42 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 54a230a2fd8db241" +result_repository = "5 rows 54a230a2fd8db241" + +[[query]] +category = "select_literal_from" +sql = '''select 42 as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 54a230a2fd8db241" +result_repository = "5 rows 54a230a2fd8db241" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +SELECT 42 AS V + FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 54a230a2fd8db241" +result_repository = "5 rows 54a230a2fd8db241" + +[[query]] +category = "select_literal_from" +sql = '''select 42 as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 54a230a2fd8db241" +result_repository = "5 rows 54a230a2fd8db241" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 42 AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 54a230a2fd8db241" +result_repository = "5 rows 54a230a2fd8db241" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 42 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 54a230a2fd8db241" +result_repository = "5 rows 54a230a2fd8db241" + +[[query]] +category = "select_literal_from" +sql = '''select /* c */ 42 + from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 54a230a2fd8db241" +result_repository = "5 rows 54a230a2fd8db241" + +[[query]] +category = "select_literal_from" +sql = '''SELeCT 42 + FrOM ORDerS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 54a230a2fd8db241" +result_repository = "5 rows 54a230a2fd8db241" + +[[query]] +category = "select_literal_from" +sql = '''SeleCT /* c */ 42 + fRom ordERs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 54a230a2fd8db241" +result_repository = "5 rows 54a230a2fd8db241" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +SELECT 42 FROM ORDERS +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 54a230a2fd8db241" +result_repository = "5 rows 54a230a2fd8db241" + +[[query]] +category = "select_literal" +sql = '''SELECT 1. AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_literal" +sql = '''-- a comment +selEcT 1. as V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_literal" +sql = '''-- a comment +SeLeCT 1. As v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_literal" +sql = '''SELECT 1. AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_literal" +sql = '''select 1. as v -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_literal" +sql = '''SELECT 1.''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..9" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..9" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select 1.''' +expect = "refused SQ0009 syntax:unaliased_output_name at 13..22" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 13..22" + +[[query]] +category = "select_literal" +sql = '''SEleCt 1. -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..9" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..9" + +[[query]] +category = "select_literal" +sql = '''select /* c */ 1.''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..17" + +[[query]] +category = "select_literal" +sql = '''select 1. ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..9" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..9" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1. AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_literal_from" +sql = '''sELEct 1. as v + fRoM OrdeRS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_literal_from" +sql = '''SELECT /* c */ 1. AS V FROM ORDERS; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_literal_from" +sql = '''select 1. as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1. AS V FROM ORDERS +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1. FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..21" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..21" + +[[query]] +category = "select_literal_from" +sql = '''seLECt 1. fROm oRDERs +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..23" + +[[query]] +category = "select_literal_from" +sql = '''SELECT /* c */ 1. FROM ORDERS; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..31" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..31" + +[[query]] +category = "select_literal_from" +sql = '''sElecT 1. + from ORDErs -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..23" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1. FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..21" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..21" + +[[query]] +category = "select_literal" +sql = '''SELECT .5 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows d2cbad71ff333de6" +result_repository = "1 rows d2cbad71ff333de6" + +[[query]] +category = "select_literal" +sql = '''sELeCT /* c */ .5 AS V ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows d2cbad71ff333de6" +result_repository = "1 rows d2cbad71ff333de6" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select .5 as v ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows d2cbad71ff333de6" +result_repository = "1 rows d2cbad71ff333de6" + +[[query]] +category = "select_literal" +sql = '''select .5 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows d2cbad71ff333de6" +result_repository = "1 rows d2cbad71ff333de6" + +[[query]] +category = "select_literal" +sql = '''select /* c */ .5 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows d2cbad71ff333de6" +result_repository = "1 rows d2cbad71ff333de6" + +[[query]] +category = "select_literal" +sql = '''SELECT .5''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..9" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..9" + +[[query]] +category = "select_literal" +sql = '''-- a comment +SELect .5''' +expect = "refused SQ0009 syntax:unaliased_output_name at 13..22" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 13..22" + +[[query]] +category = "select_literal" +sql = '''select /* c */ .5''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..17" + +[[query]] +category = "select_literal" +sql = '''select .5 -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..9" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..9" + +[[query]] +category = "select_literal" +sql = '''SELECT /* c */ .5''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..17" + +[[query]] +category = "select_literal_from" +sql = '''SELECT .5 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows d85cf4204ea44a91" +result_repository = "5 rows d85cf4204ea44a91" + +[[query]] +category = "select_literal_from" +sql = '''SELECT .5 AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows d85cf4204ea44a91" +result_repository = "5 rows d85cf4204ea44a91" + +[[query]] +category = "select_literal_from" +sql = '''select /* c */ .5 as v from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows d85cf4204ea44a91" +result_repository = "5 rows d85cf4204ea44a91" + +[[query]] +category = "select_literal_from" +sql = '''SELECT .5 AS V FROM "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows d85cf4204ea44a91" +result_repository = "5 rows d85cf4204ea44a91" + +[[query]] +category = "select_literal_from" +sql = '''SELECT .5 AS V + FROM ORDERS;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows d85cf4204ea44a91" +result_repository = "5 rows d85cf4204ea44a91" + +[[query]] +category = "select_literal_from" +sql = '''SELECT .5 FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..21" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..21" + +[[query]] +category = "select_literal_from" +sql = '''select .5 from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..23" + +[[query]] +category = "select_literal_from" +sql = '''SELECT .5 FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..21" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..21" + +[[query]] +category = "select_literal_from" +sql = '''SELECT /* c */ .5 FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..29" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..29" + +[[query]] +category = "select_literal_from" +sql = '''SELECT /* c */ .5 FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..31" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..31" + +[[query]] +category = "select_literal" +sql = '''SELECT 1.5 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 9f29a130438b8117" +result_repository = "1 rows 9f29a130438b8117" + +[[query]] +category = "select_literal" +sql = '''select 1.5 as v -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 9f29a130438b8117" +result_repository = "1 rows 9f29a130438b8117" + +[[query]] +category = "select_literal" +sql = '''select /* c */ 1.5 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 9f29a130438b8117" +result_repository = "1 rows 9f29a130438b8117" + +[[query]] +category = "select_literal" +sql = '''SELECT 1.5 AS V;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 9f29a130438b8117" +result_repository = "1 rows 9f29a130438b8117" + +[[query]] +category = "select_literal" +sql = '''SELECT 1.5 AS V; +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 9f29a130438b8117" +result_repository = "1 rows 9f29a130438b8117" + +[[query]] +category = "select_literal" +sql = '''SELECT 1.5''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 9f29a130438b8117" +result_repository = "1 rows 9f29a130438b8117" + +[[query]] +category = "select_literal" +sql = '''SeLeCt 1.5 +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 9f29a130438b8117" +result_repository = "1 rows 9f29a130438b8117" + +[[query]] +category = "select_literal" +sql = '''select 1.5''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 9f29a130438b8117" +result_repository = "1 rows 9f29a130438b8117" + +[[query]] +category = "select_literal" +sql = '''sELecT 1.5''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 9f29a130438b8117" +result_repository = "1 rows 9f29a130438b8117" + +[[query]] +category = "select_literal" +sql = '''SelECt /* c */ 1.5; +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 9f29a130438b8117" +result_repository = "1 rows 9f29a130438b8117" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1.5 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 16a3005361680757" +result_repository = "5 rows 16a3005361680757" + +[[query]] +category = "select_literal_from" +sql = '''sELECT /* c */ 1.5 AS v FRoM OrDerS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 16a3005361680757" +result_repository = "5 rows 16a3005361680757" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1.5 AS V + FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 16a3005361680757" +result_repository = "5 rows 16a3005361680757" + +[[query]] +category = "select_literal_from" +sql = '''SElect 1.5 AS v fROM ORDErS; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 16a3005361680757" +result_repository = "5 rows 16a3005361680757" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1.5 AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 16a3005361680757" +result_repository = "5 rows 16a3005361680757" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1.5 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 16a3005361680757" +result_repository = "5 rows 16a3005361680757" + +[[query]] +category = "select_literal_from" +sql = '''select 1.5 from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 16a3005361680757" +result_repository = "5 rows 16a3005361680757" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +sELect 1.5 FROM oRDeRs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 16a3005361680757" +result_repository = "5 rows 16a3005361680757" + +[[query]] +category = "select_literal_from" +sql = '''select 1.5 from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 16a3005361680757" +result_repository = "5 rows 16a3005361680757" + +[[query]] +category = "select_literal_from" +sql = '''sElEct 1.5 FRoM ORDErs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 16a3005361680757" +result_repository = "5 rows 16a3005361680757" + +[[query]] +category = "select_literal" +sql = '''SELECT 1e3 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 40510175845988f1" +result_repository = "1 rows 40510175845988f1" + +[[query]] +category = "select_literal" +sql = '''-- a comment +SeLECt 1E3 As V;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 40510175845988f1" +result_repository = "1 rows 40510175845988f1" + +[[query]] +category = "select_literal" +sql = '''SeLEcT 1e3 aS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 40510175845988f1" +result_repository = "1 rows 40510175845988f1" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select 1e3 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 40510175845988f1" +result_repository = "1 rows 40510175845988f1" + +[[query]] +category = "select_literal" +sql = '''SELECT 1E3 AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 40510175845988f1" +result_repository = "1 rows 40510175845988f1" + +[[query]] +category = "select_literal" +sql = '''SELECT 1e3''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 40510175845988f1" +result_repository = "1 rows 40510175845988f1" + +[[query]] +category = "select_literal" +sql = '''-- a comment +SELECT 1E3 +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 13..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 13..23" + +[[query]] +category = "select_literal" +sql = '''seLecT /* c */ 1E3 ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..18" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..18" + +[[query]] +category = "select_literal" +sql = '''SELECt 1E3 -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..10" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..10" + +[[query]] +category = "select_literal" +sql = '''select 1e3 -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..10" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..10" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1e3 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae4ef294a99638c0" +result_repository = "5 rows ae4ef294a99638c0" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select 1e3 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae4ef294a99638c0" +result_repository = "5 rows ae4ef294a99638c0" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select 1e3 as v from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae4ef294a99638c0" +result_repository = "5 rows ae4ef294a99638c0" + +[[query]] +category = "select_literal_from" +sql = '''SElEcT 1e3 as v + FROM oRdERs -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae4ef294a99638c0" +result_repository = "5 rows ae4ef294a99638c0" + +[[query]] +category = "select_literal_from" +sql = '''select /* c */ 1e3 as v from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae4ef294a99638c0" +result_repository = "5 rows ae4ef294a99638c0" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1e3 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae4ef294a99638c0" +result_repository = "5 rows ae4ef294a99638c0" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select 1e3 from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae4ef294a99638c0" +result_repository = "5 rows ae4ef294a99638c0" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select 1e3 from "ORDERS";''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae4ef294a99638c0" +result_repository = "5 rows ae4ef294a99638c0" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select 1e3 + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae4ef294a99638c0" +result_repository = "5 rows ae4ef294a99638c0" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1E3 FROM "ORDERS" -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..26" + +[[query]] +category = "select_literal" +sql = '''SELECT 1E-2 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 312b95ee5a344d2f" +result_repository = "1 rows 312b95ee5a344d2f" + +[[query]] +category = "select_literal" +sql = '''-- a comment +sELeCT 1E-2 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 312b95ee5a344d2f" +result_repository = "1 rows 312b95ee5a344d2f" + +[[query]] +category = "select_literal" +sql = '''select /* c */ 1E-2 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 312b95ee5a344d2f" +result_repository = "1 rows 312b95ee5a344d2f" + +[[query]] +category = "select_literal" +sql = '''SELECT 1E-2 AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 312b95ee5a344d2f" +result_repository = "1 rows 312b95ee5a344d2f" + +[[query]] +category = "select_literal" +sql = '''SELECT /* c */ 1E-2 AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 312b95ee5a344d2f" +result_repository = "1 rows 312b95ee5a344d2f" + +[[query]] +category = "select_literal" +sql = '''SELECT 1E-2''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..11" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..11" + +[[query]] +category = "select_literal" +sql = '''select 1E-2;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..11" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..11" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select 1e-2 ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 13..24" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 13..24" + +[[query]] +category = "select_literal" +sql = '''select /* c */ 1E-2''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..19" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..19" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1E-2 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows f69a4615456312f9" +result_repository = "5 rows f69a4615456312f9" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1E-2 AS V + FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows f69a4615456312f9" +result_repository = "5 rows f69a4615456312f9" + +[[query]] +category = "select_literal_from" +sql = '''select 1E-2 as v from orders ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows f69a4615456312f9" +result_repository = "5 rows f69a4615456312f9" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1E-2 AS V FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows f69a4615456312f9" +result_repository = "5 rows f69a4615456312f9" + +[[query]] +category = "select_literal_from" +sql = '''seLeCT 1E-2 aS v frOm "ORDERS" ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows f69a4615456312f9" +result_repository = "5 rows f69a4615456312f9" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1E-2 FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..23" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select 1E-2 from "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 13..38" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 13..38" + +[[query]] +category = "select_literal_from" +sql = '''select 1e-2 from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..23" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select 1E-2 + from "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 13..40" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 13..40" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 1E-2 FROM ORDERS;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..23" + +[[query]] +category = "select_literal" +sql = '''SELECT -1 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 1bad6b8cf97131fc" +result_repository = "1 rows 1bad6b8cf97131fc" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select -1 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 1bad6b8cf97131fc" +result_repository = "1 rows 1bad6b8cf97131fc" + +[[query]] +category = "select_literal" +sql = '''seleCT -1 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 1bad6b8cf97131fc" +result_repository = "1 rows 1bad6b8cf97131fc" + +[[query]] +category = "select_literal" +sql = '''select -1 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 1bad6b8cf97131fc" +result_repository = "1 rows 1bad6b8cf97131fc" + +[[query]] +category = "select_literal" +sql = '''SELECT -1 AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 1bad6b8cf97131fc" +result_repository = "1 rows 1bad6b8cf97131fc" + +[[query]] +category = "select_literal" +sql = '''SELECT -1''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 1bad6b8cf97131fc" +result_repository = "1 rows 1bad6b8cf97131fc" + +[[query]] +category = "select_literal" +sql = '''select -1''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 1bad6b8cf97131fc" +result_repository = "1 rows 1bad6b8cf97131fc" + +[[query]] +category = "select_literal" +sql = '''select /* c */ -1''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 1bad6b8cf97131fc" +result_repository = "1 rows 1bad6b8cf97131fc" + +[[query]] +category = "select_literal" +sql = '''select -1 -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..9" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..9" + +[[query]] +category = "select_literal_from" +sql = '''SELECT -1 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 6ea42b3f8113be89" +result_repository = "5 rows 6ea42b3f8113be89" + +[[query]] +category = "select_literal_from" +sql = '''SELECT -1 AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 6ea42b3f8113be89" +result_repository = "5 rows 6ea42b3f8113be89" + +[[query]] +category = "select_literal_from" +sql = '''SELECT /* c */ -1 AS V FROM ORDERS ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 6ea42b3f8113be89" +result_repository = "5 rows 6ea42b3f8113be89" + +[[query]] +category = "select_literal_from" +sql = '''select /* c */ -1 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 6ea42b3f8113be89" +result_repository = "5 rows 6ea42b3f8113be89" + +[[query]] +category = "select_literal_from" +sql = '''select -1 as v from "ORDERS" ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 6ea42b3f8113be89" +result_repository = "5 rows 6ea42b3f8113be89" + +[[query]] +category = "select_literal_from" +sql = '''SELECT -1 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 6ea42b3f8113be89" +result_repository = "5 rows 6ea42b3f8113be89" + +[[query]] +category = "select_literal_from" +sql = '''select -1 from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 6ea42b3f8113be89" +result_repository = "5 rows 6ea42b3f8113be89" + +[[query]] +category = "select_literal_from" +sql = '''select -1 from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 6ea42b3f8113be89" +result_repository = "5 rows 6ea42b3f8113be89" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +SELECT -1 FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 6ea42b3f8113be89" +result_repository = "5 rows 6ea42b3f8113be89" + +[[query]] +category = "select_literal_from" +sql = '''select /* c */ -1 + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 6ea42b3f8113be89" +result_repository = "5 rows 6ea42b3f8113be89" + +[[query]] +category = "select_literal" +sql = '''SELECT +1 AS v''' +expect = "refused SQ0002 node:pos at 7..9" +expect_repository = "refused SQ0002 node:pos at 7..9" + +[[query]] +category = "select_literal" +sql = '''-- a comment +SELECT +1 AS V''' +expect = "refused SQ0002 node:pos at 20..22" +expect_repository = "refused SQ0002 node:pos at 20..22" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select +1 as v''' +expect = "refused SQ0002 node:pos at 20..22" +expect_repository = "refused SQ0002 node:pos at 20..22" + +[[query]] +category = "select_literal" +sql = '''seleCT +1 AS V''' +expect = "refused SQ0002 node:pos at 7..9" +expect_repository = "refused SQ0002 node:pos at 7..9" + +[[query]] +category = "select_literal" +sql = '''SELECT +1 AS V +''' +expect = "refused SQ0002 node:pos at 7..9" +expect_repository = "refused SQ0002 node:pos at 7..9" + +[[query]] +category = "select_literal" +sql = '''SELECT +1''' +expect = "refused SQ0002 node:pos at 7..9" +expect_repository = "refused SQ0002 node:pos at 7..9" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select +1; +''' +expect = "refused SQ0002 node:pos at 20..22" +expect_repository = "refused SQ0002 node:pos at 20..22" + +[[query]] +category = "select_literal" +sql = '''select /* c */ +1 ;''' +expect = "refused SQ0002 node:pos at 15..17" +expect_repository = "refused SQ0002 node:pos at 15..17" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select +1 +''' +expect = "refused SQ0002 node:pos at 20..22" +expect_repository = "refused SQ0002 node:pos at 20..22" + +[[query]] +category = "select_literal" +sql = '''select +1; +''' +expect = "refused SQ0002 node:pos at 7..9" +expect_repository = "refused SQ0002 node:pos at 7..9" + +[[query]] +category = "select_literal_from" +sql = '''SELECT +1 AS v FROM orders''' +expect = "refused SQ0002 node:pos at 7..9" +expect_repository = "refused SQ0002 node:pos at 7..9" + +[[query]] +category = "select_literal_from" +sql = '''SelecT +1 aS V FroM OrdERS''' +expect = "refused SQ0002 node:pos at 7..9" +expect_repository = "refused SQ0002 node:pos at 7..9" + +[[query]] +category = "select_literal_from" +sql = '''SeLeCT /* c */ +1 aS v + froM "ORDERS" ;''' +expect = "refused SQ0002 node:pos at 15..17" +expect_repository = "refused SQ0002 node:pos at 15..17" + +[[query]] +category = "select_literal_from" +sql = '''select +1 as v from "ORDERS" -- trailing comment''' +expect = "refused SQ0002 node:pos at 7..9" +expect_repository = "refused SQ0002 node:pos at 7..9" + +[[query]] +category = "select_literal_from" +sql = '''sELEct /* c */ +1 As V fROM OrderS''' +expect = "refused SQ0002 node:pos at 15..17" +expect_repository = "refused SQ0002 node:pos at 15..17" + +[[query]] +category = "select_literal_from" +sql = '''SELECT +1 FROM orders''' +expect = "refused SQ0002 node:pos at 7..9" +expect_repository = "refused SQ0002 node:pos at 7..9" + +[[query]] +category = "select_literal_from" +sql = '''sELect +1 fRom OrdeRS''' +expect = "refused SQ0002 node:pos at 7..9" +expect_repository = "refused SQ0002 node:pos at 7..9" + +[[query]] +category = "select_literal_from" +sql = '''SELECT +1 FROM ORDERS -- trailing comment''' +expect = "refused SQ0002 node:pos at 7..9" +expect_repository = "refused SQ0002 node:pos at 7..9" + +[[query]] +category = "select_literal_from" +sql = '''select /* c */ +1 from "ORDERS"''' +expect = "refused SQ0002 node:pos at 15..17" +expect_repository = "refused SQ0002 node:pos at 15..17" + +[[query]] +category = "select_literal_from" +sql = '''SELECT /* c */ +1 FROM ORDERS''' +expect = "refused SQ0002 node:pos at 15..17" +expect_repository = "refused SQ0002 node:pos at 15..17" + +[[query]] +category = "select_literal" +sql = '''SELECT -0.25 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows c39e10a12e907115" +result_repository = "1 rows c39e10a12e907115" + +[[query]] +category = "select_literal" +sql = '''select -0.25 as v ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows c39e10a12e907115" +result_repository = "1 rows c39e10a12e907115" + +[[query]] +category = "select_literal" +sql = '''select -0.25 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows c39e10a12e907115" +result_repository = "1 rows c39e10a12e907115" + +[[query]] +category = "select_literal" +sql = '''SELECT -0.25 AS V +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows c39e10a12e907115" +result_repository = "1 rows c39e10a12e907115" + +[[query]] +category = "select_literal" +sql = '''SELECT -0.25''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_literal" +sql = '''sElEct -0.25; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_literal" +sql = '''select -0.25''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_literal" +sql = '''SelecT /* c */ -0.25 ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_literal" +sql = '''-- a comment +SELECT -0.25;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..25" + +[[query]] +category = "select_literal_from" +sql = '''SELECT -0.25 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows a45cbf8a0c2cdc7f" +result_repository = "5 rows a45cbf8a0c2cdc7f" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +SELECT -0.25 AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows a45cbf8a0c2cdc7f" +result_repository = "5 rows a45cbf8a0c2cdc7f" + +[[query]] +category = "select_literal_from" +sql = '''SELect -0.25 as v + from "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows a45cbf8a0c2cdc7f" +result_repository = "5 rows a45cbf8a0c2cdc7f" + +[[query]] +category = "select_literal_from" +sql = '''select -0.25 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows a45cbf8a0c2cdc7f" +result_repository = "5 rows a45cbf8a0c2cdc7f" + +[[query]] +category = "select_literal_from" +sql = '''select -0.25 as v from orders ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows a45cbf8a0c2cdc7f" +result_repository = "5 rows a45cbf8a0c2cdc7f" + +[[query]] +category = "select_literal_from" +sql = '''SELECT -0.25 FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_literal_from" +sql = '''select -0.25 from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select -0.25 from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..25" + +[[query]] +category = "select_literal_from" +sql = '''SELECT -0.25 + FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_literal_from" +sql = '''select -0.25 from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_literal" +sql = '''SELECT TRUE AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows b5bea41b6c623f7c" +result_repository = "1 rows b5bea41b6c623f7c" + +[[query]] +category = "select_literal" +sql = '''SELECT TRUE AS V -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows b5bea41b6c623f7c" +result_repository = "1 rows b5bea41b6c623f7c" + +[[query]] +category = "select_literal" +sql = '''select TRUE as v;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows b5bea41b6c623f7c" +result_repository = "1 rows b5bea41b6c623f7c" + +[[query]] +category = "select_literal" +sql = '''sElEcT truE aS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows b5bea41b6c623f7c" +result_repository = "1 rows b5bea41b6c623f7c" + +[[query]] +category = "select_literal" +sql = '''SELECT TRUE AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows b5bea41b6c623f7c" +result_repository = "1 rows b5bea41b6c623f7c" + +[[query]] +category = "select_literal" +sql = '''SELECT TRUE''' +expect = "translated" +expect_repository = "translated" +result = "1 rows b5bea41b6c623f7c" +result_repository = "1 rows b5bea41b6c623f7c" + +[[query]] +category = "select_literal" +sql = '''select TRUE +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows b5bea41b6c623f7c" +result_repository = "1 rows b5bea41b6c623f7c" + +[[query]] +category = "select_literal" +sql = '''select TRUE -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..11" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..11" + +[[query]] +category = "select_literal" +sql = '''select true''' +expect = "translated" +expect_repository = "translated" +result = "1 rows b5bea41b6c623f7c" +result_repository = "1 rows b5bea41b6c623f7c" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select true''' +expect = "translated" +expect_repository = "translated" +result = "1 rows b5bea41b6c623f7c" +result_repository = "1 rows b5bea41b6c623f7c" + +[[query]] +category = "select_literal_from" +sql = '''SELECT TRUE AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1160e0fdd6f18516" +result_repository = "5 rows 1160e0fdd6f18516" + +[[query]] +category = "select_literal_from" +sql = '''seLEcT TrUE As V FROM oRdErS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1160e0fdd6f18516" +result_repository = "5 rows 1160e0fdd6f18516" + +[[query]] +category = "select_literal_from" +sql = '''seleCT TRUE As V + fRom ORdeRs -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1160e0fdd6f18516" +result_repository = "5 rows 1160e0fdd6f18516" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select TRUE as v from orders +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1160e0fdd6f18516" +result_repository = "5 rows 1160e0fdd6f18516" + +[[query]] +category = "select_literal_from" +sql = '''SeLEct TRuE As V fROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1160e0fdd6f18516" +result_repository = "5 rows 1160e0fdd6f18516" + +[[query]] +category = "select_literal_from" +sql = '''SELECT TRUE FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1160e0fdd6f18516" +result_repository = "5 rows 1160e0fdd6f18516" + +[[query]] +category = "select_literal_from" +sql = '''SELECT TRUE + FROM ORDERS +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1160e0fdd6f18516" +result_repository = "5 rows 1160e0fdd6f18516" + +[[query]] +category = "select_literal_from" +sql = '''select TRUE from orders ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1160e0fdd6f18516" +result_repository = "5 rows 1160e0fdd6f18516" + +[[query]] +category = "select_literal_from" +sql = '''select /* c */ TRUE + from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1160e0fdd6f18516" +result_repository = "5 rows 1160e0fdd6f18516" + +[[query]] +category = "select_literal_from" +sql = '''SELECT TRUE FROM "ORDERS"; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1160e0fdd6f18516" +result_repository = "5 rows 1160e0fdd6f18516" + +[[query]] +category = "select_literal" +sql = '''SELECT FALSE AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fcbcf165908dd18a" +result_repository = "1 rows fcbcf165908dd18a" + +[[query]] +category = "select_literal" +sql = '''SELECT /* c */ FALSE AS V ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fcbcf165908dd18a" +result_repository = "1 rows fcbcf165908dd18a" + +[[query]] +category = "select_literal" +sql = '''select FALSE as v +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fcbcf165908dd18a" +result_repository = "1 rows fcbcf165908dd18a" + +[[query]] +category = "select_literal" +sql = '''select FALSE as v -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fcbcf165908dd18a" +result_repository = "1 rows fcbcf165908dd18a" + +[[query]] +category = "select_literal" +sql = '''SELECT FALSE AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fcbcf165908dd18a" +result_repository = "1 rows fcbcf165908dd18a" + +[[query]] +category = "select_literal" +sql = '''SELECT FALSE''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fcbcf165908dd18a" +result_repository = "1 rows fcbcf165908dd18a" + +[[query]] +category = "select_literal" +sql = '''SELECT /* c */ FALSE +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fcbcf165908dd18a" +result_repository = "1 rows fcbcf165908dd18a" + +[[query]] +category = "select_literal" +sql = '''SELECT FALSE ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fcbcf165908dd18a" +result_repository = "1 rows fcbcf165908dd18a" + +[[query]] +category = "select_literal" +sql = '''-- a comment +SELECT FALSE''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fcbcf165908dd18a" +result_repository = "1 rows fcbcf165908dd18a" + +[[query]] +category = "select_literal" +sql = '''sEleCT /* c */ FaLSe''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fcbcf165908dd18a" +result_repository = "1 rows fcbcf165908dd18a" + +[[query]] +category = "select_literal_from" +sql = '''SELECT FALSE AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows c5367ddd26d7fb27" +result_repository = "5 rows c5367ddd26d7fb27" + +[[query]] +category = "select_literal_from" +sql = '''select FALSE as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows c5367ddd26d7fb27" +result_repository = "5 rows c5367ddd26d7fb27" + +[[query]] +category = "select_literal_from" +sql = '''SELECT FALSE AS V + FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows c5367ddd26d7fb27" +result_repository = "5 rows c5367ddd26d7fb27" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select FALSE as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows c5367ddd26d7fb27" +result_repository = "5 rows c5367ddd26d7fb27" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select false as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows c5367ddd26d7fb27" +result_repository = "5 rows c5367ddd26d7fb27" + +[[query]] +category = "select_literal_from" +sql = '''SELECT FALSE FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows c5367ddd26d7fb27" +result_repository = "5 rows c5367ddd26d7fb27" + +[[query]] +category = "select_literal_from" +sql = '''select /* c */ FALSE from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows c5367ddd26d7fb27" +result_repository = "5 rows c5367ddd26d7fb27" + +[[query]] +category = "select_literal_from" +sql = '''select false from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows c5367ddd26d7fb27" +result_repository = "5 rows c5367ddd26d7fb27" + +[[query]] +category = "select_literal_from" +sql = '''SElecT FALse fROM "ORDERS"; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows c5367ddd26d7fb27" +result_repository = "5 rows c5367ddd26d7fb27" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +SELECT FALSE FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows c5367ddd26d7fb27" +result_repository = "5 rows c5367ddd26d7fb27" + +[[query]] +category = "select_literal" +sql = '''SELECT NULL AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fb329000228cc5a2" +result_repository = "1 rows fb329000228cc5a2" + +[[query]] +category = "select_literal" +sql = '''SELECT NULL AS V;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fb329000228cc5a2" +result_repository = "1 rows fb329000228cc5a2" + +[[query]] +category = "select_literal" +sql = '''SELECT NULL AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fb329000228cc5a2" +result_repository = "1 rows fb329000228cc5a2" + +[[query]] +category = "select_literal" +sql = '''selEcT nULl As V -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fb329000228cc5a2" +result_repository = "1 rows fb329000228cc5a2" + +[[query]] +category = "select_literal" +sql = '''SELECT NULL''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fb329000228cc5a2" +result_repository = "1 rows fb329000228cc5a2" + +[[query]] +category = "select_literal" +sql = '''select /* c */ null; +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fb329000228cc5a2" +result_repository = "1 rows fb329000228cc5a2" + +[[query]] +category = "select_literal" +sql = '''select null -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..11" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..11" + +[[query]] +category = "select_literal" +sql = '''SELECT NuLl''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fb329000228cc5a2" +result_repository = "1 rows fb329000228cc5a2" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select null''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fb329000228cc5a2" +result_repository = "1 rows fb329000228cc5a2" + +[[query]] +category = "select_literal_from" +sql = '''SELECT NULL AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0096647b0b77f841" +result_repository = "5 rows 0096647b0b77f841" + +[[query]] +category = "select_literal_from" +sql = '''select null as v from orders ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0096647b0b77f841" +result_repository = "5 rows 0096647b0b77f841" + +[[query]] +category = "select_literal_from" +sql = '''SELECT NULL AS V FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0096647b0b77f841" +result_repository = "5 rows 0096647b0b77f841" + +[[query]] +category = "select_literal_from" +sql = '''select /* c */ null as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0096647b0b77f841" +result_repository = "5 rows 0096647b0b77f841" + +[[query]] +category = "select_literal_from" +sql = '''select null as v from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0096647b0b77f841" +result_repository = "5 rows 0096647b0b77f841" + +[[query]] +category = "select_literal_from" +sql = '''SELECT NULL FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0096647b0b77f841" +result_repository = "5 rows 0096647b0b77f841" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select null + from "ORDERS" +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0096647b0b77f841" +result_repository = "5 rows 0096647b0b77f841" + +[[query]] +category = "select_literal_from" +sql = '''select null from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0096647b0b77f841" +result_repository = "5 rows 0096647b0b77f841" + +[[query]] +category = "select_literal_from" +sql = '''select null + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0096647b0b77f841" +result_repository = "5 rows 0096647b0b77f841" + +[[query]] +category = "select_literal_from" +sql = '''select null + from orders +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0096647b0b77f841" +result_repository = "5 rows 0096647b0b77f841" + +[[query]] +category = "select_literal" +sql = '''SELECT 'x' AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 2d711642b726b044" +result_repository = "1 rows 2d711642b726b044" + +[[query]] +category = "select_literal" +sql = '''select 'x' as v -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 2d711642b726b044" +result_repository = "1 rows 2d711642b726b044" + +[[query]] +category = "select_literal" +sql = '''-- a comment +SeLECt 'x' AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 2d711642b726b044" +result_repository = "1 rows 2d711642b726b044" + +[[query]] +category = "select_literal" +sql = '''select 'x' as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 2d711642b726b044" +result_repository = "1 rows 2d711642b726b044" + +[[query]] +category = "select_literal" +sql = '''SELECT 'x' AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 2d711642b726b044" +result_repository = "1 rows 2d711642b726b044" + +[[query]] +category = "select_literal" +sql = '''SELECT 'x'''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 2d711642b726b044" +result_repository = "1 rows 2d711642b726b044" + +[[query]] +category = "select_literal" +sql = '''-- a comment +SELECT 'x'''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 2d711642b726b044" +result_repository = "1 rows 2d711642b726b044" + +[[query]] +category = "select_literal" +sql = '''select /* c */ 'x' ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 2d711642b726b044" +result_repository = "1 rows 2d711642b726b044" + +[[query]] +category = "select_literal" +sql = '''sElECT 'x' -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..10" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..10" + +[[query]] +category = "select_literal" +sql = '''select /* c */ 'x'''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 2d711642b726b044" +result_repository = "1 rows 2d711642b726b044" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 'x' AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0130ec2d7102f854" +result_repository = "5 rows 0130ec2d7102f854" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +sELECt 'x' as v fRoM "ORDERS" ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0130ec2d7102f854" +result_repository = "5 rows 0130ec2d7102f854" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 'x' AS V FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0130ec2d7102f854" +result_repository = "5 rows 0130ec2d7102f854" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 'x' AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0130ec2d7102f854" +result_repository = "5 rows 0130ec2d7102f854" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 'x' AS V FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0130ec2d7102f854" +result_repository = "5 rows 0130ec2d7102f854" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 'x' FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0130ec2d7102f854" +result_repository = "5 rows 0130ec2d7102f854" + +[[query]] +category = "select_literal_from" +sql = '''SELECT /* c */ 'x' + FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0130ec2d7102f854" +result_repository = "5 rows 0130ec2d7102f854" + +[[query]] +category = "select_literal_from" +sql = '''select 'x' from "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0130ec2d7102f854" +result_repository = "5 rows 0130ec2d7102f854" + +[[query]] +category = "select_literal_from" +sql = '''selECT 'x' from ORdERS;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0130ec2d7102f854" +result_repository = "5 rows 0130ec2d7102f854" + +[[query]] +category = "select_literal_from" +sql = '''select 'x' from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0130ec2d7102f854" +result_repository = "5 rows 0130ec2d7102f854" + +[[query]] +category = "select_literal" +sql = '''SELECT 'it''s' AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 24ceef1cb6b0cbc0" +result_repository = "1 rows 24ceef1cb6b0cbc0" + +[[query]] +category = "select_literal" +sql = '''select /* c */ 'it''s' as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 24ceef1cb6b0cbc0" +result_repository = "1 rows 24ceef1cb6b0cbc0" + +[[query]] +category = "select_literal" +sql = '''select /* c */ 'it''s' as v ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 24ceef1cb6b0cbc0" +result_repository = "1 rows 24ceef1cb6b0cbc0" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select 'it''s' as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 24ceef1cb6b0cbc0" +result_repository = "1 rows 24ceef1cb6b0cbc0" + +[[query]] +category = "select_literal" +sql = '''sELeCt 'it''s' as v -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 24ceef1cb6b0cbc0" +result_repository = "1 rows 24ceef1cb6b0cbc0" + +[[query]] +category = "select_literal" +sql = '''SELECT 'it''s'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..14" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..14" + +[[query]] +category = "select_literal" +sql = '''select 'it''s'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..14" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..14" + +[[query]] +category = "select_literal" +sql = '''select /* c */ 'it''s'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..22" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..22" + +[[query]] +category = "select_literal" +sql = '''SeLECt 'it''s'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..14" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..14" + +[[query]] +category = "select_literal" +sql = '''select /* c */ 'it''s'; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..22" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..22" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 'it''s' AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b0a587d284db30eb" +result_repository = "5 rows b0a587d284db30eb" + +[[query]] +category = "select_literal_from" +sql = '''select 'it''s' as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b0a587d284db30eb" +result_repository = "5 rows b0a587d284db30eb" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select 'it''s' as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b0a587d284db30eb" +result_repository = "5 rows b0a587d284db30eb" + +[[query]] +category = "select_literal_from" +sql = '''select 'it''s' as v from orders +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b0a587d284db30eb" +result_repository = "5 rows b0a587d284db30eb" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 'it''s' AS V + FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b0a587d284db30eb" +result_repository = "5 rows b0a587d284db30eb" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 'it''s' FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..26" + +[[query]] +category = "select_literal_from" +sql = '''select 'it''s' from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..26" + +[[query]] +category = "select_literal_from" +sql = '''select 'it''s' from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..26" + +[[query]] +category = "select_literal_from" +sql = '''select 'it''s' from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..28" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..28" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +SELECT 'it''s' FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 13..39" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 13..39" + +[[query]] +category = "select_literal" +sql = '''SELECT '' AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows e3b0c44298fc1c14" +result_repository = "1 rows e3b0c44298fc1c14" + +[[query]] +category = "select_literal" +sql = '''select '' as v ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows e3b0c44298fc1c14" +result_repository = "1 rows e3b0c44298fc1c14" + +[[query]] +category = "select_literal" +sql = '''-- a comment +SELECT '' AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows e3b0c44298fc1c14" +result_repository = "1 rows e3b0c44298fc1c14" + +[[query]] +category = "select_literal" +sql = '''select '' as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows e3b0c44298fc1c14" +result_repository = "1 rows e3b0c44298fc1c14" + +[[query]] +category = "select_literal" +sql = '''select '' as v;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows e3b0c44298fc1c14" +result_repository = "1 rows e3b0c44298fc1c14" + +[[query]] +category = "select_literal" +sql = '''SELECT ''''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..9" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..9" + +[[query]] +category = "select_literal" +sql = '''select ''''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..9" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..9" + +[[query]] +category = "select_literal" +sql = '''SELECT '' -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..9" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..9" + +[[query]] +category = "select_literal" +sql = '''SeleCt ''''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..9" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..9" + +[[query]] +category = "select_literal_from" +sql = '''SELECT '' AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 545c38b0922de197" +result_repository = "5 rows 545c38b0922de197" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select '' as v from orders ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 545c38b0922de197" +result_repository = "5 rows 545c38b0922de197" + +[[query]] +category = "select_literal_from" +sql = '''SELECT /* c */ '' AS V + FROM ORDERS;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 545c38b0922de197" +result_repository = "5 rows 545c38b0922de197" + +[[query]] +category = "select_literal_from" +sql = '''select '' as v from "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 545c38b0922de197" +result_repository = "5 rows 545c38b0922de197" + +[[query]] +category = "select_literal_from" +sql = '''SElect '' aS V FROm OrDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 545c38b0922de197" +result_repository = "5 rows 545c38b0922de197" + +[[query]] +category = "select_literal_from" +sql = '''SELECT '' FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..21" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..21" + +[[query]] +category = "select_literal_from" +sql = '''SelEct '' FRoM "ORDERS" -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..25" + +[[query]] +category = "select_literal_from" +sql = '''select '' + from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..23" + +[[query]] +category = "select_literal_from" +sql = '''sELeCt '' FrOm ordeRS +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..21" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..21" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select '' + from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 13..36" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 13..36" + +[[query]] +category = "select_literal" +sql = '''SELECT 'café' AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 850f7dc43910ff89" +result_repository = "1 rows 850f7dc43910ff89" + +[[query]] +category = "select_literal" +sql = '''-- a comment +selEct 'café' As v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 850f7dc43910ff89" +result_repository = "1 rows 850f7dc43910ff89" + +[[query]] +category = "select_literal" +sql = '''SElECT 'café' AS V +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 850f7dc43910ff89" +result_repository = "1 rows 850f7dc43910ff89" + +[[query]] +category = "select_literal" +sql = '''select 'café' as v -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 850f7dc43910ff89" +result_repository = "1 rows 850f7dc43910ff89" + +[[query]] +category = "select_literal" +sql = '''seLEcT 'café' AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 850f7dc43910ff89" +result_repository = "1 rows 850f7dc43910ff89" + +[[query]] +category = "select_literal" +sql = '''SELECT 'café'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..13" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..13" + +[[query]] +category = "select_literal" +sql = '''select 'café'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..13" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..13" + +[[query]] +category = "select_literal" +sql = '''select 'café' +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..13" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..13" + +[[query]] +category = "select_literal" +sql = '''SELeCT /* c */ 'café'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..21" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..21" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 'café' AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows f05255107d9d5a25" +result_repository = "5 rows f05255107d9d5a25" + +[[query]] +category = "select_literal_from" +sql = '''sELEcT 'café' aS V FROm ORDERS ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows f05255107d9d5a25" +result_repository = "5 rows f05255107d9d5a25" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 'café' AS V FROM ORDERS +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows f05255107d9d5a25" +result_repository = "5 rows f05255107d9d5a25" + +[[query]] +category = "select_literal_from" +sql = '''SelECt 'café' AS v + fROm OrDers -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows f05255107d9d5a25" +result_repository = "5 rows f05255107d9d5a25" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +selecT 'café' aS v FROM ORdeRs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows f05255107d9d5a25" +result_repository = "5 rows f05255107d9d5a25" + +[[query]] +category = "select_literal_from" +sql = '''SELECT 'café' FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..25" + +[[query]] +category = "select_literal_from" +sql = '''select 'café' from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..25" + +[[query]] +category = "select_literal_from" +sql = '''seLECt 'café' frOm OrdeRS -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..25" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +select 'café' from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 13..40" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 13..40" + +[[query]] +category = "select_literal_from" +sql = '''select 'café' from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..25" + +[[query]] +category = "select_literal" +sql = '''SELECT DATE '2024-01-15' AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows bb10628e8f758901" +result_repository = "1 rows bb10628e8f758901" + +[[query]] +category = "select_literal" +sql = '''select DATE '2024-01-15' as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows bb10628e8f758901" +result_repository = "1 rows bb10628e8f758901" + +[[query]] +category = "select_literal" +sql = '''select date '2024-01-15' as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows bb10628e8f758901" +result_repository = "1 rows bb10628e8f758901" + +[[query]] +category = "select_literal" +sql = '''select /* c */ date '2024-01-15' as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows bb10628e8f758901" +result_repository = "1 rows bb10628e8f758901" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select DATE '2024-01-15' as v;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows bb10628e8f758901" +result_repository = "1 rows bb10628e8f758901" + +[[query]] +category = "select_literal" +sql = '''SELECT DATE '2024-01-15'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..24" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..24" + +[[query]] +category = "select_literal" +sql = '''select date '2024-01-15'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..24" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..24" + +[[query]] +category = "select_literal" +sql = '''SELEcT /* c */ DAte '2024-01-15'; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..32" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..32" + +[[query]] +category = "select_literal" +sql = '''select /* c */ DATE '2024-01-15'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..32" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..32" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select date '2024-01-15'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 13..37" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 13..37" + +[[query]] +category = "select_literal_from" +sql = '''SELECT DATE '2024-01-15' AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 4aa2b48e3747e05c" +result_repository = "5 rows 4aa2b48e3747e05c" + +[[query]] +category = "select_literal_from" +sql = '''SELECT DATE '2024-01-15' AS V FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 4aa2b48e3747e05c" +result_repository = "5 rows 4aa2b48e3747e05c" + +[[query]] +category = "select_literal_from" +sql = '''-- a comment +SELECT DATE '2024-01-15' AS V FROM "ORDERS" ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 4aa2b48e3747e05c" +result_repository = "5 rows 4aa2b48e3747e05c" + +[[query]] +category = "select_literal_from" +sql = '''SElEct DatE '2024-01-15' AS v FRom ORdERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 4aa2b48e3747e05c" +result_repository = "5 rows 4aa2b48e3747e05c" + +[[query]] +category = "select_literal_from" +sql = '''SELECT /* c */ DATE '2024-01-15' AS V FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 4aa2b48e3747e05c" +result_repository = "5 rows 4aa2b48e3747e05c" + +[[query]] +category = "select_literal_from" +sql = '''SELECT DATE '2024-01-15' FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..36" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..36" + +[[query]] +category = "select_literal_from" +sql = '''select DATE '2024-01-15' + from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..38" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..38" + +[[query]] +category = "select_literal_from" +sql = '''SELECT /* c */ DATE '2024-01-15' + FROM ORDERS;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..46" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..46" + +[[query]] +category = "select_literal_from" +sql = '''select /* c */ date '2024-01-15' from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..46" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..46" + +[[query]] +category = "select_literal_from" +sql = '''select date '2024-01-15' from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..36" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..36" + +[[query]] +category = "select_literal" +sql = '''SELECT TIMESTAMP '2024-01-15 10:00:00' AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 25b66afc9d162eae" +result_repository = "1 rows 25b66afc9d162eae" + +[[query]] +category = "select_literal" +sql = '''select TIMESTAMP '2024-01-15 10:00:00' as v -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 25b66afc9d162eae" +result_repository = "1 rows 25b66afc9d162eae" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select TIMESTAMP '2024-01-15 10:00:00' as v ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 25b66afc9d162eae" +result_repository = "1 rows 25b66afc9d162eae" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select TIMESTAMP '2024-01-15 10:00:00' as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 25b66afc9d162eae" +result_repository = "1 rows 25b66afc9d162eae" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select TIMESTAMP '2024-01-15 10:00:00' as v; +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 25b66afc9d162eae" +result_repository = "1 rows 25b66afc9d162eae" + +[[query]] +category = "select_literal" +sql = '''SELECT TIMESTAMP '2024-01-15 10:00:00'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..38" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..38" + +[[query]] +category = "select_literal" +sql = '''-- a comment +select TIMESTAMP '2024-01-15 10:00:00'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 13..51" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 13..51" + +[[query]] +category = "select_literal" +sql = '''select TIMESTAMP '2024-01-15 10:00:00' -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..38" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..38" + +[[query]] +category = "select_literal" +sql = '''select TIMESTAMP '2024-01-15 10:00:00'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..38" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..38" + +[[query]] +category = "select_literal" +sql = '''select timestamp '2024-01-15 10:00:00' -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..38" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..38" + +[[query]] +category = "select_literal_from" +sql = '''SELECT TIMESTAMP '2024-01-15 10:00:00' AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0c037b55a4b1f8ff" +result_repository = "5 rows 0c037b55a4b1f8ff" + +[[query]] +category = "select_literal_from" +sql = '''SELECT /* c */ TIMESTAMP '2024-01-15 10:00:00' AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0c037b55a4b1f8ff" +result_repository = "5 rows 0c037b55a4b1f8ff" + +[[query]] +category = "select_literal_from" +sql = '''select /* c */ TIMESTAMP '2024-01-15 10:00:00' as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0c037b55a4b1f8ff" +result_repository = "5 rows 0c037b55a4b1f8ff" + +[[query]] +category = "select_literal_from" +sql = '''select /* c */ timestamp '2024-01-15 10:00:00' as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0c037b55a4b1f8ff" +result_repository = "5 rows 0c037b55a4b1f8ff" + +[[query]] +category = "select_literal_from" +sql = '''SELECT /* c */ TIMESTAMP '2024-01-15 10:00:00' AS V FROM "ORDERS";''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 0c037b55a4b1f8ff" +result_repository = "5 rows 0c037b55a4b1f8ff" + +[[query]] +category = "select_literal_from" +sql = '''SELECT TIMESTAMP '2024-01-15 10:00:00' FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..50" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..50" + +[[query]] +category = "select_literal_from" +sql = '''select timestamp '2024-01-15 10:00:00' + from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..52" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..52" + +[[query]] +category = "select_literal_from" +sql = '''SELECT TIMESTAMP '2024-01-15 10:00:00' FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..50" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..50" + +[[query]] +category = "select_literal_from" +sql = '''SELeCT tImEsTaMp '2024-01-15 10:00:00' FroM ordErS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..50" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..50" + +[[query]] +category = "select_literal_from" +sql = '''select timestamp '2024-01-15 10:00:00' from "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..54" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..54" + +[[query]] +category = "select_column" +sql = '''SELECT order_id AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b5584a1464119498" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_column" +sql = '''select /* c */ order_id as v from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b5584a1464119498" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_column" +sql = '''select order_id as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b5584a1464119498" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_column" +sql = '''select order_id as v + from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b5584a1464119498" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_column" +sql = '''select /* c */ order_id as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b5584a1464119498" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_column" +sql = '''SELECT order_id FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b5584a1464119498" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_column" +sql = '''select /* c */ order_id from "ORDERS" ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b5584a1464119498" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_column" +sql = '''-- a comment +select order_id from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b5584a1464119498" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_column" +sql = '''-- a comment +SEleCT ORDEr_Id + from orDers''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b5584a1464119498" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_column" +sql = '''SELECT /* c */ ORDER_ID + FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b5584a1464119498" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_column" +sql = '''SELECT total AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_column" +sql = '''select total as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_column" +sql = '''select total as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_column" +sql = '''-- a comment +SelEcT ToTaL aS V frOm "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_column" +sql = '''select total as v from orders ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_column" +sql = '''SELECT total FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_column" +sql = '''-- a comment +select total from orders +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_column" +sql = '''SELECT TOTAL + FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_column" +sql = '''select total from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_column" +sql = '''select toTal FROm "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_column" +sql = '''SELECT status AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_column" +sql = '''select status as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_column" +sql = '''SELecT Status AS v frOM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_column" +sql = '''-- a comment +select status as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_column" +sql = '''select /* c */ status as v from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_column" +sql = '''SELECT status FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_column" +sql = '''SELECT STATUS + FROM ORDERS +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_column" +sql = '''SelECT STaTus FrOm "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_column" +sql = '''SeleCT StATus + FROM OrdErs -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_column" +sql = '''select status from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_column" +sql = '''SELECT ordered_at AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows efe7d7b9e43a07a5" +result_repository = "5 rows efe7d7b9e43a07a5" + +[[query]] +category = "select_column" +sql = '''-- a comment +SELECT ORDERED_AT AS V FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows efe7d7b9e43a07a5" +result_repository = "5 rows efe7d7b9e43a07a5" + +[[query]] +category = "select_column" +sql = '''SElecT orDeReD_AT AS v From OrDErs -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows efe7d7b9e43a07a5" +result_repository = "5 rows efe7d7b9e43a07a5" + +[[query]] +category = "select_column" +sql = '''select ordered_at as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows efe7d7b9e43a07a5" +result_repository = "5 rows efe7d7b9e43a07a5" + +[[query]] +category = "select_column" +sql = '''select ordered_at as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows efe7d7b9e43a07a5" +result_repository = "5 rows efe7d7b9e43a07a5" + +[[query]] +category = "select_column" +sql = '''SELECT ordered_at FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows efe7d7b9e43a07a5" +result_repository = "5 rows efe7d7b9e43a07a5" + +[[query]] +category = "select_column" +sql = '''select ordered_at from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows efe7d7b9e43a07a5" +result_repository = "5 rows efe7d7b9e43a07a5" + +[[query]] +category = "select_column" +sql = '''-- a comment +SELECT ORDERED_AT FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows efe7d7b9e43a07a5" +result_repository = "5 rows efe7d7b9e43a07a5" + +[[query]] +category = "select_column" +sql = '''SElECt orDErEd_AT frOm "ORDERS" +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows efe7d7b9e43a07a5" +result_repository = "5 rows efe7d7b9e43a07a5" + +[[query]] +category = "select_column" +sql = '''select ordered_at from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows efe7d7b9e43a07a5" +result_repository = "5 rows efe7d7b9e43a07a5" + +[[query]] +category = "select_column" +sql = '''SELECT customer_id AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 06621ca82e2c4a70" +result_repository = "5 rows 06621ca82e2c4a70" + +[[query]] +category = "select_column" +sql = '''select customer_id as v from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 06621ca82e2c4a70" +result_repository = "5 rows 06621ca82e2c4a70" + +[[query]] +category = "select_column" +sql = '''select customer_id as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 06621ca82e2c4a70" +result_repository = "5 rows 06621ca82e2c4a70" + +[[query]] +category = "select_column" +sql = '''sELEcT cUsTOmEr_ID AS V FroM orDeRs ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 06621ca82e2c4a70" +result_repository = "5 rows 06621ca82e2c4a70" + +[[query]] +category = "select_column" +sql = '''select customer_id as v from orders +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 06621ca82e2c4a70" +result_repository = "5 rows 06621ca82e2c4a70" + +[[query]] +category = "select_column" +sql = '''SELECT customer_id FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 06621ca82e2c4a70" +result_repository = "5 rows 06621ca82e2c4a70" + +[[query]] +category = "select_column" +sql = '''select customer_id from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 06621ca82e2c4a70" +result_repository = "5 rows 06621ca82e2c4a70" + +[[query]] +category = "select_column" +sql = '''SelecT CuStOmEr_id frOM oRDeRs; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 06621ca82e2c4a70" +result_repository = "5 rows 06621ca82e2c4a70" + +[[query]] +category = "select_column" +sql = '''select /* c */ customer_id + from "ORDERS" ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 06621ca82e2c4a70" +result_repository = "5 rows 06621ca82e2c4a70" + +[[query]] +category = "select_column" +sql = '''select customer_id from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 06621ca82e2c4a70" +result_repository = "5 rows 06621ca82e2c4a70" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 + 1 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows d4735e3a265e16ee" +result_repository = "1 rows d4735e3a265e16ee" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select 1 + 1 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows d4735e3a265e16ee" +result_repository = "1 rows d4735e3a265e16ee" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 + 1 as v;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows d4735e3a265e16ee" +result_repository = "1 rows d4735e3a265e16ee" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 + 1 as v -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows d4735e3a265e16ee" +result_repository = "1 rows d4735e3a265e16ee" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ 1 + 1 as v ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows d4735e3a265e16ee" +result_repository = "1 rows d4735e3a265e16ee" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 + 1''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''SElEct 1 + 1;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 + 1 -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 + 1''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 + 1 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 84035dd06a4557cb" +result_repository = "5 rows 84035dd06a4557cb" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 + 1 as v from "ORDERS"; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 84035dd06a4557cb" +result_repository = "5 rows 84035dd06a4557cb" + +[[query]] +category = "select_arithmetic_from" +sql = '''seLeCT /* c */ 1 + 1 As v frOm oRDeRs;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 84035dd06a4557cb" +result_repository = "5 rows 84035dd06a4557cb" + +[[query]] +category = "select_arithmetic_from" +sql = '''SelecT 1 + 1 aS v from orDErS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 84035dd06a4557cb" +result_repository = "5 rows 84035dd06a4557cb" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 + 1 as v + from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 84035dd06a4557cb" +result_repository = "5 rows 84035dd06a4557cb" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 + 1 FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 + 1 FROM "ORDERS" -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''select /* c */ 1 + 1 + from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic_from" +sql = '''-- a comment +SELECT 1 + 1 FROM "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..25" + +[[query]] +category = "select_arithmetic_from" +sql = '''-- a comment +sElECt 1 + 1 FrOm OrDeRs; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..25" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 + 2 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 4e07408562bedb8b" +result_repository = "1 rows 4e07408562bedb8b" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT 1 + 2 AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 4e07408562bedb8b" +result_repository = "1 rows 4e07408562bedb8b" + +[[query]] +category = "select_arithmetic" +sql = '''SeLECT /* c */ 1 + 2 aS V ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 4e07408562bedb8b" +result_repository = "1 rows 4e07408562bedb8b" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT 1 + 2 aS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 4e07408562bedb8b" +result_repository = "1 rows 4e07408562bedb8b" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 + 2 as v +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 4e07408562bedb8b" +result_repository = "1 rows 4e07408562bedb8b" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 + 2''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 + 2 -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 + 2 +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 + 2 -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 + 2''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 + 2 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 20e29c821caf4803" +result_repository = "5 rows 20e29c821caf4803" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 + 2 as v from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 20e29c821caf4803" +result_repository = "5 rows 20e29c821caf4803" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 + 2 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 20e29c821caf4803" +result_repository = "5 rows 20e29c821caf4803" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 + 2 AS V FROM "ORDERS"; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 20e29c821caf4803" +result_repository = "5 rows 20e29c821caf4803" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 + 2 as v + from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 20e29c821caf4803" +result_repository = "5 rows 20e29c821caf4803" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 + 2 FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''select /* c */ 1 + 2 from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 + 2 + from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''select /* c */ 1 + 2 from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic_from" +sql = '''SelecT /* c */ 1 + 2 FROm ORders; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 + total AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ef19ccff04d57b29" +result_repository = "5 rows ef19ccff04d57b29" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ 1 + total as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ef19ccff04d57b29" +result_repository = "5 rows ef19ccff04d57b29" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 + total as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ef19ccff04d57b29" +result_repository = "5 rows ef19ccff04d57b29" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT /* c */ 1 + TOTAL AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ef19ccff04d57b29" +result_repository = "5 rows ef19ccff04d57b29" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 + total as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ef19ccff04d57b29" +result_repository = "5 rows ef19ccff04d57b29" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 + total FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..16" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..16" + +[[query]] +category = "select_arithmetic" +sql = '''sEleCT /* c */ 1 + tOtAl frOM orDErS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..24" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..24" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ 1 + total from "ORDERS"; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..24" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..24" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 + total from orders ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..16" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..16" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 + total from "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..16" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..16" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 - 1 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5feceb66ffc86f38" +result_repository = "1 rows 5feceb66ffc86f38" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 - 1 AS V; +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5feceb66ffc86f38" +result_repository = "1 rows 5feceb66ffc86f38" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT /* c */ 1 - 1 AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5feceb66ffc86f38" +result_repository = "1 rows 5feceb66ffc86f38" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 - 1 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5feceb66ffc86f38" +result_repository = "1 rows 5feceb66ffc86f38" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 - 1''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ 1 - 1''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT 1 - 1 ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..25" + +[[query]] +category = "select_arithmetic" +sql = '''SELeCt 1 - 1''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 - 1''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 - 1 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 605a24fda3506c2d" +result_repository = "5 rows 605a24fda3506c2d" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 - 1 as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 605a24fda3506c2d" +result_repository = "5 rows 605a24fda3506c2d" + +[[query]] +category = "select_arithmetic_from" +sql = '''-- a comment +select 1 - 1 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 605a24fda3506c2d" +result_repository = "5 rows 605a24fda3506c2d" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 - 1 as v from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 605a24fda3506c2d" +result_repository = "5 rows 605a24fda3506c2d" + +[[query]] +category = "select_arithmetic_from" +sql = '''-- a comment +select 1 - 1 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 605a24fda3506c2d" +result_repository = "5 rows 605a24fda3506c2d" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 - 1 FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''-- a comment +SELECT 1 - 1 FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..25" + +[[query]] +category = "select_arithmetic_from" +sql = '''SelEcT 1 - 1 frOM oRdeRs; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 - 1 + FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 - 1 from "ORDERS"; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 - 2 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 1bad6b8cf97131fc" +result_repository = "1 rows 1bad6b8cf97131fc" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ 1 - 2 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 1bad6b8cf97131fc" +result_repository = "1 rows 1bad6b8cf97131fc" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT 1 - 2 AS V +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 1bad6b8cf97131fc" +result_repository = "1 rows 1bad6b8cf97131fc" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 - 2 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 1bad6b8cf97131fc" +result_repository = "1 rows 1bad6b8cf97131fc" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select 1 - 2 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 1bad6b8cf97131fc" +result_repository = "1 rows 1bad6b8cf97131fc" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 - 2''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''SelEct 1 - 2''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SEleCt 1 - 2''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..25" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT /* c */ 1 - 2''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 - 2 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 6ea42b3f8113be89" +result_repository = "5 rows 6ea42b3f8113be89" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 - 2 as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 6ea42b3f8113be89" +result_repository = "5 rows 6ea42b3f8113be89" + +[[query]] +category = "select_arithmetic_from" +sql = '''seLeCt /* c */ 1 - 2 As V frOm "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 6ea42b3f8113be89" +result_repository = "5 rows 6ea42b3f8113be89" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 - 2 as v from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 6ea42b3f8113be89" +result_repository = "5 rows 6ea42b3f8113be89" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 - 2 AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 6ea42b3f8113be89" +result_repository = "5 rows 6ea42b3f8113be89" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 - 2 FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''-- a comment +select 1 - 2 + from "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..25" + +[[query]] +category = "select_arithmetic_from" +sql = '''-- a comment +select 1 - 2 from "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..25" + +[[query]] +category = "select_arithmetic_from" +sql = '''-- a comment +select 1 - 2 from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..25" + +[[query]] +category = "select_arithmetic_from" +sql = '''select /* c */ 1 - 2 from orders +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 - total AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 243a5b1459d0dcbb" +result_repository = "5 rows 243a5b1459d0dcbb" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECt 1 - TotAl AS V from oRderS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 243a5b1459d0dcbb" +result_repository = "5 rows 243a5b1459d0dcbb" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 - TOTAL AS V FROM ORDERS +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 243a5b1459d0dcbb" +result_repository = "5 rows 243a5b1459d0dcbb" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 - TOTAL AS V FROM ORDERS;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 243a5b1459d0dcbb" +result_repository = "5 rows 243a5b1459d0dcbb" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 - total as v + from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 243a5b1459d0dcbb" +result_repository = "5 rows 243a5b1459d0dcbb" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 - total FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..16" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..16" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 - total from orders; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..16" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..16" + +[[query]] +category = "select_arithmetic" +sql = '''SElECT 1 - ToTaL + fRoM oRdERs''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..16" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..16" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 - TOTAL + FROM "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..16" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..16" + +[[query]] +category = "select_arithmetic" +sql = '''seLEcT 1 - TOtAl FROm orDErs +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..16" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..16" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 * 1 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 * 1 AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select 1 * 1 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ 1 * 1 as v ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 * 1 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 * 1''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''sELECt 1 * 1''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 * 1 -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 * 1''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 * 1 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 * 1 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECt 1 * 1 aS v + fROm OrdERs +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 * 1 as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_arithmetic_from" +sql = '''select /* c */ 1 * 1 as v + from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 * 1 FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 * 1 FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''SelEct /* c */ 1 * 1 fRom ORdERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT /* c */ 1 * 1 FROM "ORDERS" +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 * 1 + FROM ORDERS +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 * 2 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows d4735e3a265e16ee" +result_repository = "1 rows d4735e3a265e16ee" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ 1 * 2 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows d4735e3a265e16ee" +result_repository = "1 rows d4735e3a265e16ee" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT 1 * 2 AS V ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows d4735e3a265e16ee" +result_repository = "1 rows d4735e3a265e16ee" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 * 2 as v; +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows d4735e3a265e16ee" +result_repository = "1 rows d4735e3a265e16ee" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 * 2 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows d4735e3a265e16ee" +result_repository = "1 rows d4735e3a265e16ee" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 * 2''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 * 2 -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ 1 * 2''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT 1 * 2; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..25" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ 1 * 2; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 * 2 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 84035dd06a4557cb" +result_repository = "5 rows 84035dd06a4557cb" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 * 2 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 84035dd06a4557cb" +result_repository = "5 rows 84035dd06a4557cb" + +[[query]] +category = "select_arithmetic_from" +sql = '''select /* c */ 1 * 2 as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 84035dd06a4557cb" +result_repository = "5 rows 84035dd06a4557cb" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 * 2 AS V fROM "ORDERS"; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 84035dd06a4557cb" +result_repository = "5 rows 84035dd06a4557cb" + +[[query]] +category = "select_arithmetic_from" +sql = '''sEleCT 1 * 2 AS V + FROm ORdErs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 84035dd06a4557cb" +result_repository = "5 rows 84035dd06a4557cb" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 * 2 FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 * 2 FROM "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''select /* c */ 1 * 2 from "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 * 2 FROM ORDERS +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''-- a comment +SELECT 1 * 2 FROM ORDERS;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..25" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 * total AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +sELeCt 1 * TotAl AS v frOM ORdErs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 * total as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_arithmetic" +sql = '''sELect 1 * TOTaL As v FrOM "ORDERS" ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ 1 * total as v + from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 * total FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..16" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..16" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +sELeCT 1 * totaL from OrdErS; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..29" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..29" + +[[query]] +category = "select_arithmetic" +sql = '''sELEcT 1 * TOtAL FroM ordErs''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..16" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..16" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 * TOTAL FROM ORDERS -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..16" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..16" + +[[query]] +category = "select_arithmetic" +sql = '''SELeCt /* c */ 1 * TOtAL FRoM oRdErS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..24" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..24" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 / 1 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows b42a73dadec1c669" +result_repository = "1 rows b42a73dadec1c669" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT 1 / 1 AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows b42a73dadec1c669" +result_repository = "1 rows b42a73dadec1c669" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 / 1 AS V -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows b42a73dadec1c669" +result_repository = "1 rows b42a73dadec1c669" + +[[query]] +category = "select_arithmetic" +sql = '''sELecT 1 / 1 aS V -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows b42a73dadec1c669" +result_repository = "1 rows b42a73dadec1c669" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 / 1''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''sELeCt /* c */ 1 / 1''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic" +sql = '''SELEcT 1 / 1''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ 1 / 1''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 / 1;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 / 1 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 9196b6069a1e958a" +result_repository = "5 rows 9196b6069a1e958a" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 / 1 AS V FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 9196b6069a1e958a" +result_repository = "5 rows 9196b6069a1e958a" + +[[query]] +category = "select_arithmetic_from" +sql = '''-- a comment +SELECT 1 / 1 AS V FROM ORDERS; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 9196b6069a1e958a" +result_repository = "5 rows 9196b6069a1e958a" + +[[query]] +category = "select_arithmetic_from" +sql = '''-- a comment +SELECT 1 / 1 AS V + FROM ORDERS; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 9196b6069a1e958a" +result_repository = "5 rows 9196b6069a1e958a" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECt 1 / 1 As v + from orDeRS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 9196b6069a1e958a" +result_repository = "5 rows 9196b6069a1e958a" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 / 1 FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''SeleCt 1 / 1 frOM OrderS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT /* c */ 1 / 1 FROM ORDERS;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 / 1 from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''select /* c */ 1 / 1 + from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..20" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 / 2 AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5cbf8ccc50391bac" +result_repository = "1 rows 5cbf8ccc50391bac" + +[[query]] +category = "select_arithmetic" +sql = '''sELEcT 1 / 2 aS v -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5cbf8ccc50391bac" +result_repository = "1 rows 5cbf8ccc50391bac" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 / 2 as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5cbf8ccc50391bac" +result_repository = "1 rows 5cbf8ccc50391bac" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT 1 / 2 AS V; +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5cbf8ccc50391bac" +result_repository = "1 rows 5cbf8ccc50391bac" + +[[query]] +category = "select_arithmetic" +sql = '''seLECt /* c */ 1 / 2 aS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 5cbf8ccc50391bac" +result_repository = "1 rows 5cbf8ccc50391bac" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 / 2''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT 1 / 2''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..25" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 / 2 ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT 1 / 2; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..25" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 / 2 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e29a3f653c8a8734" +result_repository = "5 rows e29a3f653c8a8734" + +[[query]] +category = "select_arithmetic_from" +sql = '''sEleCt 1 / 2 as V + from ORdErs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e29a3f653c8a8734" +result_repository = "5 rows e29a3f653c8a8734" + +[[query]] +category = "select_arithmetic_from" +sql = '''sElEcT /* c */ 1 / 2 As V FRom "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e29a3f653c8a8734" +result_repository = "5 rows e29a3f653c8a8734" + +[[query]] +category = "select_arithmetic_from" +sql = '''SelECt /* c */ 1 / 2 as V + froM oRdeRs ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e29a3f653c8a8734" +result_repository = "5 rows e29a3f653c8a8734" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 / 2 AS V + FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e29a3f653c8a8734" +result_repository = "5 rows e29a3f653c8a8734" + +[[query]] +category = "select_arithmetic_from" +sql = '''SELECT 1 / 2 FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''selECT 1 / 2 + from ORDeRs''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''sELECt 1 / 2 + FRom orDErs''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''select 1 / 2 + from "ORDERS";''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "select_arithmetic_from" +sql = '''-- a comment +select 1 / 2 from orders +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..25" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 / total AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 76a84cf8ea375dc5" +result_repository = "5 rows 76a84cf8ea375dc5" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 / total as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 76a84cf8ea375dc5" +result_repository = "5 rows 76a84cf8ea375dc5" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 / total as v + from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 76a84cf8ea375dc5" +result_repository = "5 rows 76a84cf8ea375dc5" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 / TotAL aS v + FRoM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 76a84cf8ea375dc5" +result_repository = "5 rows 76a84cf8ea375dc5" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 / total as v from "ORDERS" +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 76a84cf8ea375dc5" +result_repository = "5 rows 76a84cf8ea375dc5" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 / total FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..16" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..16" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT 1 / TOTAL FROM ORDERS; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..16" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..16" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select 1 / total from "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..29" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..29" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select 1 / total + from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..29" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..29" + +[[query]] +category = "select_arithmetic" +sql = '''select 1 / total from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..16" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..16" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total + 1 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ef19ccff04d57b29" +result_repository = "5 rows ef19ccff04d57b29" + +[[query]] +category = "select_arithmetic" +sql = '''select total + 1 as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ef19ccff04d57b29" +result_repository = "5 rows ef19ccff04d57b29" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT TOTAL + 1 AS V + FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ef19ccff04d57b29" +result_repository = "5 rows ef19ccff04d57b29" + +[[query]] +category = "select_arithmetic" +sql = '''select total + 1 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ef19ccff04d57b29" +result_repository = "5 rows ef19ccff04d57b29" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +selEcT TOTAL + 1 aS V frOm "ORDERS";''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ef19ccff04d57b29" +result_repository = "5 rows ef19ccff04d57b29" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total + 1 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ef19ccff04d57b29" +result_repository = "5 rows ef19ccff04d57b29" + +[[query]] +category = "select_arithmetic" +sql = '''sELECT tOTAl + 1 FrOM ORDErs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ef19ccff04d57b29" +result_repository = "5 rows ef19ccff04d57b29" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL + 1 FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ef19ccff04d57b29" +result_repository = "5 rows ef19ccff04d57b29" + +[[query]] +category = "select_arithmetic" +sql = '''select total + 1 from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ef19ccff04d57b29" +result_repository = "5 rows ef19ccff04d57b29" + +[[query]] +category = "select_arithmetic" +sql = '''select total + 1 + from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ef19ccff04d57b29" +result_repository = "5 rows ef19ccff04d57b29" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total + 2 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 21810f4f553fe3b8" +result_repository = "5 rows 21810f4f553fe3b8" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select total + 2 as v from orders +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 21810f4f553fe3b8" +result_repository = "5 rows 21810f4f553fe3b8" + +[[query]] +category = "select_arithmetic" +sql = '''select total + 2 as v + from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 21810f4f553fe3b8" +result_repository = "5 rows 21810f4f553fe3b8" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ total + 2 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 21810f4f553fe3b8" +result_repository = "5 rows 21810f4f553fe3b8" + +[[query]] +category = "select_arithmetic" +sql = '''select total + 2 as v + from orders +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 21810f4f553fe3b8" +result_repository = "5 rows 21810f4f553fe3b8" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total + 2 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 21810f4f553fe3b8" +result_repository = "5 rows 21810f4f553fe3b8" + +[[query]] +category = "select_arithmetic" +sql = '''seLECT /* c */ tOtal + 2 + FroM orDERs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 21810f4f553fe3b8" +result_repository = "5 rows 21810f4f553fe3b8" + +[[query]] +category = "select_arithmetic" +sql = '''select total + 2 from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 21810f4f553fe3b8" +result_repository = "5 rows 21810f4f553fe3b8" + +[[query]] +category = "select_arithmetic" +sql = '''seLEct toTaL + 2 + FRom "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 21810f4f553fe3b8" +result_repository = "5 rows 21810f4f553fe3b8" + +[[query]] +category = "select_arithmetic" +sql = '''select total + 2 + from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 21810f4f553fe3b8" +result_repository = "5 rows 21810f4f553fe3b8" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total + total AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT /* c */ TOTAL + TOTAL AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL + TOTAL AS V FROM ORDERS;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "select_arithmetic" +sql = '''select total + total as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "select_arithmetic" +sql = '''select total + total as v from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total + total FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_arithmetic" +sql = '''select total + total from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ total + total from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..28" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..28" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ total + total from orders +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..28" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..28" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT TOTAL + TOTAL FROM ORDERS;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..33" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..33" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total - 1 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 821b98f587f6fe67" +result_repository = "5 rows 821b98f587f6fe67" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select total - 1 as v from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 821b98f587f6fe67" +result_repository = "5 rows 821b98f587f6fe67" + +[[query]] +category = "select_arithmetic" +sql = '''sEleCT TOTaL - 1 AS v fROM oRdeRS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 821b98f587f6fe67" +result_repository = "5 rows 821b98f587f6fe67" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL - 1 AS V FROM "ORDERS"; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 821b98f587f6fe67" +result_repository = "5 rows 821b98f587f6fe67" + +[[query]] +category = "select_arithmetic" +sql = '''select total - 1 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 821b98f587f6fe67" +result_repository = "5 rows 821b98f587f6fe67" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total - 1 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 821b98f587f6fe67" +result_repository = "5 rows 821b98f587f6fe67" + +[[query]] +category = "select_arithmetic" +sql = '''select total - 1 from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 821b98f587f6fe67" +result_repository = "5 rows 821b98f587f6fe67" + +[[query]] +category = "select_arithmetic" +sql = '''select total - 1 + from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 821b98f587f6fe67" +result_repository = "5 rows 821b98f587f6fe67" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT /* c */ TOTAL - 1 FROM ORDERS +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 821b98f587f6fe67" +result_repository = "5 rows 821b98f587f6fe67" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select total - 1 from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 821b98f587f6fe67" +result_repository = "5 rows 821b98f587f6fe67" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total - 2 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 588f1c4c2185e1e9" +result_repository = "5 rows 588f1c4c2185e1e9" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL - 2 AS V FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 588f1c4c2185e1e9" +result_repository = "5 rows 588f1c4c2185e1e9" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select total - 2 as v + from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 588f1c4c2185e1e9" +result_repository = "5 rows 588f1c4c2185e1e9" + +[[query]] +category = "select_arithmetic" +sql = '''select total - 2 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 588f1c4c2185e1e9" +result_repository = "5 rows 588f1c4c2185e1e9" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ total - 2 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 588f1c4c2185e1e9" +result_repository = "5 rows 588f1c4c2185e1e9" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total - 2 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 588f1c4c2185e1e9" +result_repository = "5 rows 588f1c4c2185e1e9" + +[[query]] +category = "select_arithmetic" +sql = '''seLEcT /* c */ TOTaL - 2 + FRoM orDers''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 588f1c4c2185e1e9" +result_repository = "5 rows 588f1c4c2185e1e9" + +[[query]] +category = "select_arithmetic" +sql = '''select total - 2 from orders +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 588f1c4c2185e1e9" +result_repository = "5 rows 588f1c4c2185e1e9" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT TOTAL - 2 + FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 588f1c4c2185e1e9" +result_repository = "5 rows 588f1c4c2185e1e9" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select total - 2 from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 588f1c4c2185e1e9" +result_repository = "5 rows 588f1c4c2185e1e9" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total - total AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 98c07d0ae5ef0aa7" +result_repository = "5 rows 98c07d0ae5ef0aa7" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL - TOTAL AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 98c07d0ae5ef0aa7" +result_repository = "5 rows 98c07d0ae5ef0aa7" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select total - total as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 98c07d0ae5ef0aa7" +result_repository = "5 rows 98c07d0ae5ef0aa7" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SeLect toTal - Total As v + FrOm ORDers''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 98c07d0ae5ef0aa7" +result_repository = "5 rows 98c07d0ae5ef0aa7" + +[[query]] +category = "select_arithmetic" +sql = '''SeLect /* c */ toTAl - tOtAL AS V FroM OrDErS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 98c07d0ae5ef0aa7" +result_repository = "5 rows 98c07d0ae5ef0aa7" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total - total FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ total - total from orders +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..28" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..28" + +[[query]] +category = "select_arithmetic" +sql = '''sEleCT tOTAL - TOtAl from ORDErs''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT /* c */ TOTAL - TOTAL FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..28" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..28" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELecT TOtAL - ToTal fROm OrDers''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..33" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..33" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total * 1 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select total * 1 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select total * 1 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_arithmetic" +sql = '''select total * 1 as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_arithmetic" +sql = '''select total * 1 as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total * 1 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL * 1 FROM "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +seLect totAl * 1 FROm ORdERs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_arithmetic" +sql = '''sELeCT tOtal * 1 from oRdeRs -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_arithmetic" +sql = '''select total * 1 from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total * 2 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL * 2 AS V + FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL * 2 AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "select_arithmetic" +sql = '''select total * 2 as v + from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL * 2 AS V FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total * 2 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ total * 2 + from orders ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SelEct tOTAL * 2 + FROm ORdeRs;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL * 2 FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "select_arithmetic" +sql = '''seLeCT tOTaL * 2 FrOm oRDERs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total * total AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 5c3e6a895faba278" +result_repository = "5 rows 5c3e6a895faba278" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select total * total as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 5c3e6a895faba278" +result_repository = "5 rows 5c3e6a895faba278" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select total * total as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 5c3e6a895faba278" +result_repository = "5 rows 5c3e6a895faba278" + +[[query]] +category = "select_arithmetic" +sql = '''SELeCT totaL * toTAl aS V + FrOM oRDErS;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 5c3e6a895faba278" +result_repository = "5 rows 5c3e6a895faba278" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total * total FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL * TOTAL FROM "ORDERS" -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ total * total + from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..28" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..28" + +[[query]] +category = "select_arithmetic" +sql = '''select total * total from orders ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL * TOTAL FROM "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total / 1 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8e412c88485530ac" +result_repository = "5 rows 8e412c88485530ac" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL / 1 AS V FROM ORDERS;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8e412c88485530ac" +result_repository = "5 rows 8e412c88485530ac" + +[[query]] +category = "select_arithmetic" +sql = '''SELEcT /* c */ total / 1 As v FrOM ORDeRs ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8e412c88485530ac" +result_repository = "5 rows 8e412c88485530ac" + +[[query]] +category = "select_arithmetic" +sql = '''select total / 1 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8e412c88485530ac" +result_repository = "5 rows 8e412c88485530ac" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ total / 1 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8e412c88485530ac" +result_repository = "5 rows 8e412c88485530ac" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total / 1 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8e412c88485530ac" +result_repository = "5 rows 8e412c88485530ac" + +[[query]] +category = "select_arithmetic" +sql = '''select total / 1 from orders ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8e412c88485530ac" +result_repository = "5 rows 8e412c88485530ac" + +[[query]] +category = "select_arithmetic" +sql = '''SeLeCT TOTaL / 1 fRoM ordErS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8e412c88485530ac" +result_repository = "5 rows 8e412c88485530ac" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ total / 1 from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8e412c88485530ac" +result_repository = "5 rows 8e412c88485530ac" + +[[query]] +category = "select_arithmetic" +sql = '''SeLecT /* c */ ToTAL / 1 from orDerS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8e412c88485530ac" +result_repository = "5 rows 8e412c88485530ac" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total / 2 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 66ec3c9c96361501" +result_repository = "5 rows 66ec3c9c96361501" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ total / 2 as v from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 66ec3c9c96361501" +result_repository = "5 rows 66ec3c9c96361501" + +[[query]] +category = "select_arithmetic" +sql = '''select total / 2 as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 66ec3c9c96361501" +result_repository = "5 rows 66ec3c9c96361501" + +[[query]] +category = "select_arithmetic" +sql = '''SelecT tOtAL / 2 aS V fROm orDERs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 66ec3c9c96361501" +result_repository = "5 rows 66ec3c9c96361501" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ total / 2 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 66ec3c9c96361501" +result_repository = "5 rows 66ec3c9c96361501" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total / 2 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 66ec3c9c96361501" +result_repository = "5 rows 66ec3c9c96361501" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL / 2 FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 66ec3c9c96361501" +result_repository = "5 rows 66ec3c9c96361501" + +[[query]] +category = "select_arithmetic" +sql = '''SELeCt TotAL / 2 + From ORDers; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 66ec3c9c96361501" +result_repository = "5 rows 66ec3c9c96361501" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +seLect TotAl / 2 froM OrDers''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 66ec3c9c96361501" +result_repository = "5 rows 66ec3c9c96361501" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL / 2 FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 66ec3c9c96361501" +result_repository = "5 rows 66ec3c9c96361501" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total / total AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows d2331e3f4e723abb" +result_repository = "5 rows d2331e3f4e723abb" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ total / total as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows d2331e3f4e723abb" +result_repository = "5 rows d2331e3f4e723abb" + +[[query]] +category = "select_arithmetic" +sql = '''sElecT tOtAl / tOTAl As v + frOM ORdErs ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows d2331e3f4e723abb" +result_repository = "5 rows d2331e3f4e723abb" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +seleCt Total / ToTAL As v FROM oRdErS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows d2331e3f4e723abb" +result_repository = "5 rows d2331e3f4e723abb" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT TOTAL / TOTAL AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows d2331e3f4e723abb" +result_repository = "5 rows d2331e3f4e723abb" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT total / total FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SElECT TOTaL / tOtal fRoM Orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..33" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..33" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ total / total from "ORDERS" ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..28" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..28" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ total / total from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..28" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..28" + +[[query]] +category = "select_arithmetic" +sql = '''select total / total + from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id + 1 AS v FROM orders''' +expect = "refused SQ0008 node:add at 7..19" +expect_repository = "translated" +result_repository = "5 rows 2f6b61b9af32201e" + +[[query]] +category = "select_arithmetic" +sql = '''SElEcT OrDEr_iD + 1 aS v frOM OrDerS +''' +expect = "refused SQ0008 node:add at 7..19" +expect_repository = "translated" +result_repository = "5 rows 2f6b61b9af32201e" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ order_id + 1 as v from orders''' +expect = "refused SQ0008 node:add at 15..27" +expect_repository = "translated" +result_repository = "5 rows 2f6b61b9af32201e" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id + 1 as v from orders''' +expect = "refused SQ0008 node:add at 7..19" +expect_repository = "translated" +result_repository = "5 rows 2f6b61b9af32201e" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT /* c */ ORDER_ID + 1 AS V + FROM "ORDERS"''' +expect = "refused SQ0008 node:add at 15..27" +expect_repository = "translated" +result_repository = "5 rows 2f6b61b9af32201e" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id + 1 FROM orders''' +expect = "refused SQ0008 node:add at 7..19" +expect_repository = "translated" +result_repository = "5 rows 2f6b61b9af32201e" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id + 1 from orders''' +expect = "refused SQ0008 node:add at 7..19" +expect_repository = "translated" +result_repository = "5 rows 2f6b61b9af32201e" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT /* c */ ORDER_ID + 1 FROM "ORDERS" +''' +expect = "refused SQ0008 node:add at 15..27" +expect_repository = "translated" +result_repository = "5 rows 2f6b61b9af32201e" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT ORDER_ID + 1 FROM ORDERS -- trailing comment''' +expect = "refused SQ0008 node:add at 7..19" +expect_repository = "translated" +result_repository = "5 rows 2f6b61b9af32201e" + +[[query]] +category = "select_arithmetic" +sql = '''SeleCt oRdEr_id + 1 froM "ORDERS" -- trailing comment''' +expect = "refused SQ0008 node:add at 7..19" +expect_repository = "translated" +result_repository = "5 rows 2f6b61b9af32201e" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id + 2 AS v FROM orders''' +expect = "refused SQ0008 node:add at 7..19" +expect_repository = "translated" +result_repository = "5 rows 8b11ec853ce09850" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id + 2 as v from orders ;''' +expect = "refused SQ0008 node:add at 7..19" +expect_repository = "translated" +result_repository = "5 rows 8b11ec853ce09850" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id + 2 as v + from orders''' +expect = "refused SQ0008 node:add at 7..19" +expect_repository = "translated" +result_repository = "5 rows 8b11ec853ce09850" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id + 2 as v from orders +''' +expect = "refused SQ0008 node:add at 7..19" +expect_repository = "translated" +result_repository = "5 rows 8b11ec853ce09850" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT ORDER_ID + 2 AS V FROM ORDERS -- trailing comment''' +expect = "refused SQ0008 node:add at 7..19" +expect_repository = "translated" +result_repository = "5 rows 8b11ec853ce09850" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id + 2 FROM orders''' +expect = "refused SQ0008 node:add at 7..19" +expect_repository = "translated" +result_repository = "5 rows 8b11ec853ce09850" + +[[query]] +category = "select_arithmetic" +sql = '''SeleCt OrDER_ID + 2 FRoM ORdERs''' +expect = "refused SQ0008 node:add at 7..19" +expect_repository = "translated" +result_repository = "5 rows 8b11ec853ce09850" + +[[query]] +category = "select_arithmetic" +sql = '''SeLECT /* c */ OrdEr_iD + 2 froM ordErS ;''' +expect = "refused SQ0008 node:add at 15..27" +expect_repository = "translated" +result_repository = "5 rows 8b11ec853ce09850" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id + 2 from orders''' +expect = "refused SQ0008 node:add at 7..19" +expect_repository = "translated" +result_repository = "5 rows 8b11ec853ce09850" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SEleCT ORDeR_ID + 2 + FROm OrderS;''' +expect = "refused SQ0008 node:add at 20..32" +expect_repository = "translated" +result_repository = "5 rows 8b11ec853ce09850" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id + total AS v FROM orders''' +expect = "refused SQ0008 node:add at 7..23" +expect_repository = "translated" +result_repository = "5 rows 25716c19bdc4bca5" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELeCT oRdeR_ID + ToTAl As v FRoM orDerS''' +expect = "refused SQ0008 node:add at 20..36" +expect_repository = "translated" +result_repository = "5 rows 25716c19bdc4bca5" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT ORDER_ID + TOTAL AS V + FROM "ORDERS" ;''' +expect = "refused SQ0008 node:add at 20..36" +expect_repository = "translated" +result_repository = "5 rows 25716c19bdc4bca5" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT ORDER_ID + TOTAL AS V + FROM ORDERS;''' +expect = "refused SQ0008 node:add at 20..36" +expect_repository = "translated" +result_repository = "5 rows 25716c19bdc4bca5" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT /* c */ ORDER_ID + TOTAL AS V FROM ORDERS''' +expect = "refused SQ0008 node:add at 15..31" +expect_repository = "translated" +result_repository = "5 rows 25716c19bdc4bca5" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id + total FROM orders''' +expect = "refused SQ0008 node:add at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select order_id + total + from orders;''' +expect = "refused SQ0008 node:add at 20..36" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..36" + +[[query]] +category = "select_arithmetic" +sql = '''sElECT orDer_iD + TOtaL + from "ORDERS"''' +expect = "refused SQ0008 node:add at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_arithmetic" +sql = '''sELEct ORDeR_ID + totaL FrOm orDers''' +expect = "refused SQ0008 node:add at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id + total from orders''' +expect = "refused SQ0008 node:add at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id - 1 AS v FROM orders''' +expect = "refused SQ0008 node:sub at 7..19" +expect_repository = "translated" +result_repository = "5 rows 2965d24b80b4f692" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id - 1 as v from orders;''' +expect = "refused SQ0008 node:sub at 7..19" +expect_repository = "translated" +result_repository = "5 rows 2965d24b80b4f692" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ order_id - 1 as v + from orders ;''' +expect = "refused SQ0008 node:sub at 15..27" +expect_repository = "translated" +result_repository = "5 rows 2965d24b80b4f692" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select order_id - 1 as v from orders +''' +expect = "refused SQ0008 node:sub at 20..32" +expect_repository = "translated" +result_repository = "5 rows 2965d24b80b4f692" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT ORDER_ID - 1 AS V + FROM "ORDERS"''' +expect = "refused SQ0008 node:sub at 7..19" +expect_repository = "translated" +result_repository = "5 rows 2965d24b80b4f692" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id - 1 FROM orders''' +expect = "refused SQ0008 node:sub at 7..19" +expect_repository = "translated" +result_repository = "5 rows 2965d24b80b4f692" + +[[query]] +category = "select_arithmetic" +sql = '''SeLECT oRdeR_ID - 1 FroM oRderS;''' +expect = "refused SQ0008 node:sub at 7..19" +expect_repository = "translated" +result_repository = "5 rows 2965d24b80b4f692" + +[[query]] +category = "select_arithmetic" +sql = '''sElEct OrdEr_Id - 1 fROm ORDERs''' +expect = "refused SQ0008 node:sub at 7..19" +expect_repository = "translated" +result_repository = "5 rows 2965d24b80b4f692" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT ORDER_ID - 1 FROM ORDERS -- trailing comment''' +expect = "refused SQ0008 node:sub at 7..19" +expect_repository = "translated" +result_repository = "5 rows 2965d24b80b4f692" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select order_id - 1 from orders''' +expect = "refused SQ0008 node:sub at 20..32" +expect_repository = "translated" +result_repository = "5 rows 2965d24b80b4f692" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id - 2 AS v FROM orders''' +expect = "refused SQ0008 node:sub at 7..19" +expect_repository = "translated" +result_repository = "5 rows 9212211346d1bb49" + +[[query]] +category = "select_arithmetic" +sql = '''SeLeCt OrDer_Id - 2 As v fROM OrDers''' +expect = "refused SQ0008 node:sub at 7..19" +expect_repository = "translated" +result_repository = "5 rows 9212211346d1bb49" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ order_id - 2 as v from orders +''' +expect = "refused SQ0008 node:sub at 15..27" +expect_repository = "translated" +result_repository = "5 rows 9212211346d1bb49" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id - 2 as v + from "ORDERS"''' +expect = "refused SQ0008 node:sub at 7..19" +expect_repository = "translated" +result_repository = "5 rows 9212211346d1bb49" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ order_id - 2 as v from orders''' +expect = "refused SQ0008 node:sub at 15..27" +expect_repository = "translated" +result_repository = "5 rows 9212211346d1bb49" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id - 2 FROM orders''' +expect = "refused SQ0008 node:sub at 7..19" +expect_repository = "translated" +result_repository = "5 rows 9212211346d1bb49" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id - 2 from orders''' +expect = "refused SQ0008 node:sub at 7..19" +expect_repository = "translated" +result_repository = "5 rows 9212211346d1bb49" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT ORDER_ID - 2 + FROM "ORDERS"''' +expect = "refused SQ0008 node:sub at 7..19" +expect_repository = "translated" +result_repository = "5 rows 9212211346d1bb49" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id - 2 from orders''' +expect = "refused SQ0008 node:sub at 7..19" +expect_repository = "translated" +result_repository = "5 rows 9212211346d1bb49" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT ORDER_ID - 2 + FROM ORDERS''' +expect = "refused SQ0008 node:sub at 7..19" +expect_repository = "translated" +result_repository = "5 rows 9212211346d1bb49" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id - total AS v FROM orders''' +expect = "refused SQ0008 node:sub at 7..23" +expect_repository = "translated" +result_repository = "5 rows 0fb62110676a7303" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id - total as v from orders''' +expect = "refused SQ0008 node:sub at 7..23" +expect_repository = "translated" +result_repository = "5 rows 0fb62110676a7303" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ order_id - total as v from orders''' +expect = "refused SQ0008 node:sub at 15..31" +expect_repository = "translated" +result_repository = "5 rows 0fb62110676a7303" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select order_id - total as v from orders''' +expect = "refused SQ0008 node:sub at 20..36" +expect_repository = "translated" +result_repository = "5 rows 0fb62110676a7303" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id - total FROM orders''' +expect = "refused SQ0008 node:sub at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select order_id - total + from "ORDERS";''' +expect = "refused SQ0008 node:sub at 20..36" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..36" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select order_id - total + from orders ;''' +expect = "refused SQ0008 node:sub at 20..36" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..36" + +[[query]] +category = "select_arithmetic" +sql = '''SELect ordEr_ID - TotaL frOm ordErs ;''' +expect = "refused SQ0008 node:sub at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ order_id - total from orders;''' +expect = "refused SQ0008 node:sub at 15..31" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..31" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id * 1 AS v FROM orders''' +expect = "refused SQ0008 node:mul at 7..19" +expect_repository = "translated" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SElECt oRDER_Id * 1 As V fRom OrdErs; +''' +expect = "refused SQ0008 node:mul at 20..32" +expect_repository = "translated" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id * 1 as v from orders''' +expect = "refused SQ0008 node:mul at 7..19" +expect_repository = "translated" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT ORDER_ID * 1 AS V FROM ORDERS;''' +expect = "refused SQ0008 node:mul at 7..19" +expect_repository = "translated" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ order_id * 1 as v + from orders''' +expect = "refused SQ0008 node:mul at 15..27" +expect_repository = "translated" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id * 1 FROM orders''' +expect = "refused SQ0008 node:mul at 7..19" +expect_repository = "translated" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_arithmetic" +sql = '''sEleCt order_id * 1 + fROM orDers -- trailing comment''' +expect = "refused SQ0008 node:mul at 7..19" +expect_repository = "translated" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_arithmetic" +sql = '''sELECt ORder_id * 1 fROm OrDers''' +expect = "refused SQ0008 node:mul at 7..19" +expect_repository = "translated" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id * 1 + from orders''' +expect = "refused SQ0008 node:mul at 7..19" +expect_repository = "translated" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_arithmetic" +sql = '''sELEcT /* c */ orDer_Id * 1 fRom OrdERs;''' +expect = "refused SQ0008 node:mul at 15..27" +expect_repository = "translated" +result_repository = "5 rows b5584a1464119498" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id * 2 AS v FROM orders''' +expect = "refused SQ0008 node:mul at 7..19" +expect_repository = "translated" +result_repository = "5 rows 445eaa937a5a28cb" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id * 2 as v from orders -- trailing comment''' +expect = "refused SQ0008 node:mul at 7..19" +expect_repository = "translated" +result_repository = "5 rows 445eaa937a5a28cb" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select order_id * 2 as v from "ORDERS"''' +expect = "refused SQ0008 node:mul at 20..32" +expect_repository = "translated" +result_repository = "5 rows 445eaa937a5a28cb" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ order_id * 2 as v + from orders +''' +expect = "refused SQ0008 node:mul at 15..27" +expect_repository = "translated" +result_repository = "5 rows 445eaa937a5a28cb" + +[[query]] +category = "select_arithmetic" +sql = '''SelEcT ORDEr_iD * 2 aS v FROm OrdERS -- trailing comment''' +expect = "refused SQ0008 node:mul at 7..19" +expect_repository = "translated" +result_repository = "5 rows 445eaa937a5a28cb" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id * 2 FROM orders''' +expect = "refused SQ0008 node:mul at 7..19" +expect_repository = "translated" +result_repository = "5 rows 445eaa937a5a28cb" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT ORDER_ID * 2 FROM ORDERS''' +expect = "refused SQ0008 node:mul at 7..19" +expect_repository = "translated" +result_repository = "5 rows 445eaa937a5a28cb" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT ORDER_ID * 2 FROM ORDERS''' +expect = "refused SQ0008 node:mul at 7..19" +expect_repository = "translated" +result_repository = "5 rows 445eaa937a5a28cb" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id * 2 from "ORDERS"''' +expect = "refused SQ0008 node:mul at 7..19" +expect_repository = "translated" +result_repository = "5 rows 445eaa937a5a28cb" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id * total AS v FROM orders''' +expect = "refused SQ0008 node:mul at 7..23" +expect_repository = "translated" +result_repository = "5 rows e6e1ebe7a4100497" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +sELeCT ordEr_Id * Total AS v frOm "ORDERS"''' +expect = "refused SQ0008 node:mul at 20..36" +expect_repository = "translated" +result_repository = "5 rows e6e1ebe7a4100497" + +[[query]] +category = "select_arithmetic" +sql = '''seleCt OrDER_Id * TOTaL as V FROM oRdeRs''' +expect = "refused SQ0008 node:mul at 7..23" +expect_repository = "translated" +result_repository = "5 rows e6e1ebe7a4100497" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id * total as v from orders -- trailing comment''' +expect = "refused SQ0008 node:mul at 7..23" +expect_repository = "translated" +result_repository = "5 rows e6e1ebe7a4100497" + +[[query]] +category = "select_arithmetic" +sql = '''select /* c */ order_id * total as v + from orders''' +expect = "refused SQ0008 node:mul at 15..31" +expect_repository = "translated" +result_repository = "5 rows e6e1ebe7a4100497" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id * total FROM orders''' +expect = "refused SQ0008 node:mul at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_arithmetic" +sql = '''Select OrdER_Id * TOtaL frOm oRdErS +''' +expect = "refused SQ0008 node:mul at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id * total from orders -- trailing comment''' +expect = "refused SQ0008 node:mul at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_arithmetic" +sql = '''SELeCt ordEr_iD * TOTaL fRom ORDErS -- trailing comment''' +expect = "refused SQ0008 node:mul at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT /* c */ ORDER_ID * TOTAL FROM ORDERS''' +expect = "refused SQ0008 node:mul at 15..31" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..31" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id / 1 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e550692d44975249" +result_repository = "5 rows e550692d44975249" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id / 1 as v from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e550692d44975249" +result_repository = "5 rows e550692d44975249" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +SELECT ORDER_ID / 1 AS V + FROM ORDERS ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e550692d44975249" +result_repository = "5 rows e550692d44975249" + +[[query]] +category = "select_arithmetic" +sql = '''sElECT oRdER_ID / 1 As v FRom ordeRS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e550692d44975249" +result_repository = "5 rows e550692d44975249" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT ORDER_ID / 1 AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e550692d44975249" +result_repository = "5 rows e550692d44975249" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id / 1 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e550692d44975249" +result_repository = "5 rows e550692d44975249" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id / 1 from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e550692d44975249" +result_repository = "5 rows e550692d44975249" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id / 1 from "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e550692d44975249" +result_repository = "5 rows e550692d44975249" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +sElECT OrdeR_id / 1 fRom "ORDERS";''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e550692d44975249" +result_repository = "5 rows e550692d44975249" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id / 1 from orders ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e550692d44975249" +result_repository = "5 rows e550692d44975249" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id / 2 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e4f620d72e9b5913" +result_repository = "5 rows e4f620d72e9b5913" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select order_id / 2 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e4f620d72e9b5913" +result_repository = "5 rows e4f620d72e9b5913" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT ORDER_ID / 2 AS V FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e4f620d72e9b5913" +result_repository = "5 rows e4f620d72e9b5913" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT /* c */ ORDER_ID / 2 AS V + FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e4f620d72e9b5913" +result_repository = "5 rows e4f620d72e9b5913" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id / 2 as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e4f620d72e9b5913" +result_repository = "5 rows e4f620d72e9b5913" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id / 2 FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e4f620d72e9b5913" +result_repository = "5 rows e4f620d72e9b5913" + +[[query]] +category = "select_arithmetic" +sql = '''SelECT orDER_iD / 2 FroM ORDErs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e4f620d72e9b5913" +result_repository = "5 rows e4f620d72e9b5913" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id / 2 from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e4f620d72e9b5913" +result_repository = "5 rows e4f620d72e9b5913" + +[[query]] +category = "select_arithmetic" +sql = '''SeLeCT OrDeR_id / 2 fROm orDErS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e4f620d72e9b5913" +result_repository = "5 rows e4f620d72e9b5913" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id / 2 from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e4f620d72e9b5913" +result_repository = "5 rows e4f620d72e9b5913" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id / total AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 7e296201ac4be853" +result_repository = "5 rows 7e296201ac4be853" + +[[query]] +category = "select_arithmetic" +sql = '''sELEcT ORDeR_id / totAL as v + FROm ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 7e296201ac4be853" +result_repository = "5 rows 7e296201ac4be853" + +[[query]] +category = "select_arithmetic" +sql = '''SElEct oRDEr_ID / totAL as v + frOM orDeRs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 7e296201ac4be853" +result_repository = "5 rows 7e296201ac4be853" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT ORDER_ID / TOTAL AS V FROM ORDERS; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 7e296201ac4be853" +result_repository = "5 rows 7e296201ac4be853" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id / total as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 7e296201ac4be853" +result_repository = "5 rows 7e296201ac4be853" + +[[query]] +category = "select_arithmetic" +sql = '''SELECT order_id / total FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_arithmetic" +sql = '''-- a comment +select order_id / total from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..36" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..36" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id / total + from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_arithmetic" +sql = '''select order_id / total from orders +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_concat" +sql = '''SELECT 'a' || 'b' AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fb8e20fc2e4c3f24" +result_repository = "1 rows fb8e20fc2e4c3f24" + +[[query]] +category = "select_concat" +sql = '''sElEct 'a' || 'b' As v ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fb8e20fc2e4c3f24" +result_repository = "1 rows fb8e20fc2e4c3f24" + +[[query]] +category = "select_concat" +sql = '''-- a comment +select 'a' || 'b' as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fb8e20fc2e4c3f24" +result_repository = "1 rows fb8e20fc2e4c3f24" + +[[query]] +category = "select_concat" +sql = '''select 'a' || 'b' as v +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fb8e20fc2e4c3f24" +result_repository = "1 rows fb8e20fc2e4c3f24" + +[[query]] +category = "select_concat" +sql = '''-- a comment +SeLecT 'a' || 'b' AS v +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows fb8e20fc2e4c3f24" +result_repository = "1 rows fb8e20fc2e4c3f24" + +[[query]] +category = "select_concat" +sql = '''SELECT 'a' || 'b'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_concat" +sql = '''select 'a' || 'b'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_concat" +sql = '''seLEcT /* c */ 'a' || 'b'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..25" + +[[query]] +category = "select_concat" +sql = '''SELECT 'a' || 'b' -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_concat" +sql = '''SeleCt 'a' || 'b'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_concat_from" +sql = '''SELECT 'a' || 'b' AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 9e37d35af66fe139" +result_repository = "5 rows 9e37d35af66fe139" + +[[query]] +category = "select_concat_from" +sql = '''select 'a' || 'b' as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 9e37d35af66fe139" +result_repository = "5 rows 9e37d35af66fe139" + +[[query]] +category = "select_concat_from" +sql = '''sElECT 'a' || 'b' as v + FRoM ORDERS ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 9e37d35af66fe139" +result_repository = "5 rows 9e37d35af66fe139" + +[[query]] +category = "select_concat_from" +sql = '''select 'a' || 'b' as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 9e37d35af66fe139" +result_repository = "5 rows 9e37d35af66fe139" + +[[query]] +category = "select_concat_from" +sql = '''select 'a' || 'b' as v + from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 9e37d35af66fe139" +result_repository = "5 rows 9e37d35af66fe139" + +[[query]] +category = "select_concat_from" +sql = '''SELECT 'a' || 'b' FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_concat_from" +sql = '''select /* c */ 'a' || 'b' from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..25" + +[[query]] +category = "select_concat_from" +sql = '''-- a comment +select 'a' || 'b' from "ORDERS" +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..30" + +[[query]] +category = "select_concat_from" +sql = '''sELECt /* c */ 'a' || 'b' FrOM OrdErs''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..25" + +[[query]] +category = "select_concat_from" +sql = '''SELECT 'a' || 'b' FROM ORDERS ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_concat" +sql = '''SELECT status || '!' AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2175c14a3c122518" +result_repository = "5 rows 2175c14a3c122518" + +[[query]] +category = "select_concat" +sql = '''SELECT STATUS || '!' AS V FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2175c14a3c122518" +result_repository = "5 rows 2175c14a3c122518" + +[[query]] +category = "select_concat" +sql = '''-- a comment +select status || '!' as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2175c14a3c122518" +result_repository = "5 rows 2175c14a3c122518" + +[[query]] +category = "select_concat" +sql = '''-- a comment +SELECT STATUS || '!' AS V FROM ORDERS +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2175c14a3c122518" +result_repository = "5 rows 2175c14a3c122518" + +[[query]] +category = "select_concat" +sql = '''-- a comment +select status || '!' as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2175c14a3c122518" +result_repository = "5 rows 2175c14a3c122518" + +[[query]] +category = "select_concat" +sql = '''SELECT status || '!' FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2175c14a3c122518" +result_repository = "5 rows 2175c14a3c122518" + +[[query]] +category = "select_concat" +sql = '''SELect STAtUs || '!' FROm OrDeRS; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2175c14a3c122518" +result_repository = "5 rows 2175c14a3c122518" + +[[query]] +category = "select_concat" +sql = '''select /* c */ status || '!' from "ORDERS" +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2175c14a3c122518" +result_repository = "5 rows 2175c14a3c122518" + +[[query]] +category = "select_concat" +sql = '''-- a comment +SELECT STATUS || '!' FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2175c14a3c122518" +result_repository = "5 rows 2175c14a3c122518" + +[[query]] +category = "select_concat" +sql = '''select status || '!' from orders +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2175c14a3c122518" +result_repository = "5 rows 2175c14a3c122518" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(total AS VARCHAR) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''SelECT CASt(toTaL AS VARcHAr) as v fROm oRdERs -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''select /* c */ cast(total as VARCHAR) as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''select cast(total as varchar) as v + from "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''select cast(total as VARCHAR) as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(total AS VARCHAR) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..29" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..29" + +[[query]] +category = "select_cast" +sql = '''select /* c */ cast(total as VARCHAR) + from "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..37" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..37" + +[[query]] +category = "select_cast" +sql = '''select cast(total as varchar) from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..29" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..29" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(TOTAL AS VARCHAR) FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..29" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..29" + +[[query]] +category = "select_cast" +sql = '''select cast(total as varchar) from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..29" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..29" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(1 AS VARCHAR) AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''select /* c */ cast(1 as varchar) as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''select cast(1 as varchar) as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(1 AS VARCHAR) AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(1 AS VARCHAR)''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..25" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(1 AS VARCHAR) +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..25" + +[[query]] +category = "select_cast" +sql = '''SELEcT /* c */ CAst(1 AS VaRCHAR)''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..33" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..33" + +[[query]] +category = "select_cast" +sql = '''-- a comment +select cast(1 as VARCHAR); +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..38" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..38" + +[[query]] +category = "select_cast_from" +sql = '''SELECT CAST(1 AS VARCHAR) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''select /* c */ cast(1 as VARCHAR) as v + from orders +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''-- a comment +SELECT CAST(1 AS VARCHAR) AS V FROM ORDERS ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''-- a comment +seLecT cAST(1 AS vARCHAR) as v FRom orderS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''-- a comment +SELECT CAST(1 AS VARCHAR) AS V FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''SELECT CAST(1 AS VARCHAR) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..25" + +[[query]] +category = "select_cast_from" +sql = '''SELECT CAST(1 AS VARCHAR) + FROM ORDERS -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..25" + +[[query]] +category = "select_cast_from" +sql = '''SELECT CAST(1 AS VARCHAR) FROM "ORDERS" -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..25" + +[[query]] +category = "select_cast_from" +sql = '''select /* c */ cast(1 as VARCHAR) from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..33" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..33" + +[[query]] +category = "select_cast_from" +sql = '''seLecT casT(1 aS VaRChAR) frOM ORDErS; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..25" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(status AS VARCHAR) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''select cast(status as varchar) as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''select cast(status as VARCHAR) as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''sELecT CAst(STatuS as vArchAr) aS V FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''select /* c */ cast(status as varchar) as v from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(status AS VARCHAR) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..30" + +[[query]] +category = "select_cast" +sql = '''selECT CASt(STATuS As VArchAR) FrOm oRDerS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..30" + +[[query]] +category = "select_cast" +sql = '''select /* c */ cast(status as varchar) from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..38" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..38" + +[[query]] +category = "select_cast" +sql = '''select cast(status as VARCHAR) + from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..30" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(STATUS AS VARCHAR) FROM ORDERS -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..30" + +[[query]] +category = "select_cast" +sql = '''SELECT total::VARCHAR AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''selECT ToTAL::varcHAr AS v frOM oRdERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''SELECT TOTAL::VARCHAR AS V + FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''select total::varchar as v + from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''select total::varchar as v from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''SELECT total::VARCHAR FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..21" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..21" + +[[query]] +category = "select_cast" +sql = '''select /* c */ total::VARCHAR from orders ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..29" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..29" + +[[query]] +category = "select_cast" +sql = '''select total::VARCHAR from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..21" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..21" + +[[query]] +category = "select_cast" +sql = '''-- a comment +select total::varchar from "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..34" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..34" + +[[query]] +category = "select_cast" +sql = '''SelECt /* c */ TotAl::vARcHAR + FRom OrdErs''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..29" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..29" + +[[query]] +category = "select_cast" +sql = '''SELECT 1::VARCHAR AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''selECT /* c */ 1::vARchAR AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''SELECT /* c */ 1::VARCHAR AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''SELECT 1::VARCHAR AS V;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''SELEct 1::VArcHAr as V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''SELECT 1::VARCHAR''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_cast" +sql = '''select 1::varchar; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_cast" +sql = '''select 1::varchar ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_cast" +sql = '''select /* c */ 1::VARCHAR''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..25" + +[[query]] +category = "select_cast" +sql = '''-- a comment +select 1::VARCHAR''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..30" + +[[query]] +category = "select_cast_from" +sql = '''SELECT 1::VARCHAR AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''-- a comment +seLECt 1::VARchAr AS V frOm ordeRs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''-- a comment +select 1::VARCHAR as v + from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''select /* c */ 1::varchar as v from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''SELECT 1::VARCHAR AS V FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''SELECT 1::VARCHAR FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_cast_from" +sql = '''-- a comment +SeLECT 1::vARchAr + FRoM orDerS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..30" + +[[query]] +category = "select_cast_from" +sql = '''SeLEcT 1::vaRCHaR FRom ordeRs''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_cast_from" +sql = '''select /* c */ 1::VARCHAR from orders ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..25" + +[[query]] +category = "select_cast_from" +sql = '''SELECT 1::VARCHAR FROM "ORDERS" +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_cast" +sql = '''SELECT status::VARCHAR AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''select status::varchar as v from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''sEleCT StAtUS::VARChAR AS v froM orDers''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''select status::varchar as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''select /* c */ status::VARCHAR as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''SELECT status::VARCHAR FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..22" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..22" + +[[query]] +category = "select_cast" +sql = '''sEleCt sTaTuS::vARCHar FRoM oRdErS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..22" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..22" + +[[query]] +category = "select_cast" +sql = '''SELECT STATUS::VARCHAR FROM "ORDERS" ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..22" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..22" + +[[query]] +category = "select_cast" +sql = '''SeleCt STATUS::VaRcHar fROm orDers -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..22" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..22" + +[[query]] +category = "select_cast" +sql = '''sELEcT /* c */ staTUs::vArChar frOm OrDers; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..30" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(total AS NUMBER(10,2)) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''-- a comment +SEleCt caSt(tOtaL as NUMber(10,2)) As V fRoM ORDeRs;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(TOTAL AS NUMBER(10,2)) AS V + FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''SELECT /* c */ CAST(TOTAL AS NUMBER(10,2)) AS V FROM ORDERS;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(TOTAL AS NUMBER(10,2)) AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(total AS NUMBER(10,2)) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..34" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..34" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(TOTAL AS NUMBER(10,2)) + FROM ORDERS;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..34" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..34" + +[[query]] +category = "select_cast" +sql = '''-- a comment +SELECT CAST(TOTAL AS NUMBER(10,2)) + FROM ORDERS ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..47" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..47" + +[[query]] +category = "select_cast" +sql = '''sElECt /* c */ CAst(TotAL as NUmBEr(10,2)) fRom oRDErs''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..42" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..42" + +[[query]] +category = "select_cast" +sql = '''select /* c */ cast(total as NUMBER(10,2)) + from orders; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..42" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..42" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(1 AS NUMBER(10,2)) AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows cf9dcf6da8a82be1" +result_repository = "1 rows cf9dcf6da8a82be1" + +[[query]] +category = "select_cast" +sql = '''-- a comment +seleCT CAST(1 as NUmBEr(10,2)) as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows cf9dcf6da8a82be1" +result_repository = "1 rows cf9dcf6da8a82be1" + +[[query]] +category = "select_cast" +sql = '''selECt CasT(1 as NuMbEr(10,2)) aS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows cf9dcf6da8a82be1" +result_repository = "1 rows cf9dcf6da8a82be1" + +[[query]] +category = "select_cast" +sql = '''select cast(1 as number(10,2)) as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows cf9dcf6da8a82be1" +result_repository = "1 rows cf9dcf6da8a82be1" + +[[query]] +category = "select_cast" +sql = '''-- a comment +select cast(1 as NUMBER(10,2)) as v +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows cf9dcf6da8a82be1" +result_repository = "1 rows cf9dcf6da8a82be1" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(1 AS NUMBER(10,2))''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..30" + +[[query]] +category = "select_cast" +sql = '''SelEcT CaSt(1 aS NUmBER(10,2)); +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..30" + +[[query]] +category = "select_cast" +sql = '''-- a comment +SELECT CAST(1 AS NUMBER(10,2))''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..43" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..43" + +[[query]] +category = "select_cast" +sql = '''select /* c */ cast(1 as NUMBER(10,2)); +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..38" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..38" + +[[query]] +category = "select_cast_from" +sql = '''SELECT CAST(1 AS NUMBER(10,2)) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ab75386c7c3d580c" +result_repository = "5 rows ab75386c7c3d580c" + +[[query]] +category = "select_cast_from" +sql = '''SELECT /* c */ CAST(1 AS NUMBER(10,2)) AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ab75386c7c3d580c" +result_repository = "5 rows ab75386c7c3d580c" + +[[query]] +category = "select_cast_from" +sql = '''select cast(1 as number(10,2)) as v + from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ab75386c7c3d580c" +result_repository = "5 rows ab75386c7c3d580c" + +[[query]] +category = "select_cast_from" +sql = '''-- a comment +select cast(1 as NUMBER(10,2)) as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ab75386c7c3d580c" +result_repository = "5 rows ab75386c7c3d580c" + +[[query]] +category = "select_cast_from" +sql = '''-- a comment +SElecT CASt(1 as numBEr(10,2)) AS v frOm "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ab75386c7c3d580c" +result_repository = "5 rows ab75386c7c3d580c" + +[[query]] +category = "select_cast_from" +sql = '''SELECT CAST(1 AS NUMBER(10,2)) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..30" + +[[query]] +category = "select_cast_from" +sql = '''select cast(1 as number(10,2)) from "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..30" + +[[query]] +category = "select_cast_from" +sql = '''select cast(1 as number(10,2)) from "ORDERS" -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..30" + +[[query]] +category = "select_cast_from" +sql = '''select cast(1 as number(10,2)) from orders ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..30" + +[[query]] +category = "select_cast_from" +sql = '''SELECT CAST(1 AS NUMBER(10,2)) + FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..30" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(status AS NUMBER(10,2)) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "raises 100038" +result_repository = "raises 100038" + +[[query]] +category = "select_cast" +sql = '''select cast(status as NUMBER(10,2)) as v from "ORDERS" +''' +expect = "translated" +expect_repository = "translated" +result = "raises 100038" +result_repository = "raises 100038" + +[[query]] +category = "select_cast" +sql = '''SELECT /* c */ CAST(STATUS AS NUMBER(10,2)) AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "raises 100038" +result_repository = "raises 100038" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(STATUS AS NUMBER(10,2)) AS V + FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "raises 100038" +result_repository = "raises 100038" + +[[query]] +category = "select_cast" +sql = '''select cast(status as NUMBER(10,2)) as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "raises 100038" +result_repository = "raises 100038" + +[[query]] +category = "select_cast" +sql = '''SELECT CAST(status AS NUMBER(10,2)) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..35" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..35" + +[[query]] +category = "select_cast" +sql = '''select cast(status as number(10,2)) from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..35" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..35" + +[[query]] +category = "select_cast" +sql = '''SELECT /* c */ CAST(STATUS AS NUMBER(10,2)) FROM ORDERS +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..43" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..43" + +[[query]] +category = "select_cast" +sql = '''sElECt cast(StatuS aS numBER(10,2)) frOm OrdERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..35" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..35" + +[[query]] +category = "select_cast" +sql = '''select cast(status as number(10,2)) from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..35" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..35" + +[[query]] +category = "select_cast" +sql = '''SELECT total::INT AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows db9202608b66b4de" +result_repository = "5 rows db9202608b66b4de" + +[[query]] +category = "select_cast" +sql = '''SELECT TOTAL::INT AS V FROM ORDERS +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows db9202608b66b4de" +result_repository = "5 rows db9202608b66b4de" + +[[query]] +category = "select_cast" +sql = '''seleCt tOtaL::INt As V FROM oRders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows db9202608b66b4de" +result_repository = "5 rows db9202608b66b4de" + +[[query]] +category = "select_cast" +sql = '''select /* c */ total::INT as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows db9202608b66b4de" +result_repository = "5 rows db9202608b66b4de" + +[[query]] +category = "select_cast" +sql = '''select /* c */ total::INT as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows db9202608b66b4de" +result_repository = "5 rows db9202608b66b4de" + +[[query]] +category = "select_cast" +sql = '''SELECT total::INT FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_cast" +sql = '''select total::INT from orders;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_cast" +sql = '''select /* c */ total::int from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..25" + +[[query]] +category = "select_cast" +sql = '''select total::int + from "ORDERS" -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_cast" +sql = '''select total::int from orders ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_cast" +sql = '''SELECT 1::INT AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''SELECT 1::INT AS V -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''sELEct 1::iNT as V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''SELECT 1::INT AS V''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''SELECT 1::INT AS V; +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''SELECT 1::INT''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..13" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..13" + +[[query]] +category = "select_cast" +sql = '''-- a comment +seLect 1::int; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..26" + +[[query]] +category = "select_cast" +sql = '''select 1::INT''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..13" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..13" + +[[query]] +category = "select_cast" +sql = '''select 1::INT -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..13" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..13" + +[[query]] +category = "select_cast" +sql = '''select 1::int -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..13" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..13" + +[[query]] +category = "select_cast_from" +sql = '''SELECT 1::INT AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''-- a comment +select 1::int as v from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''-- a comment +SELECT 1::INT AS V FROM "ORDERS";''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''select /* c */ 1::INT as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''-- a comment +select 1::int as v + from orders +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''SELECT 1::INT FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..13" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..13" + +[[query]] +category = "select_cast_from" +sql = '''SELECT 1::INT + FROM ORDERS ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..13" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..13" + +[[query]] +category = "select_cast_from" +sql = '''select 1::int from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..13" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..13" + +[[query]] +category = "select_cast_from" +sql = '''select 1::int + from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..13" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..13" + +[[query]] +category = "select_cast_from" +sql = '''select 1::int from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..13" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..13" + +[[query]] +category = "select_cast" +sql = '''SELECT status::INT AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "raises 100038" +result_repository = "raises 100038" + +[[query]] +category = "select_cast" +sql = '''select status::int as v from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "raises 100038" +result_repository = "raises 100038" + +[[query]] +category = "select_cast" +sql = '''select status::int as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "raises 100038" +result_repository = "raises 100038" + +[[query]] +category = "select_cast" +sql = '''SELECT stATuS::INt aS V + frOm "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "raises 100038" +result_repository = "raises 100038" + +[[query]] +category = "select_cast" +sql = '''select /* c */ status::INT as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "raises 100038" +result_repository = "raises 100038" + +[[query]] +category = "select_cast" +sql = '''SELECT status::INT FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..18" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..18" + +[[query]] +category = "select_cast" +sql = '''-- a comment +sELECt sTAtuS::InT fRoM ordeRs ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..31" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..31" + +[[query]] +category = "select_cast" +sql = '''-- a comment +select status::int from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..31" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..31" + +[[query]] +category = "select_cast" +sql = '''select /* c */ status::int from orders;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..26" + +[[query]] +category = "select_cast" +sql = '''sELECt sTatuS::InT + fROM orDeRs''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..18" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..18" + +[[query]] +category = "select_cast" +sql = '''SELECT TRY_CAST(status AS VARCHAR) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''SELEct try_Cast(StATus aS vArchAr) as v fROM "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''select try_cast(status as varchar) as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''-- a comment +select TRY_CAST(status as VARCHAR) as v from "ORDERS" ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''select try_cast(status as varchar) as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''SELECT TRY_CAST(status AS VARCHAR) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..34" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..34" + +[[query]] +category = "select_cast" +sql = '''SELECT TRY_CAST(STATUS AS VARCHAR) + FROM ORDERS -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..34" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..34" + +[[query]] +category = "select_cast" +sql = '''select TRY_CAST(status as VARCHAR) from orders;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..34" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..34" + +[[query]] +category = "select_cast" +sql = '''sEleCT /* c */ TRY_cast(stATuS aS vaRchaR) FRoM "ORDERS" +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..42" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..42" + +[[query]] +category = "select_cast" +sql = '''select try_cast(status as varchar) from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..34" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..34" + +[[query]] +category = "select_cast" +sql = '''SELECT TO_VARCHAR(total) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''SELect to_varcHAR(TOtAl) aS V FrOM ORdErs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''select to_varchar(total) as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''select TO_VARCHAR(total) as v + from orders +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''-- a comment +SELECT TO_VARCHAR(TOTAL) AS V + FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_cast" +sql = '''SELECT TO_VARCHAR(total) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..24" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..24" + +[[query]] +category = "select_cast" +sql = '''-- a comment +select TO_VARCHAR(total) from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..37" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..37" + +[[query]] +category = "select_cast" +sql = '''select TO_VARCHAR(total) from orders ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..24" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..24" + +[[query]] +category = "select_cast" +sql = '''select to_varchar(total) from orders ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..24" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..24" + +[[query]] +category = "select_cast" +sql = '''select to_varchar(total) from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..24" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..24" + +[[query]] +category = "select_cast" +sql = '''SELECT TO_VARCHAR(1) AS v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''select /* c */ TO_VARCHAR(1) as v +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''-- a comment +select TO_VARCHAR(1) as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''SELEct to_vARCHar(1) As V;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''select to_varchar(1) as v''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 6b86b273ff34fce1" +result_repository = "1 rows 6b86b273ff34fce1" + +[[query]] +category = "select_cast" +sql = '''SELECT TO_VARCHAR(1)''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_cast" +sql = '''select TO_VARCHAR(1) -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_cast" +sql = '''select TO_VARCHAR(1);''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_cast" +sql = '''-- a comment +selEcT To_VARCHAR(1) +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..33" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..33" + +[[query]] +category = "select_cast" +sql = '''-- a comment +select TO_VARCHAR(1)''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..33" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..33" + +[[query]] +category = "select_cast_from" +sql = '''SELECT TO_VARCHAR(1) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''SeleCt TO_VaRChar(1) as V FrOM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''sELeCt tO_vARcHaR(1) As V + FroM ORDERS;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''sElEct to_vArcHAr(1) as V FROM orDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''SElect /* c */ tO_varchaR(1) As v frOM ORDerS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "select_cast_from" +sql = '''SELECT TO_VARCHAR(1) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_cast_from" +sql = '''select TO_VARCHAR(1) from orders ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_cast_from" +sql = '''seleCt TO_vaRchAr(1) fROm oRders ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_cast_from" +sql = '''sELEct tO_vaRCHAR(1) from oRDers;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_cast_from" +sql = '''SELECT TO_VARCHAR(1) FROM ORDERS -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..20" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..20" + +[[query]] +category = "select_cast" +sql = '''SELECT TO_VARCHAR(status) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''SELeCT To_varCHaR(StATUs) as v + FRoM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''SELECT TO_VARCHAR(STATUS) AS V FROM ORDERS; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''SELECT TO_VARCHAR(STATUS) AS V FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''-- a comment +SELECT TO_VARCHAR(STATUS) AS V FROM ORDERS +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_cast" +sql = '''SELECT TO_VARCHAR(status) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..25" + +[[query]] +category = "select_cast" +sql = '''sELect /* c */ To_VArChAr(stAtuS) FROM oRdeRS; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..33" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..33" + +[[query]] +category = "select_cast" +sql = '''seLect TO_VArChaR(StaTUs) FroM oRders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..25" + +[[query]] +category = "select_cast" +sql = '''select /* c */ to_varchar(status) + from "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..33" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..33" + +[[query]] +category = "select_cast" +sql = '''select /* c */ to_varchar(status) from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..33" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..33" + +[[query]] +category = "select_function" +sql = '''SELECT UPPER(status) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "select_function" +sql = '''SELECT UPPER(STATUS) AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "select_function" +sql = '''select UPPER(status) as v + from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "select_function" +sql = '''select UPPER(status) as v from orders +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "select_function" +sql = '''select upper(status) as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "select_function" +sql = '''SELECT UPPER(status) FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "select_function" +sql = '''-- a comment +select UPPER(status) from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "select_function" +sql = '''select UPPER(status) from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "select_function" +sql = '''select UPPER(status) + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "select_function" +sql = '''select upper(status) from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "select_function" +sql = '''SELECT LOWER(status) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_function" +sql = '''-- a comment +SELECT LOWER(STATUS) AS V + FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_function" +sql = '''select lower(status) as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_function" +sql = '''selecT LowEr(STATUS) AS v + FROM ORDERs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_function" +sql = '''Select lOwER(StatuS) aS V froM OrdeRs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_function" +sql = '''SELECT LOWER(status) FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_function" +sql = '''SELECT LOWER(STATUS) FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_function" +sql = '''SELECT /* c */ LOWER(STATUS) + FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_function" +sql = '''-- a comment +select lower(status) from "ORDERS" ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_function" +sql = '''select lower(status) from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_function" +sql = '''SELECT LENGTH(status) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 297b3a9eb8a7baae" +result_repository = "5 rows 297b3a9eb8a7baae" + +[[query]] +category = "select_function" +sql = '''select /* c */ LENGTH(status) as v from orders ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 297b3a9eb8a7baae" +result_repository = "5 rows 297b3a9eb8a7baae" + +[[query]] +category = "select_function" +sql = '''select LENGTH(status) as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 297b3a9eb8a7baae" +result_repository = "5 rows 297b3a9eb8a7baae" + +[[query]] +category = "select_function" +sql = '''select length(status) as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 297b3a9eb8a7baae" +result_repository = "5 rows 297b3a9eb8a7baae" + +[[query]] +category = "select_function" +sql = '''select LENGTH(status) as v + from orders +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 297b3a9eb8a7baae" +result_repository = "5 rows 297b3a9eb8a7baae" + +[[query]] +category = "select_function" +sql = '''SELECT LENGTH(status) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..21" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..21" + +[[query]] +category = "select_function" +sql = '''-- a comment +select LENGTH(status) from orders; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..34" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..34" + +[[query]] +category = "select_function" +sql = '''select LENGTH(status) from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..21" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..21" + +[[query]] +category = "select_function" +sql = '''SELECT LENGTH(STATUS) FROM ORDERS -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..21" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..21" + +[[query]] +category = "select_function" +sql = '''SELECT LENGTH(STATUS) FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..21" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..21" + +[[query]] +category = "select_function" +sql = '''SELECT TRIM(status) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_function" +sql = '''selECt tRIm(sTaTus) AS v FRom OrDeRS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_function" +sql = '''select trim(status) as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_function" +sql = '''select TRIM(status) as v + from "ORDERS";''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_function" +sql = '''select trim(status) as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows ae0b616c959eb43f" +result_repository = "5 rows ae0b616c959eb43f" + +[[query]] +category = "select_function" +sql = '''SELECT TRIM(status) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..19" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..19" + +[[query]] +category = "select_function" +sql = '''select trim(status) from "ORDERS" -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..19" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..19" + +[[query]] +category = "select_function" +sql = '''select TRIM(status) + from "ORDERS" -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..19" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..19" + +[[query]] +category = "select_function" +sql = '''select TRIM(status) from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..19" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..19" + +[[query]] +category = "select_function" +sql = '''-- a comment +SEleCt tRiM(sTatus) frOm orDers +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..32" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..32" + +[[query]] +category = "select_function" +sql = '''SELECT SUBSTR(status, 1, 3) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows a6925fcc0ccdbc74" +result_repository = "5 rows a6925fcc0ccdbc74" + +[[query]] +category = "select_function" +sql = '''select SUBSTR(status, 1, 3) as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows a6925fcc0ccdbc74" +result_repository = "5 rows a6925fcc0ccdbc74" + +[[query]] +category = "select_function" +sql = '''sElECT subsTr(StatUS, 1, 3) As V FrOm ordeRs -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows a6925fcc0ccdbc74" +result_repository = "5 rows a6925fcc0ccdbc74" + +[[query]] +category = "select_function" +sql = '''SELECT SUBSTR(STATUS, 1, 3) AS V FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows a6925fcc0ccdbc74" +result_repository = "5 rows a6925fcc0ccdbc74" + +[[query]] +category = "select_function" +sql = '''SELECT SUBSTR(status, 1, 3) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..27" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..27" + +[[query]] +category = "select_function" +sql = '''-- a comment +select SUBSTR(status, 1, 3) from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..40" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..40" + +[[query]] +category = "select_function" +sql = '''-- a comment +sELEcT SUbSTr(StATUS, 1, 3) fROM OrDeRs +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..40" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..40" + +[[query]] +category = "select_function" +sql = '''select /* c */ substr(status, 1, 3) from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..35" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..35" + +[[query]] +category = "select_function" +sql = '''SeLeCT SUbSTr(statuS, 1, 3) + FroM "ORDERS";''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..27" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..27" + +[[query]] +category = "select_function" +sql = '''SELECT CONCAT(status, '!') AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2175c14a3c122518" +result_repository = "5 rows 2175c14a3c122518" + +[[query]] +category = "select_function" +sql = '''seLECT coNCAT(STATUS, '!') As v fRoM "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2175c14a3c122518" +result_repository = "5 rows 2175c14a3c122518" + +[[query]] +category = "select_function" +sql = '''select concat(status, '!') as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2175c14a3c122518" +result_repository = "5 rows 2175c14a3c122518" + +[[query]] +category = "select_function" +sql = '''select CONCAT(status, '!') as v from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2175c14a3c122518" +result_repository = "5 rows 2175c14a3c122518" + +[[query]] +category = "select_function" +sql = '''SELECT CONCAT(STATUS, '!') AS V FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2175c14a3c122518" +result_repository = "5 rows 2175c14a3c122518" + +[[query]] +category = "select_function" +sql = '''SELECT CONCAT(status, '!') FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..26" + +[[query]] +category = "select_function" +sql = '''SELECT CONCAT(STATUS, '!') + FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..26" + +[[query]] +category = "select_function" +sql = '''select /* c */ concat(status, '!') from orders +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..34" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..34" + +[[query]] +category = "select_function" +sql = '''SELECT CONCAT(STATUS, '!') + FROM ORDERS -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..26" + +[[query]] +category = "select_function" +sql = '''-- a comment +select concat(status, '!') from orders ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..39" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..39" + +[[query]] +category = "select_function" +sql = '''SELECT ROUND(total, 1) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2a7aa27462a52a1a" +result_repository = "5 rows 2a7aa27462a52a1a" + +[[query]] +category = "select_function" +sql = '''-- a comment +SeLECt rOUnD(TotAL, 1) AS v FRom OrDers''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2a7aa27462a52a1a" +result_repository = "5 rows 2a7aa27462a52a1a" + +[[query]] +category = "select_function" +sql = '''select ROUND(total, 1) as v from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2a7aa27462a52a1a" +result_repository = "5 rows 2a7aa27462a52a1a" + +[[query]] +category = "select_function" +sql = '''-- a comment +SELECT roUnD(toTAL, 1) as V from oRdErS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2a7aa27462a52a1a" +result_repository = "5 rows 2a7aa27462a52a1a" + +[[query]] +category = "select_function" +sql = '''seLect roUNd(tOTal, 1) AS V from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2a7aa27462a52a1a" +result_repository = "5 rows 2a7aa27462a52a1a" + +[[query]] +category = "select_function" +sql = '''SELECT ROUND(total, 1) FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2a7aa27462a52a1a" +result_repository = "5 rows 2a7aa27462a52a1a" + +[[query]] +category = "select_function" +sql = '''selecT rounD(toTal, 1) FrOm orDErS +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2a7aa27462a52a1a" +result_repository = "5 rows 2a7aa27462a52a1a" + +[[query]] +category = "select_function" +sql = '''-- a comment +select ROUND(total, 1) from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2a7aa27462a52a1a" +result_repository = "5 rows 2a7aa27462a52a1a" + +[[query]] +category = "select_function" +sql = '''select round(total, 1) + from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2a7aa27462a52a1a" +result_repository = "5 rows 2a7aa27462a52a1a" + +[[query]] +category = "select_function" +sql = '''select ROUND(total, 1) from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 2a7aa27462a52a1a" +result_repository = "5 rows 2a7aa27462a52a1a" + +[[query]] +category = "select_function" +sql = '''SELECT ROUND(total) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows db9202608b66b4de" +result_repository = "5 rows db9202608b66b4de" + +[[query]] +category = "select_function" +sql = '''select ROUND(total) as v from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows db9202608b66b4de" +result_repository = "5 rows db9202608b66b4de" + +[[query]] +category = "select_function" +sql = '''SELECT /* c */ ROUND(TOTAL) AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows db9202608b66b4de" +result_repository = "5 rows db9202608b66b4de" + +[[query]] +category = "select_function" +sql = '''seleCt roUNd(ToTaL) AS v + FROM ORDERs; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows db9202608b66b4de" +result_repository = "5 rows db9202608b66b4de" + +[[query]] +category = "select_function" +sql = '''SELect rOuNd(totAL) aS V + FroM OrDers''' +expect = "translated" +expect_repository = "translated" +result = "5 rows db9202608b66b4de" +result_repository = "5 rows db9202608b66b4de" + +[[query]] +category = "select_function" +sql = '''SELECT ROUND(total) FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows db9202608b66b4de" +result_repository = "5 rows db9202608b66b4de" + +[[query]] +category = "select_function" +sql = '''select ROUND(total) from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows db9202608b66b4de" +result_repository = "5 rows db9202608b66b4de" + +[[query]] +category = "select_function" +sql = '''-- a comment +select ROUND(total) + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows db9202608b66b4de" +result_repository = "5 rows db9202608b66b4de" + +[[query]] +category = "select_function" +sql = '''SELECT ROUND(TOTAL) FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows db9202608b66b4de" +result_repository = "5 rows db9202608b66b4de" + +[[query]] +category = "select_function" +sql = '''SELect RouND(TOTaL) frOM oRDeRs -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows db9202608b66b4de" +result_repository = "5 rows db9202608b66b4de" + +[[query]] +category = "select_function" +sql = '''SELECT ABS(total) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_function" +sql = '''select ABS(total) as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_function" +sql = '''select abs(total) as v from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_function" +sql = '''select abs(total) as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_function" +sql = '''select /* c */ abs(total) as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "select_function" +sql = '''SELECT ABS(total) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_function" +sql = '''-- a comment +selecT ABS(tOtaL) + from "ORDERS"; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..30" + +[[query]] +category = "select_function" +sql = '''SeleCT /* c */ Abs(TotaL) FROm ordErs; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..25" + +[[query]] +category = "select_function" +sql = '''-- a comment +sElECt Abs(tOTAl) + fROm "ORDERS"; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..30" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..30" + +[[query]] +category = "select_function" +sql = '''SeLecT ABS(ToTaL) + frOM "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "select_function" +sql = '''SELECT FLOOR(total) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 487aa255abd8a31c" +result_repository = "5 rows 487aa255abd8a31c" + +[[query]] +category = "select_function" +sql = '''select FLOOR(total) as v from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 487aa255abd8a31c" +result_repository = "5 rows 487aa255abd8a31c" + +[[query]] +category = "select_function" +sql = '''selEct FLoOR(ToTal) as v fRom oRDERs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 487aa255abd8a31c" +result_repository = "5 rows 487aa255abd8a31c" + +[[query]] +category = "select_function" +sql = '''-- a comment +SELECT FLOOR(TOTAL) AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 487aa255abd8a31c" +result_repository = "5 rows 487aa255abd8a31c" + +[[query]] +category = "select_function" +sql = '''select /* c */ FLOOR(total) as v + from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 487aa255abd8a31c" +result_repository = "5 rows 487aa255abd8a31c" + +[[query]] +category = "select_function" +sql = '''SELECT FLOOR(total) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..19" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..19" + +[[query]] +category = "select_function" +sql = '''-- a comment +SELECT FLOOR(TOTAL) FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..32" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..32" + +[[query]] +category = "select_function" +sql = '''-- a comment +select floor(total) + from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..32" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..32" + +[[query]] +category = "select_function" +sql = '''SELECT FLOOR(TOTAL) FROM "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..19" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..19" + +[[query]] +category = "select_function" +sql = '''select fLoor(tOTaL) FRom "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..19" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..19" + +[[query]] +category = "select_function" +sql = '''SELECT CEIL(total) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 5868c92fe3256640" +result_repository = "5 rows 5868c92fe3256640" + +[[query]] +category = "select_function" +sql = '''SELECT CEIL(TOTAL) AS V + FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 5868c92fe3256640" +result_repository = "5 rows 5868c92fe3256640" + +[[query]] +category = "select_function" +sql = '''select CEIL(total) as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 5868c92fe3256640" +result_repository = "5 rows 5868c92fe3256640" + +[[query]] +category = "select_function" +sql = '''-- a comment +SELECT CEIL(TOTAL) AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 5868c92fe3256640" +result_repository = "5 rows 5868c92fe3256640" + +[[query]] +category = "select_function" +sql = '''select ceil(total) as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 5868c92fe3256640" +result_repository = "5 rows 5868c92fe3256640" + +[[query]] +category = "select_function" +sql = '''SELECT CEIL(total) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..18" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..18" + +[[query]] +category = "select_function" +sql = '''select CEIL(total) from orders +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..18" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..18" + +[[query]] +category = "select_function" +sql = '''select ceil(total) from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..18" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..18" + +[[query]] +category = "select_function" +sql = '''select ceil(total) + from orders; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..18" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..18" + +[[query]] +category = "select_function" +sql = '''SEleCt cEiL(TOTal) FroM ordeRS; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..18" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..18" + +[[query]] +category = "select_function" +sql = '''SELECT COALESCE(status, 'none') AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 33482ac8c3d5e2f4" +result_repository = "5 rows 33482ac8c3d5e2f4" + +[[query]] +category = "select_function" +sql = '''-- a comment +select coalesce(status, 'none') as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 33482ac8c3d5e2f4" +result_repository = "5 rows 33482ac8c3d5e2f4" + +[[query]] +category = "select_function" +sql = '''sElect COAleSCe(STATuS, 'none') As v + frOM orDErs -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 33482ac8c3d5e2f4" +result_repository = "5 rows 33482ac8c3d5e2f4" + +[[query]] +category = "select_function" +sql = '''select COALESCE(status, 'none') as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 33482ac8c3d5e2f4" +result_repository = "5 rows 33482ac8c3d5e2f4" + +[[query]] +category = "select_function" +sql = '''SELECT COALESCE(STATUS, 'none') AS V + FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 33482ac8c3d5e2f4" +result_repository = "5 rows 33482ac8c3d5e2f4" + +[[query]] +category = "select_function" +sql = '''SELECT COALESCE(status, 'none') FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..31" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..31" + +[[query]] +category = "select_function" +sql = '''select COALESCE(status, 'none') from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..31" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..31" + +[[query]] +category = "select_function" +sql = '''SELECT COALESCE(STATUS, 'none') + FROM ORDERS -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..31" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..31" + +[[query]] +category = "select_function" +sql = '''SELECT COALESCE(STATUS, 'none') FROM "ORDERS";''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..31" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..31" + +[[query]] +category = "select_function" +sql = '''select COALESCE(status, 'none') + from "ORDERS" +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..31" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..31" + +[[query]] +category = "select_function" +sql = '''SELECT NVL(status, 'none') AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 33482ac8c3d5e2f4" +result_repository = "5 rows 33482ac8c3d5e2f4" + +[[query]] +category = "select_function" +sql = '''-- a comment +select nvl(status, 'none') as v from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 33482ac8c3d5e2f4" +result_repository = "5 rows 33482ac8c3d5e2f4" + +[[query]] +category = "select_function" +sql = '''-- a comment +select nvl(status, 'none') as v from orders ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 33482ac8c3d5e2f4" +result_repository = "5 rows 33482ac8c3d5e2f4" + +[[query]] +category = "select_function" +sql = '''select NVL(status, 'none') as v from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 33482ac8c3d5e2f4" +result_repository = "5 rows 33482ac8c3d5e2f4" + +[[query]] +category = "select_function" +sql = '''sEleCT NvL(StATus, 'none') AS v From ORdERs''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 33482ac8c3d5e2f4" +result_repository = "5 rows 33482ac8c3d5e2f4" + +[[query]] +category = "select_function" +sql = '''SELECT NVL(status, 'none') FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..26" + +[[query]] +category = "select_function" +sql = '''seLect NvL(staTUs, 'none') + FrOM OrDeRS; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..26" + +[[query]] +category = "select_function" +sql = '''SELECT NVL(STATUS, 'none') FROM "ORDERS" -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..26" + +[[query]] +category = "select_function" +sql = '''seLECt NVL(Status, 'none') FrOm OrDerS;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..26" + +[[query]] +category = "select_function" +sql = '''select nvl(status, 'none') from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..26" + +[[query]] +category = "select_function" +sql = '''SELECT NULLIF(status, 'shipped') AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows de61d4000357e16f" +result_repository = "5 rows de61d4000357e16f" + +[[query]] +category = "select_function" +sql = '''-- a comment +sELect nUlLIF(StatUS, 'shipped') aS V FRom "ORDERS";''' +expect = "translated" +expect_repository = "translated" +result = "5 rows de61d4000357e16f" +result_repository = "5 rows de61d4000357e16f" + +[[query]] +category = "select_function" +sql = '''select nullif(status, 'shipped') as v + from "ORDERS" ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows de61d4000357e16f" +result_repository = "5 rows de61d4000357e16f" + +[[query]] +category = "select_function" +sql = '''SELECT NULLIF(STATUS, 'shipped') AS V + FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows de61d4000357e16f" +result_repository = "5 rows de61d4000357e16f" + +[[query]] +category = "select_function" +sql = '''SELECT /* c */ NULLIF(STATUS, 'shipped') AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows de61d4000357e16f" +result_repository = "5 rows de61d4000357e16f" + +[[query]] +category = "select_function" +sql = '''SELECT NULLIF(status, 'shipped') FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..32" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..32" + +[[query]] +category = "select_function" +sql = '''SELECT /* c */ NULLIF(STATUS, 'shipped') FROM ORDERS; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..40" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..40" + +[[query]] +category = "select_function" +sql = '''select NULLIF(status, 'shipped') from "ORDERS" -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..32" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..32" + +[[query]] +category = "select_function" +sql = '''select nullif(status, 'shipped') from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..32" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..32" + +[[query]] +category = "select_function" +sql = '''seLeCt NUlLIf(staTus, 'shipped') frOM oRDERs -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..32" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..32" + +[[query]] +category = "select_function" +sql = '''SELECT IFF(total > 100, 'big', 'small') AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8f6d243de040e64f" +result_repository = "5 rows 8f6d243de040e64f" + +[[query]] +category = "select_function" +sql = '''SELECT /* c */ IFF(TOTAL > 100, 'big', 'small') AS V FROM ORDERS; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8f6d243de040e64f" +result_repository = "5 rows 8f6d243de040e64f" + +[[query]] +category = "select_function" +sql = '''-- a comment +SELECT IFF(TOTAL > 100, 'big', 'small') AS V + FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8f6d243de040e64f" +result_repository = "5 rows 8f6d243de040e64f" + +[[query]] +category = "select_function" +sql = '''-- a comment +select iff(total > 100, 'big', 'small') as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8f6d243de040e64f" +result_repository = "5 rows 8f6d243de040e64f" + +[[query]] +category = "select_function" +sql = '''sELeCT IfF(TOTaL > 100, 'big', 'small') AS V fRom OrDErS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8f6d243de040e64f" +result_repository = "5 rows 8f6d243de040e64f" + +[[query]] +category = "select_function" +sql = '''SELECT IFF(total > 100, 'big', 'small') FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..39" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..39" + +[[query]] +category = "select_function" +sql = '''SELECT IFF(TOTAL > 100, 'big', 'small') FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..39" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..39" + +[[query]] +category = "select_function" +sql = '''SELECT /* c */ IFF(TOTAL > 100, 'big', 'small') FROM ORDERS +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..47" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..47" + +[[query]] +category = "select_function" +sql = '''selECT IFf(TotaL > 100, 'big', 'small') FROm OrDErs -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..39" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..39" + +[[query]] +category = "select_function" +sql = '''select /* c */ IFF(total > 100, 'big', 'small') from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..47" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..47" + +[[query]] +category = "select_function" +sql = '''SELECT DATE_TRUNC('month', ordered_at) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 410c240ac76a593c" +result_repository = "5 rows 410c240ac76a593c" + +[[query]] +category = "select_function" +sql = '''sELeCT dAtE_trunC('month', oRdEREd_At) As V FroM OrdErS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 410c240ac76a593c" +result_repository = "5 rows 410c240ac76a593c" + +[[query]] +category = "select_function" +sql = '''sElEct /* c */ daTe_TRunc('month', ordErED_at) AS V + FROM OrDerS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 410c240ac76a593c" +result_repository = "5 rows 410c240ac76a593c" + +[[query]] +category = "select_function" +sql = '''-- a comment +select DATE_TRUNC('month', ordered_at) as v from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 410c240ac76a593c" +result_repository = "5 rows 410c240ac76a593c" + +[[query]] +category = "select_function" +sql = '''select DATE_TRUNC('month', ordered_at) as v from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 410c240ac76a593c" +result_repository = "5 rows 410c240ac76a593c" + +[[query]] +category = "select_function" +sql = '''SELECT DATE_TRUNC('month', ordered_at) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..38" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..38" + +[[query]] +category = "select_function" +sql = '''select DATE_TRUNC('month', ordered_at) from "ORDERS";''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..38" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..38" + +[[query]] +category = "select_function" +sql = '''SELECT DATE_TRUNC('month', ORDERED_AT) FROM ORDERS;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..38" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..38" + +[[query]] +category = "select_function" +sql = '''select /* c */ date_trunc('month', ordered_at) + from "ORDERS" +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..46" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..46" + +[[query]] +category = "select_function" +sql = '''SELECT DATE_TRUNC('month', ORDERED_AT) FROM ORDERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..38" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..38" + +[[query]] +category = "select_function" +sql = '''SELECT DATEADD(day, 1, ordered_at) AS v FROM orders''' +expect = "refused SQ0008 fn:DATEADD at 7..34" +expect_repository = "translated" +result_repository = "5 rows 4e1743a56a33e771" + +[[query]] +category = "select_function" +sql = '''select DATEADD(day, 1, ordered_at) as v from orders -- trailing comment''' +expect = "refused SQ0008 fn:DATEADD at 7..34" +expect_repository = "translated" +result_repository = "5 rows 4e1743a56a33e771" + +[[query]] +category = "select_function" +sql = '''select dateadd(day, 1, ordered_at) as v from orders''' +expect = "refused SQ0008 fn:DATEADD at 7..34" +expect_repository = "translated" +result_repository = "5 rows 4e1743a56a33e771" + +[[query]] +category = "select_function" +sql = '''-- a comment +SELECT DATEADD(DAY, 1, ORDERED_AT) AS V FROM "ORDERS";''' +expect = "refused SQ0008 fn:DATEADD at 20..47" +expect_repository = "translated" +result_repository = "5 rows 4e1743a56a33e771" + +[[query]] +category = "select_function" +sql = '''SELECT DATEADD(DAY, 1, ORDERED_AT) AS V + FROM "ORDERS" -- trailing comment''' +expect = "refused SQ0008 fn:DATEADD at 7..34" +expect_repository = "translated" +result_repository = "5 rows 4e1743a56a33e771" + +[[query]] +category = "select_function" +sql = '''SELECT DATEADD(day, 1, ordered_at) FROM orders''' +expect = "refused SQ0008 fn:DATEADD at 7..34" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..34" + +[[query]] +category = "select_function" +sql = '''select dateadd(day, 1, ordered_at) from orders +''' +expect = "refused SQ0008 fn:DATEADD at 7..34" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..34" + +[[query]] +category = "select_function" +sql = '''selecT dATeAdD(dAy, 1, ORDERed_At) fRom orDErS''' +expect = "refused SQ0008 fn:DATEADD at 7..34" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..34" + +[[query]] +category = "select_function" +sql = '''-- a comment +SELECT DATEADD(DAY, 1, ORDERED_AT) FROM ORDERS;''' +expect = "refused SQ0008 fn:DATEADD at 20..47" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..47" + +[[query]] +category = "select_function" +sql = '''SELECT /* c */ DATEADD(DAY, 1, ORDERED_AT) FROM ORDERS''' +expect = "refused SQ0008 fn:DATEADD at 15..42" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..42" + +[[query]] +category = "select_function" +sql = '''SELECT TO_DATE(ordered_at) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b61d9f6afbfde469" +result_repository = "5 rows b61d9f6afbfde469" + +[[query]] +category = "select_function" +sql = '''SELECT TO_DATE(ORDERED_AT) AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b61d9f6afbfde469" +result_repository = "5 rows b61d9f6afbfde469" + +[[query]] +category = "select_function" +sql = '''SELECT /* c */ TO_DATE(ORDERED_AT) AS V FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b61d9f6afbfde469" +result_repository = "5 rows b61d9f6afbfde469" + +[[query]] +category = "select_function" +sql = '''SELECT TO_DATE(ORDERED_AT) AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b61d9f6afbfde469" +result_repository = "5 rows b61d9f6afbfde469" + +[[query]] +category = "select_function" +sql = '''SELECT TO_DATE(ordered_at) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..26" + +[[query]] +category = "select_function" +sql = '''SELECT TO_DATE(ORDERED_AT) FROM ORDERS -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..26" + +[[query]] +category = "select_function" +sql = '''-- a comment +sELECt tO_dATe(OrDERED_AT) FrOM ORDErS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..39" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..39" + +[[query]] +category = "select_function" +sql = '''select TO_DATE(ordered_at) + from orders +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..26" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..26" + +[[query]] +category = "select_function" +sql = '''SELECT YEAR(ordered_at) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows d11632b4ef943ad1" +result_repository = "5 rows d11632b4ef943ad1" + +[[query]] +category = "select_function" +sql = '''select year(ordered_at) as v from "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows d11632b4ef943ad1" +result_repository = "5 rows d11632b4ef943ad1" + +[[query]] +category = "select_function" +sql = '''select YEAR(ordered_at) as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows d11632b4ef943ad1" +result_repository = "5 rows d11632b4ef943ad1" + +[[query]] +category = "select_function" +sql = '''SELECT /* c */ YEAR(ORDERED_AT) AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows d11632b4ef943ad1" +result_repository = "5 rows d11632b4ef943ad1" + +[[query]] +category = "select_function" +sql = '''SELECT /* c */ YEAR(ORDERED_AT) AS V FROM ORDERS +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows d11632b4ef943ad1" +result_repository = "5 rows d11632b4ef943ad1" + +[[query]] +category = "select_function" +sql = '''SELECT YEAR(ordered_at) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_function" +sql = '''select year(ordered_at) from orders +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_function" +sql = '''SelEcT yeAr(orDEREd_AT) FrOM ORDERs -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_function" +sql = '''select /* c */ YEAR(ordered_at) + from "ORDERS";''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..31" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..31" + +[[query]] +category = "select_function" +sql = '''-- a comment +select year(ordered_at) from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..36" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..36" + +[[query]] +category = "select_function" +sql = '''SELECT MONTH(ordered_at) AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows a0a2f8dfc2d08e29" +result_repository = "5 rows a0a2f8dfc2d08e29" + +[[query]] +category = "select_function" +sql = '''sEleCt moNth(oRDErEd_At) as V fRom ORDeRS ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows a0a2f8dfc2d08e29" +result_repository = "5 rows a0a2f8dfc2d08e29" + +[[query]] +category = "select_function" +sql = '''SELECT MONTH(ORDERED_AT) AS V FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows a0a2f8dfc2d08e29" +result_repository = "5 rows a0a2f8dfc2d08e29" + +[[query]] +category = "select_function" +sql = '''SELECT /* c */ MONTH(ORDERED_AT) AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows a0a2f8dfc2d08e29" +result_repository = "5 rows a0a2f8dfc2d08e29" + +[[query]] +category = "select_function" +sql = '''sElECT /* c */ monTh(orDeRed_aT) aS v FROm "ORDERS";''' +expect = "translated" +expect_repository = "translated" +result = "5 rows a0a2f8dfc2d08e29" +result_repository = "5 rows a0a2f8dfc2d08e29" + +[[query]] +category = "select_function" +sql = '''SELECT MONTH(ordered_at) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..24" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..24" + +[[query]] +category = "select_function" +sql = '''SELect MOnth(ORdEred_aT) FRoM oRDerS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..24" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..24" + +[[query]] +category = "select_function" +sql = '''select month(ordered_at) from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..24" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..24" + +[[query]] +category = "select_function" +sql = '''SELEcT /* c */ MOnTh(ORDered_At) fROM oRdERS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..32" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..32" + +[[query]] +category = "select_function" +sql = '''select MONTH(ordered_at) from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..24" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..24" + +[[query]] +category = "select_function" +sql = '''SELECT ordered_at::DATE AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b61d9f6afbfde469" +result_repository = "5 rows b61d9f6afbfde469" + +[[query]] +category = "select_function" +sql = '''-- a comment +SElECt ordered_at::date As V frOM "ORDERS";''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b61d9f6afbfde469" +result_repository = "5 rows b61d9f6afbfde469" + +[[query]] +category = "select_function" +sql = '''select /* c */ ordered_at::date as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b61d9f6afbfde469" +result_repository = "5 rows b61d9f6afbfde469" + +[[query]] +category = "select_function" +sql = '''SELECT /* c */ ORDERED_AT::DATE AS V FROM "ORDERS";''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b61d9f6afbfde469" +result_repository = "5 rows b61d9f6afbfde469" + +[[query]] +category = "select_function" +sql = '''select ordered_at::date as v + from "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows b61d9f6afbfde469" +result_repository = "5 rows b61d9f6afbfde469" + +[[query]] +category = "select_function" +sql = '''SELECT ordered_at::DATE FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_function" +sql = '''select /* c */ ordered_at::date from orders; +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..31" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..31" + +[[query]] +category = "select_function" +sql = '''select ordered_at::DATE from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_function" +sql = '''SELECT ORDERED_AT::DATE + FROM ORDERS ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_function" +sql = '''SELECT ORDERED_AT::DATE + FROM ORDERS +''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..23" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..23" + +[[query]] +category = "select_function" +sql = '''SELECT CASE WHEN total > 100 THEN 'big' ELSE 'small' END AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8f6d243de040e64f" +result_repository = "5 rows 8f6d243de040e64f" + +[[query]] +category = "select_function" +sql = '''SElEcT cAsE wHEn toTal > 100 thEN 'big' eLse 'small' END AS V fRom "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8f6d243de040e64f" +result_repository = "5 rows 8f6d243de040e64f" + +[[query]] +category = "select_function" +sql = '''sElEcT CasE WHEn TotaL > 100 ThEN 'big' ELse 'small' eNd AS v fRom oRdeRs -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8f6d243de040e64f" +result_repository = "5 rows 8f6d243de040e64f" + +[[query]] +category = "select_function" +sql = '''SELECT CASE WHEN TOTAL > 100 THEN 'big' ELSE 'small' END AS V FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8f6d243de040e64f" +result_repository = "5 rows 8f6d243de040e64f" + +[[query]] +category = "select_function" +sql = '''sElECt /* c */ cAse wHeN TOtAL > 100 tHen 'big' ElSE 'small' eND AS v FRoM "ORDERS" ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8f6d243de040e64f" +result_repository = "5 rows 8f6d243de040e64f" + +[[query]] +category = "select_function" +sql = '''SELECT CASE WHEN total > 100 THEN 'big' ELSE 'small' END FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..56" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..56" + +[[query]] +category = "select_function" +sql = '''-- a comment +select case when total > 100 then 'big' else 'small' end from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 20..69" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 20..69" + +[[query]] +category = "select_function" +sql = '''SELECT CASE WHEN TOTAL > 100 THEN 'big' ELSE 'small' END FROM ORDERS -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..56" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..56" + +[[query]] +category = "select_function" +sql = '''select case when total > 100 then 'big' else 'small' end from orders ;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..56" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..56" + +[[query]] +category = "select_function" +sql = '''SELECT CASE WHEN TOTAL > 100 THEN 'big' ELSE 'small' END FROM ORDERS -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..56" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..56" + +[[query]] +category = "select_function" +sql = '''SELECT CASE status WHEN 'shipped' THEN 1 ELSE 0 END AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 466f1a074e5c58eb" +result_repository = "5 rows 466f1a074e5c58eb" + +[[query]] +category = "select_function" +sql = '''SELECT /* c */ CASE STATUS WHEN 'shipped' THEN 1 ELSE 0 END AS V + FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 466f1a074e5c58eb" +result_repository = "5 rows 466f1a074e5c58eb" + +[[query]] +category = "select_function" +sql = '''SelEcT /* c */ CAsE sTatus WHeN 'shipped' ThEn 1 eLSE 0 end As v FRom ORDerS +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 466f1a074e5c58eb" +result_repository = "5 rows 466f1a074e5c58eb" + +[[query]] +category = "select_function" +sql = '''-- a comment +select case status when 'shipped' then 1 else 0 end as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 466f1a074e5c58eb" +result_repository = "5 rows 466f1a074e5c58eb" + +[[query]] +category = "select_function" +sql = '''select case status when 'shipped' then 1 else 0 end as v + from orders +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 466f1a074e5c58eb" +result_repository = "5 rows 466f1a074e5c58eb" + +[[query]] +category = "select_function" +sql = '''SELECT CASE status WHEN 'shipped' THEN 1 ELSE 0 END FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..51" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..51" + +[[query]] +category = "select_function" +sql = '''SeLect cASe statuS wHen 'shipped' tHen 1 eLse 0 eND FrOM oRDeRs''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..51" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..51" + +[[query]] +category = "select_function" +sql = '''seleCt Case STAtus WheN 'shipped' thEN 1 eLSe 0 ENd fRoM OrdeRs -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..51" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..51" + +[[query]] +category = "select_function" +sql = '''sELEcT casE staTus wHEN 'shipped' tHEn 1 ELSe 0 ENd From oRDeRS''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..51" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..51" + +[[query]] +category = "select_function" +sql = '''SELECT /* c */ CASE STATUS WHEN 'shipped' THEN 1 ELSE 0 END FROM "ORDERS"''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..59" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..59" + +[[query]] +category = "aggregate" +sql = '''SELECT COUNT(*) AS n FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''-- a comment +select COUNT(*) as n from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''select COUNT(*) as n + from orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''select /* c */ count(*) as n from orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''select /* c */ count(*) as n from orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''SELECT COUNT(*) FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''select /* c */ count(*) + from orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''SELECT COUNT(*) + FROM ORDERS +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''select COUNT(*) + from "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''SelECt /* c */ COUNT(*) fRoM OrDErS +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "group_by" +sql = '''SELECT status, COUNT(*) AS n FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''select status, count(*) as n + from orders + group by status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''SElect stATUS, cOUNt(*) aS n FrOm "ORDERS" gROuP BY StATUS''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''select status, COUNT(*) as n from orders group by status -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''SElEcT sTAtus, cOUNT(*) aS N FROm ORdeRS gRouP bY STatUS''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''SELECT status, COUNT(*) FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''select status, count(*) from orders group by status -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''select status, count(*) + from orders + group by status -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''-- a comment +select status, count(*) from orders group by status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''-- a comment +SELECT STATUS, COUNT(*) + FROM ORDERS + GROUP BY STATUS +''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''SELECT status, COUNT(*) AS n FROM orders GROUP BY 1 ORDER BY 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''select status, count(*) as n from orders group by 1 order by 1 -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''select status, COUNT(*) as n + from orders + group by 1 + order by 1; +''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''SELECT STATUS, COUNT(*) AS N FROM "ORDERS" GROUP BY 1 ORDER BY 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''-- a comment +select status, COUNT(*) as n from orders group by 1 order by 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "aggregate" +sql = '''SELECT COUNT(order_id) AS n FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''SELECT COUNT(ORDER_ID) AS N FROM ORDERS;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''select count(order_id) as n from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''SELECT COUNT(ORDER_ID) AS N FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''select count(order_id) as n from "ORDERS" ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''SELECT COUNT(order_id) FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''-- a comment +SELECT COUNT(ORDER_ID) FROM "ORDERS" +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''SELEcT /* c */ CoUNt(OrdEr_id) fROm ORDerS''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''select COUNT(order_id) from orders +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "aggregate" +sql = '''-- a comment +select COUNT(order_id) from orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "group_by" +sql = '''SELECT status, COUNT(order_id) AS n FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''SELECT STATUS, COUNT(ORDER_ID) AS N + FROM "ORDERS" + GROUP BY STATUS''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''SELECT STATUS, COUNT(ORDER_ID) AS N + FROM ORDERS + GROUP BY STATUS''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''select /* c */ status, COUNT(order_id) as n from orders group by status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''SELECT STATUS, COUNT(ORDER_ID) AS N FROM ORDERS GROUP BY STATUS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''SELECT status, COUNT(order_id) FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''SELECT STATUS, COUNT(ORDER_ID) FROM "ORDERS" GROUP BY STATUS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''-- a comment +select status, count(order_id) from "ORDERS" group by status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''sElECt /* c */ sTaTUs, CounT(oRDER_iD) froM OrDeRS GrOup by stATus''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''select status, count(order_id) + from orders + group by status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''SELECT status, COUNT(order_id) AS n FROM orders GROUP BY 1 ORDER BY 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''-- a comment +select status, count(order_id) as n from "ORDERS" group by 1 order by 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''-- a comment +SELECT STATUS, COUNT(ORDER_ID) AS N FROM ORDERS GROUP BY 1 ORDER BY 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''SELECt StaTUS, cOUnt(ordeR_ID) aS N FROM "ORDERS" gRoUP BY 1 oRDEr bY 1 -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "group_by" +sql = '''select /* c */ status, count(order_id) as n from orders group by 1 order by 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 257f0a3cab639fb7" +result_repository = "3 rows 257f0a3cab639fb7" + +[[query]] +category = "aggregate" +sql = '''SELECT COUNT(DISTINCT customer_id) AS n FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 4e07408562bedb8b" +result_repository = "1 rows 4e07408562bedb8b" + +[[query]] +category = "aggregate" +sql = '''select /* c */ COUNT(distinct customer_id) as n from orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 4e07408562bedb8b" +result_repository = "1 rows 4e07408562bedb8b" + +[[query]] +category = "aggregate" +sql = '''select count(distinct customer_id) as n from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 4e07408562bedb8b" +result_repository = "1 rows 4e07408562bedb8b" + +[[query]] +category = "aggregate" +sql = '''-- a comment +SELECT COUNT(DISTINCT CUSTOMER_ID) AS N FROM ORDERS;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 4e07408562bedb8b" +result_repository = "1 rows 4e07408562bedb8b" + +[[query]] +category = "aggregate" +sql = '''select count(distinct customer_id) as n from orders;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 4e07408562bedb8b" +result_repository = "1 rows 4e07408562bedb8b" + +[[query]] +category = "aggregate" +sql = '''SELECT COUNT(DISTINCT customer_id) FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 4e07408562bedb8b" +result_repository = "1 rows 4e07408562bedb8b" + +[[query]] +category = "aggregate" +sql = '''SELECT COUNT(DISTINCT CUSTOMER_ID) + FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 4e07408562bedb8b" +result_repository = "1 rows 4e07408562bedb8b" + +[[query]] +category = "aggregate" +sql = '''SELECT COUNT(DISTINCT CUSTOMER_ID) FROM "ORDERS" +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 4e07408562bedb8b" +result_repository = "1 rows 4e07408562bedb8b" + +[[query]] +category = "aggregate" +sql = '''SELeCT cOunt(DiSTiNcT cuSTomer_ID) fROm ORders; +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 4e07408562bedb8b" +result_repository = "1 rows 4e07408562bedb8b" + +[[query]] +category = "aggregate" +sql = '''select count(distinct customer_id) from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 4e07408562bedb8b" +result_repository = "1 rows 4e07408562bedb8b" + +[[query]] +category = "group_by" +sql = '''SELECT status, COUNT(DISTINCT customer_id) AS n FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 47d02169a2aecca5" +result_repository = "3 rows 47d02169a2aecca5" + +[[query]] +category = "group_by" +sql = '''-- a comment +sELeCT stATus, cOUnt(DiSTINct CUSTomeR_id) as n FRoM OrDErS GRoup BY STAtus; +''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 47d02169a2aecca5" +result_repository = "3 rows 47d02169a2aecca5" + +[[query]] +category = "group_by" +sql = '''seleCT /* c */ STaTUs, Count(DisTInCT CustomER_id) As n FroM orDeRs gRoUp bY StaTuS''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 47d02169a2aecca5" +result_repository = "3 rows 47d02169a2aecca5" + +[[query]] +category = "group_by" +sql = '''select status, count(distinct customer_id) as n from orders group by status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 47d02169a2aecca5" +result_repository = "3 rows 47d02169a2aecca5" + +[[query]] +category = "group_by" +sql = '''-- a comment +select status, COUNT(distinct customer_id) as n from orders group by status ;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 47d02169a2aecca5" +result_repository = "3 rows 47d02169a2aecca5" + +[[query]] +category = "group_by" +sql = '''SELECT status, COUNT(DISTINCT customer_id) FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 47d02169a2aecca5" +result_repository = "3 rows 47d02169a2aecca5" + +[[query]] +category = "group_by" +sql = '''-- a comment +select status, count(distinct customer_id) from orders group by status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 47d02169a2aecca5" +result_repository = "3 rows 47d02169a2aecca5" + +[[query]] +category = "group_by" +sql = '''-- a comment +select status, count(distinct customer_id) from "ORDERS" group by status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 47d02169a2aecca5" +result_repository = "3 rows 47d02169a2aecca5" + +[[query]] +category = "group_by" +sql = '''select /* c */ status, COUNT(distinct customer_id) + from orders + group by status ;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 47d02169a2aecca5" +result_repository = "3 rows 47d02169a2aecca5" + +[[query]] +category = "group_by" +sql = '''seLeCt /* c */ StaTuS, CounT(DISTiNcT cusTOMer_ID) fRoM "ORDERS" GrOuP BY stAtus''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 47d02169a2aecca5" +result_repository = "3 rows 47d02169a2aecca5" + +[[query]] +category = "group_by" +sql = '''SELECT status, COUNT(DISTINCT customer_id) AS n FROM orders GROUP BY 1 ORDER BY 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 47d02169a2aecca5" +result_repository = "3 rows 47d02169a2aecca5" + +[[query]] +category = "group_by" +sql = '''select status, count(distinct customer_id) as n from orders group by 1 order by 1 -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 47d02169a2aecca5" +result_repository = "3 rows 47d02169a2aecca5" + +[[query]] +category = "group_by" +sql = '''SELECT STATUS, COUNT(DISTINCT CUSTOMER_ID) AS N + FROM ORDERS + GROUP BY 1 + ORDER BY 1;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 47d02169a2aecca5" +result_repository = "3 rows 47d02169a2aecca5" + +[[query]] +category = "group_by" +sql = '''-- a comment +SELecT staTUS, counT(diSTinct CUstOMER_id) As N fRoM ORDerS grOuP By 1 orDeR by 1;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 47d02169a2aecca5" +result_repository = "3 rows 47d02169a2aecca5" + +[[query]] +category = "group_by" +sql = '''SelECt statUS, COUNT(disTiNCT CUStomEr_Id) as N FRoM oRdeRS grOuP by 1 ORdEr bY 1; +''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 47d02169a2aecca5" +result_repository = "3 rows 47d02169a2aecca5" + +[[query]] +category = "aggregate" +sql = '''SELECT SUM(total) AS n FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows a7dc5ba37b78d03d" +result_repository = "1 rows a7dc5ba37b78d03d" + +[[query]] +category = "aggregate" +sql = '''select sum(total) as n from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows a7dc5ba37b78d03d" +result_repository = "1 rows a7dc5ba37b78d03d" + +[[query]] +category = "aggregate" +sql = '''-- a comment +select SUM(total) as n from orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows a7dc5ba37b78d03d" +result_repository = "1 rows a7dc5ba37b78d03d" + +[[query]] +category = "aggregate" +sql = '''-- a comment +seLEcT SUm(toTAl) AS N FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "1 rows a7dc5ba37b78d03d" +result_repository = "1 rows a7dc5ba37b78d03d" + +[[query]] +category = "aggregate" +sql = '''select SUM(total) as n from orders;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows a7dc5ba37b78d03d" +result_repository = "1 rows a7dc5ba37b78d03d" + +[[query]] +category = "aggregate" +sql = '''SELECT SUM(total) FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows a7dc5ba37b78d03d" +result_repository = "1 rows a7dc5ba37b78d03d" + +[[query]] +category = "aggregate" +sql = '''-- a comment +seleCt sum(ToTal) FROM OrDeRS ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows a7dc5ba37b78d03d" +result_repository = "1 rows a7dc5ba37b78d03d" + +[[query]] +category = "aggregate" +sql = '''select SUM(total) from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows a7dc5ba37b78d03d" +result_repository = "1 rows a7dc5ba37b78d03d" + +[[query]] +category = "aggregate" +sql = '''select /* c */ SUM(total) from orders ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows a7dc5ba37b78d03d" +result_repository = "1 rows a7dc5ba37b78d03d" + +[[query]] +category = "aggregate" +sql = '''select SUM(total) from orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows a7dc5ba37b78d03d" +result_repository = "1 rows a7dc5ba37b78d03d" + +[[query]] +category = "group_by" +sql = '''SELECT status, SUM(total) AS n FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 2b4844f53251462a" +result_repository = "3 rows 2b4844f53251462a" + +[[query]] +category = "group_by" +sql = '''-- a comment +sElect sTaTUs, suM(TOTAL) AS N FrOm oRDeRS groUp BY statUS''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 2b4844f53251462a" +result_repository = "3 rows 2b4844f53251462a" + +[[query]] +category = "group_by" +sql = '''SELECT STATUS, SUM(TOTAL) AS N FROM ORDERS GROUP BY STATUS;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 2b4844f53251462a" +result_repository = "3 rows 2b4844f53251462a" + +[[query]] +category = "group_by" +sql = '''sELECt stATuS, Sum(tOtal) as N + from "ORDERS" + GroUp bY STatUS +''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 2b4844f53251462a" +result_repository = "3 rows 2b4844f53251462a" + +[[query]] +category = "group_by" +sql = '''-- a comment +select status, sum(total) as n from orders group by status +''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 2b4844f53251462a" +result_repository = "3 rows 2b4844f53251462a" + +[[query]] +category = "group_by" +sql = '''SELECT status, SUM(total) FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 2b4844f53251462a" +result_repository = "3 rows 2b4844f53251462a" + +[[query]] +category = "group_by" +sql = '''select status, SUM(total) from orders group by status;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 2b4844f53251462a" +result_repository = "3 rows 2b4844f53251462a" + +[[query]] +category = "group_by" +sql = '''SelecT STAtus, SUM(toTal) frOm "ORDERS" group By Status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 2b4844f53251462a" +result_repository = "3 rows 2b4844f53251462a" + +[[query]] +category = "group_by" +sql = '''SELecT StATus, sum(TotaL) fRoM oRdERS grOuP BY STatuS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 2b4844f53251462a" +result_repository = "3 rows 2b4844f53251462a" + +[[query]] +category = "group_by" +sql = '''select status, SUM(total) + from orders + group by status -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 2b4844f53251462a" +result_repository = "3 rows 2b4844f53251462a" + +[[query]] +category = "group_by" +sql = '''SELECT status, SUM(total) AS n FROM orders GROUP BY 1 ORDER BY 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 2b4844f53251462a" +result_repository = "3 rows 2b4844f53251462a" + +[[query]] +category = "group_by" +sql = '''SELECT STATUS, SUM(TOTAL) AS N FROM ORDERS GROUP BY 1 ORDER BY 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 2b4844f53251462a" +result_repository = "3 rows 2b4844f53251462a" + +[[query]] +category = "group_by" +sql = '''select status, SUM(total) as n from orders group by 1 order by 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 2b4844f53251462a" +result_repository = "3 rows 2b4844f53251462a" + +[[query]] +category = "group_by" +sql = '''select /* c */ status, sum(total) as n from orders group by 1 order by 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 2b4844f53251462a" +result_repository = "3 rows 2b4844f53251462a" + +[[query]] +category = "group_by" +sql = '''select status, SUM(total) as n from "ORDERS" group by 1 order by 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 2b4844f53251462a" +result_repository = "3 rows 2b4844f53251462a" + +[[query]] +category = "aggregate" +sql = '''SELECT AVG(total) AS n FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows f37288bef1b9c1a3" +result_repository = "1 rows f37288bef1b9c1a3" + +[[query]] +category = "aggregate" +sql = '''SELECT AVG(TOTAL) AS N FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "1 rows f37288bef1b9c1a3" +result_repository = "1 rows f37288bef1b9c1a3" + +[[query]] +category = "aggregate" +sql = '''SElecT /* c */ avg(totaL) As N froM OrdErS''' +expect = "translated" +expect_repository = "translated" +result = "1 rows f37288bef1b9c1a3" +result_repository = "1 rows f37288bef1b9c1a3" + +[[query]] +category = "aggregate" +sql = '''SeleCt aVG(TotAL) as N frOm "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "1 rows f37288bef1b9c1a3" +result_repository = "1 rows f37288bef1b9c1a3" + +[[query]] +category = "aggregate" +sql = '''select AVG(toTAL) as N FROm orDerS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows f37288bef1b9c1a3" +result_repository = "1 rows f37288bef1b9c1a3" + +[[query]] +category = "aggregate" +sql = '''SELECT AVG(total) FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows f37288bef1b9c1a3" +result_repository = "1 rows f37288bef1b9c1a3" + +[[query]] +category = "aggregate" +sql = '''SELECT AVG(TOTAL) FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "1 rows f37288bef1b9c1a3" +result_repository = "1 rows f37288bef1b9c1a3" + +[[query]] +category = "aggregate" +sql = '''SELECT /* c */ AVG(TOTAL) FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "1 rows f37288bef1b9c1a3" +result_repository = "1 rows f37288bef1b9c1a3" + +[[query]] +category = "aggregate" +sql = '''sElECt AVg(TotaL) FRom "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows f37288bef1b9c1a3" +result_repository = "1 rows f37288bef1b9c1a3" + +[[query]] +category = "aggregate" +sql = '''-- a comment +select avg(total) + from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows f37288bef1b9c1a3" +result_repository = "1 rows f37288bef1b9c1a3" + +[[query]] +category = "group_by" +sql = '''SELECT status, AVG(total) AS n FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 97f6c2d31bdd7c7d" +result_repository = "3 rows 97f6c2d31bdd7c7d" + +[[query]] +category = "group_by" +sql = '''select /* c */ status, avg(total) as n from orders group by status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 97f6c2d31bdd7c7d" +result_repository = "3 rows 97f6c2d31bdd7c7d" + +[[query]] +category = "group_by" +sql = '''select status, AVG(total) as n from orders group by status -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 97f6c2d31bdd7c7d" +result_repository = "3 rows 97f6c2d31bdd7c7d" + +[[query]] +category = "group_by" +sql = '''sELect /* c */ sTAtus, Avg(TOtAL) aS N FROM oRders grouP BY statUs''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 97f6c2d31bdd7c7d" +result_repository = "3 rows 97f6c2d31bdd7c7d" + +[[query]] +category = "group_by" +sql = '''select status, AVG(total) as n from orders group by status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 97f6c2d31bdd7c7d" +result_repository = "3 rows 97f6c2d31bdd7c7d" + +[[query]] +category = "group_by" +sql = '''SELECT status, AVG(total) FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 97f6c2d31bdd7c7d" +result_repository = "3 rows 97f6c2d31bdd7c7d" + +[[query]] +category = "group_by" +sql = '''select status, AVG(total) from "ORDERS" group by status -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 97f6c2d31bdd7c7d" +result_repository = "3 rows 97f6c2d31bdd7c7d" + +[[query]] +category = "group_by" +sql = '''select status, AVG(total) from orders group by status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 97f6c2d31bdd7c7d" +result_repository = "3 rows 97f6c2d31bdd7c7d" + +[[query]] +category = "group_by" +sql = '''select status, AVG(total) + from orders + group by status -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 97f6c2d31bdd7c7d" +result_repository = "3 rows 97f6c2d31bdd7c7d" + +[[query]] +category = "group_by" +sql = '''seLECt staTUs, aVG(TotaL) FrOM "ORDERS" grOup By StaTus -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 97f6c2d31bdd7c7d" +result_repository = "3 rows 97f6c2d31bdd7c7d" + +[[query]] +category = "group_by" +sql = '''SELECT status, AVG(total) AS n FROM orders GROUP BY 1 ORDER BY 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 97f6c2d31bdd7c7d" +result_repository = "3 rows 97f6c2d31bdd7c7d" + +[[query]] +category = "group_by" +sql = '''select status, avg(total) as n + from "ORDERS" + group by 1 + order by 1 -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 97f6c2d31bdd7c7d" +result_repository = "3 rows 97f6c2d31bdd7c7d" + +[[query]] +category = "group_by" +sql = '''select status, avg(total) as n from orders group by 1 order by 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 97f6c2d31bdd7c7d" +result_repository = "3 rows 97f6c2d31bdd7c7d" + +[[query]] +category = "group_by" +sql = '''sELECT StATUS, aVG(TOtal) as n froM OrdeRS GROUP by 1 oRDeR By 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 97f6c2d31bdd7c7d" +result_repository = "3 rows 97f6c2d31bdd7c7d" + +[[query]] +category = "group_by" +sql = '''select status, avg(total) as n from orders group by 1 order by 1 ;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 97f6c2d31bdd7c7d" +result_repository = "3 rows 97f6c2d31bdd7c7d" + +[[query]] +category = "aggregate" +sql = '''SELECT MIN(total) AS n FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows abd961d36499067f" +result_repository = "1 rows abd961d36499067f" + +[[query]] +category = "aggregate" +sql = '''Select Min(toTal) aS n FrOM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "1 rows abd961d36499067f" +result_repository = "1 rows abd961d36499067f" + +[[query]] +category = "aggregate" +sql = '''select min(total) as n from orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows abd961d36499067f" +result_repository = "1 rows abd961d36499067f" + +[[query]] +category = "aggregate" +sql = '''-- a comment +select min(total) as n from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "1 rows abd961d36499067f" +result_repository = "1 rows abd961d36499067f" + +[[query]] +category = "aggregate" +sql = '''SELECT MIN(TOTAL) AS N FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows abd961d36499067f" +result_repository = "1 rows abd961d36499067f" + +[[query]] +category = "aggregate" +sql = '''SELECT MIN(total) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "aggregate" +sql = '''sElEcT MIn(tOTaL) + FROm "ORDERS";''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "aggregate" +sql = '''select MIN(total) from orders -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "aggregate" +sql = '''SELECT MIN(TOTAL) FROM ORDERS;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "aggregate" +sql = '''select /* c */ MIN(total) from orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..25" + +[[query]] +category = "group_by" +sql = '''SELECT status, MIN(total) AS n FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ad01b79b15b2ed75" +result_repository = "3 rows ad01b79b15b2ed75" + +[[query]] +category = "group_by" +sql = '''select status, min(total) as n + from orders + group by status; +''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ad01b79b15b2ed75" +result_repository = "3 rows ad01b79b15b2ed75" + +[[query]] +category = "group_by" +sql = '''SELECT STATUS, MIN(TOTAL) AS N FROM ORDERS GROUP BY STATUS''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ad01b79b15b2ed75" +result_repository = "3 rows ad01b79b15b2ed75" + +[[query]] +category = "group_by" +sql = '''sEleCt sTatuS, MIN(tOTaL) AS n fROm ordErs GrOup by sTaTuS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ad01b79b15b2ed75" +result_repository = "3 rows ad01b79b15b2ed75" + +[[query]] +category = "group_by" +sql = '''SELECT status, MIN(total) FROM orders GROUP BY status''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..25" + +[[query]] +category = "group_by" +sql = '''selEcT status, MIn(TotAl) + FrOM OrDErs + GRoUp by StatUs''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..25" + +[[query]] +category = "group_by" +sql = '''select status, MIN(total) from orders group by status -- trailing comment''' +expect = "refused SQ0009 syntax:unaliased_output_name at 15..25" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 15..25" + +[[query]] +category = "group_by" +sql = '''-- a comment +select status, min(total) from orders group by status;''' +expect = "refused SQ0009 syntax:unaliased_output_name at 28..38" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 28..38" + +[[query]] +category = "group_by" +sql = '''SELECT status, MIN(total) AS n FROM orders GROUP BY 1 ORDER BY 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ad01b79b15b2ed75" +result_repository = "3 rows ad01b79b15b2ed75" + +[[query]] +category = "group_by" +sql = '''sElEct /* c */ StAtuS, Min(ToTaL) As n + FrOM OrdErS + GRoUp BY 1 + OrdeR BY 1 ;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ad01b79b15b2ed75" +result_repository = "3 rows ad01b79b15b2ed75" + +[[query]] +category = "group_by" +sql = '''select /* c */ status, MIN(total) as n + from orders + group by 1 + order by 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ad01b79b15b2ed75" +result_repository = "3 rows ad01b79b15b2ed75" + +[[query]] +category = "group_by" +sql = '''SeLEcT stAtus, min(TOTal) as n + frOm Orders + grOuP By 1 + Order By 1; +''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ad01b79b15b2ed75" +result_repository = "3 rows ad01b79b15b2ed75" + +[[query]] +category = "group_by" +sql = '''SeLECt /* c */ STATUs, min(tOtAl) aS n FROm ORDeRS GRouP By 1 Order BY 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ad01b79b15b2ed75" +result_repository = "3 rows ad01b79b15b2ed75" + +[[query]] +category = "aggregate" +sql = '''SELECT MAX(ordered_at) AS n FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 7e47063dfe3a3a9c" +result_repository = "1 rows 7e47063dfe3a3a9c" + +[[query]] +category = "aggregate" +sql = '''SELECT MAX(ORDERED_AT) AS N + FROM ORDERS;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 7e47063dfe3a3a9c" +result_repository = "1 rows 7e47063dfe3a3a9c" + +[[query]] +category = "aggregate" +sql = '''select /* c */ max(ordered_at) as n from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 7e47063dfe3a3a9c" +result_repository = "1 rows 7e47063dfe3a3a9c" + +[[query]] +category = "aggregate" +sql = '''select max(ordered_at) as n + from "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 7e47063dfe3a3a9c" +result_repository = "1 rows 7e47063dfe3a3a9c" + +[[query]] +category = "aggregate" +sql = '''seLect mAx(ORdERED_At) AS N + FroM OrdErS ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 7e47063dfe3a3a9c" +result_repository = "1 rows 7e47063dfe3a3a9c" + +[[query]] +category = "aggregate" +sql = '''SELECT MAX(ordered_at) FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 7e47063dfe3a3a9c" +result_repository = "1 rows 7e47063dfe3a3a9c" + +[[query]] +category = "aggregate" +sql = '''select MAX(ordered_at) from "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 7e47063dfe3a3a9c" +result_repository = "1 rows 7e47063dfe3a3a9c" + +[[query]] +category = "aggregate" +sql = '''SELECT MAX(ORDERED_AT) FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 7e47063dfe3a3a9c" +result_repository = "1 rows 7e47063dfe3a3a9c" + +[[query]] +category = "aggregate" +sql = '''select max(ordered_at) from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 7e47063dfe3a3a9c" +result_repository = "1 rows 7e47063dfe3a3a9c" + +[[query]] +category = "aggregate" +sql = '''select MAX(ordered_at) + from orders''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 7e47063dfe3a3a9c" +result_repository = "1 rows 7e47063dfe3a3a9c" + +[[query]] +category = "group_by" +sql = '''SELECT status, MAX(ordered_at) AS n FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 62873001749b1ce5" +result_repository = "3 rows 62873001749b1ce5" + +[[query]] +category = "group_by" +sql = '''SELECT STATUS, MAX(ORDERED_AT) AS N FROM ORDERS GROUP BY STATUS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 62873001749b1ce5" +result_repository = "3 rows 62873001749b1ce5" + +[[query]] +category = "group_by" +sql = '''-- a comment +select status, max(ordered_at) as n + from orders + group by status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 62873001749b1ce5" +result_repository = "3 rows 62873001749b1ce5" + +[[query]] +category = "group_by" +sql = '''select status, max(ordered_at) as n from orders group by status -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 62873001749b1ce5" +result_repository = "3 rows 62873001749b1ce5" + +[[query]] +category = "group_by" +sql = '''select status, MAX(ordered_at) as n from orders group by status ;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 62873001749b1ce5" +result_repository = "3 rows 62873001749b1ce5" + +[[query]] +category = "group_by" +sql = '''SELECT status, MAX(ordered_at) FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 62873001749b1ce5" +result_repository = "3 rows 62873001749b1ce5" + +[[query]] +category = "group_by" +sql = '''sElEcT STAtus, mAx(OrDEred_aT) + From ORderS + gRoup BY StatUs -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 62873001749b1ce5" +result_repository = "3 rows 62873001749b1ce5" + +[[query]] +category = "group_by" +sql = '''-- a comment +select status, MAX(ordered_at) from "ORDERS" group by status''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 62873001749b1ce5" +result_repository = "3 rows 62873001749b1ce5" + +[[query]] +category = "group_by" +sql = '''select status, max(ordered_at) from orders group by status ;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 62873001749b1ce5" +result_repository = "3 rows 62873001749b1ce5" + +[[query]] +category = "group_by" +sql = '''-- a comment +selEcT StAtUs, mAX(ordEREd_aT) fRoM oRDeRs GROUP By stATuS''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 62873001749b1ce5" +result_repository = "3 rows 62873001749b1ce5" + +[[query]] +category = "group_by" +sql = '''SELECT status, MAX(ordered_at) AS n FROM orders GROUP BY 1 ORDER BY 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 62873001749b1ce5" +result_repository = "3 rows 62873001749b1ce5" + +[[query]] +category = "group_by" +sql = '''select status, MAX(ordered_at) as n from orders group by 1 order by 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 62873001749b1ce5" +result_repository = "3 rows 62873001749b1ce5" + +[[query]] +category = "group_by" +sql = '''select /* c */ status, max(ordered_at) as n from orders group by 1 order by 1; +''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 62873001749b1ce5" +result_repository = "3 rows 62873001749b1ce5" + +[[query]] +category = "group_by" +sql = '''sElEcT StATuS, MAX(OrDeReD_aT) as N fRoM "ORDERS" groUp bY 1 OrDEr bY 1;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 62873001749b1ce5" +result_repository = "3 rows 62873001749b1ce5" + +[[query]] +category = "group_by" +sql = '''select status, MAX(ordered_at) as n from orders group by 1 order by 1 -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 62873001749b1ce5" +result_repository = "3 rows 62873001749b1ce5" + +[[query]] +category = "where" +sql = '''SELECT order_id FROM orders WHERE total > 100''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 6fe7f60ff219b391" +result_repository = "2 rows 6fe7f60ff219b391" + +[[query]] +category = "where" +sql = '''-- a comment +SElECt oRDer_id FROm ORdeRs WhERe TOtal > 100''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 6fe7f60ff219b391" +result_repository = "2 rows 6fe7f60ff219b391" + +[[query]] +category = "where" +sql = '''SeLect oRder_Id fRoM "ORDERS" wHeRE tOtal > 100''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 6fe7f60ff219b391" +result_repository = "2 rows 6fe7f60ff219b391" + +[[query]] +category = "where" +sql = '''seLeCt oRDEr_id FROM OrdERS WhEre TotaL > 100''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 6fe7f60ff219b391" +result_repository = "2 rows 6fe7f60ff219b391" + +[[query]] +category = "where" +sql = '''select /* c */ order_id from orders where total > 100''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 6fe7f60ff219b391" +result_repository = "2 rows 6fe7f60ff219b391" + +[[query]] +category = "where" +sql = '''SELECT order_id FROM orders WHERE status = 'shipped'''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 056eabd43c96f0dd" +result_repository = "3 rows 056eabd43c96f0dd" + +[[query]] +category = "where" +sql = '''SELECT /* c */ ORDER_ID FROM ORDERS WHERE STATUS = 'shipped'''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 056eabd43c96f0dd" +result_repository = "3 rows 056eabd43c96f0dd" + +[[query]] +category = "where" +sql = '''select order_id from orders where status = 'shipped' -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 056eabd43c96f0dd" +result_repository = "3 rows 056eabd43c96f0dd" + +[[query]] +category = "where" +sql = '''select order_id from orders where status = 'shipped' -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 056eabd43c96f0dd" +result_repository = "3 rows 056eabd43c96f0dd" + +[[query]] +category = "where" +sql = '''SeLeCt ordER_Id + fRoM oRDeRS + whERe sTATUs = 'shipped' -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 056eabd43c96f0dd" +result_repository = "3 rows 056eabd43c96f0dd" + +[[query]] +category = "where" +sql = '''SELECT order_id FROM orders WHERE status IN ('shipped', 'pending')''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 67497b776854008d" +result_repository = "4 rows 67497b776854008d" + +[[query]] +category = "where" +sql = '''SELEct ORDER_Id FROM OrdeRS WHEre stAtUs iN ('shipped', 'pending');''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 67497b776854008d" +result_repository = "4 rows 67497b776854008d" + +[[query]] +category = "where" +sql = '''SElECt OrDEr_Id + from OrDeRS + whErE sTatus In ('shipped', 'pending') +''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 67497b776854008d" +result_repository = "4 rows 67497b776854008d" + +[[query]] +category = "where" +sql = '''-- a comment +select order_id from orders where status in ('shipped', 'pending')''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 67497b776854008d" +result_repository = "4 rows 67497b776854008d" + +[[query]] +category = "where" +sql = '''SelECt ORDEr_iD FROm "ORDERS" wheRE STatus IN ('shipped', 'pending') -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 67497b776854008d" +result_repository = "4 rows 67497b776854008d" + +[[query]] +category = "where" +sql = '''SELECT order_id FROM orders WHERE total BETWEEN 10 AND 100''' +expect = "translated" +expect_repository = "translated" +result = "3 rows d0cf758ad7e9b5bb" +result_repository = "3 rows d0cf758ad7e9b5bb" + +[[query]] +category = "where" +sql = '''-- a comment +select order_id from orders where total BETWEEN 10 and 100''' +expect = "translated" +expect_repository = "translated" +result = "3 rows d0cf758ad7e9b5bb" +result_repository = "3 rows d0cf758ad7e9b5bb" + +[[query]] +category = "where" +sql = '''select order_id from "ORDERS" where total between 10 and 100; +''' +expect = "translated" +expect_repository = "translated" +result = "3 rows d0cf758ad7e9b5bb" +result_repository = "3 rows d0cf758ad7e9b5bb" + +[[query]] +category = "where" +sql = '''select order_id from "ORDERS" where total BETWEEN 10 and 100''' +expect = "translated" +expect_repository = "translated" +result = "3 rows d0cf758ad7e9b5bb" +result_repository = "3 rows d0cf758ad7e9b5bb" + +[[query]] +category = "where" +sql = '''select order_id from "ORDERS" where total BETWEEN 10 and 100''' +expect = "translated" +expect_repository = "translated" +result = "3 rows d0cf758ad7e9b5bb" +result_repository = "3 rows d0cf758ad7e9b5bb" + +[[query]] +category = "where" +sql = '''SELECT order_id FROM orders WHERE status IS NULL''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "where" +sql = '''select order_id from orders where status is null ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "where" +sql = '''select order_id + from orders + where status is null -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "where" +sql = '''select /* c */ order_id from "ORDERS" where status is null''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "where" +sql = '''SELECT ORDER_ID FROM ORDERS WHERE STATUS IS NULL''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "where" +sql = '''SELECT order_id FROM orders WHERE status IS NOT NULL''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 67497b776854008d" +result_repository = "4 rows 67497b776854008d" + +[[query]] +category = "where" +sql = '''-- a comment +select order_id from orders where status is not null''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 67497b776854008d" +result_repository = "4 rows 67497b776854008d" + +[[query]] +category = "where" +sql = '''select /* c */ order_id from "ORDERS" where status is not null''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 67497b776854008d" +result_repository = "4 rows 67497b776854008d" + +[[query]] +category = "where" +sql = '''SeleCt oRDER_id + FRoM ORDERs + WhERe StATUs iS nOt NUll''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 67497b776854008d" +result_repository = "4 rows 67497b776854008d" + +[[query]] +category = "where" +sql = '''sElEcT OrdER_ID + FrOm orDers + WhERE sTAtUs iS not nuLL''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 67497b776854008d" +result_repository = "4 rows 67497b776854008d" + +[[query]] +category = "where" +sql = '''SELECT order_id FROM orders WHERE status LIKE 'sh%'''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 056eabd43c96f0dd" +result_repository = "3 rows 056eabd43c96f0dd" + +[[query]] +category = "where" +sql = '''SELECT ORDER_ID FROM "ORDERS" WHERE STATUS LIKE 'sh%' ;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 056eabd43c96f0dd" +result_repository = "3 rows 056eabd43c96f0dd" + +[[query]] +category = "where" +sql = '''select order_id from orders where status like 'sh%' +''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 056eabd43c96f0dd" +result_repository = "3 rows 056eabd43c96f0dd" + +[[query]] +category = "where" +sql = '''SELECT ORDER_ID FROM ORDERS WHERE STATUS LIKE 'sh%'''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 056eabd43c96f0dd" +result_repository = "3 rows 056eabd43c96f0dd" + +[[query]] +category = "where" +sql = '''select /* c */ order_id from orders where status LIKE 'sh%' ;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 056eabd43c96f0dd" +result_repository = "3 rows 056eabd43c96f0dd" + +[[query]] +category = "where" +sql = '''SELECT order_id FROM orders WHERE NOT (total > 100)''' +expect = "translated" +expect_repository = "translated" +result = "3 rows d0cf758ad7e9b5bb" +result_repository = "3 rows d0cf758ad7e9b5bb" + +[[query]] +category = "where" +sql = '''select order_id from orders where not (total > 100) -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows d0cf758ad7e9b5bb" +result_repository = "3 rows d0cf758ad7e9b5bb" + +[[query]] +category = "where" +sql = '''seLEcT OrDEr_ID FROm ordERs wHERE Not (TOTAL > 100)''' +expect = "translated" +expect_repository = "translated" +result = "3 rows d0cf758ad7e9b5bb" +result_repository = "3 rows d0cf758ad7e9b5bb" + +[[query]] +category = "where" +sql = '''SElEct order_id + FRoM OrDErS + wHeRE NOT (Total > 100) +''' +expect = "translated" +expect_repository = "translated" +result = "3 rows d0cf758ad7e9b5bb" +result_repository = "3 rows d0cf758ad7e9b5bb" + +[[query]] +category = "where" +sql = '''select order_id from orders where not (total > 100)''' +expect = "translated" +expect_repository = "translated" +result = "3 rows d0cf758ad7e9b5bb" +result_repository = "3 rows d0cf758ad7e9b5bb" + +[[query]] +category = "where" +sql = '''SELECT order_id FROM orders WHERE total > 10 AND status = 'shipped'''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 056eabd43c96f0dd" +result_repository = "3 rows 056eabd43c96f0dd" + +[[query]] +category = "where" +sql = '''select /* c */ order_id from "ORDERS" where total > 10 and status = 'shipped';''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 056eabd43c96f0dd" +result_repository = "3 rows 056eabd43c96f0dd" + +[[query]] +category = "where" +sql = '''-- a comment +select order_id from "ORDERS" where total > 10 and status = 'shipped'''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 056eabd43c96f0dd" +result_repository = "3 rows 056eabd43c96f0dd" + +[[query]] +category = "where" +sql = '''SeLect ordeR_iD FrOm OrDerS WHERE ToTAL > 10 anD sTaTus = 'shipped' -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 056eabd43c96f0dd" +result_repository = "3 rows 056eabd43c96f0dd" + +[[query]] +category = "where" +sql = '''select /* c */ order_id + from orders + where total > 10 and status = 'shipped'''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 056eabd43c96f0dd" +result_repository = "3 rows 056eabd43c96f0dd" + +[[query]] +category = "where" +sql = '''SELECT order_id FROM orders WHERE total < 10 OR status IS NULL''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "where" +sql = '''SELECT ORDER_ID + FROM ORDERS + WHERE TOTAL < 10 OR STATUS IS NULL -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "where" +sql = '''Select /* c */ OrdEr_Id fROm OrDERs WHeRe tOtaL < 10 OR STAtuS is NulL''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "where" +sql = '''select /* c */ order_id + from orders + where total < 10 or status is null +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "where" +sql = '''-- a comment +select order_id + from orders + where total < 10 or status is null ;''' +expect = "translated" +expect_repository = "translated" +result = "1 rows ef2d127de37b942b" +result_repository = "1 rows ef2d127de37b942b" + +[[query]] +category = "where" +sql = '''SELECT order_id FROM orders WHERE order_id IN (1, 2, 3)''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ad53e8806d17c82d" +result_repository = "3 rows ad53e8806d17c82d" + +[[query]] +category = "where" +sql = '''select order_id from "ORDERS" where order_id in (1, 2, 3) -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ad53e8806d17c82d" +result_repository = "3 rows ad53e8806d17c82d" + +[[query]] +category = "where" +sql = '''select order_id from "ORDERS" where order_id in (1, 2, 3) ;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ad53e8806d17c82d" +result_repository = "3 rows ad53e8806d17c82d" + +[[query]] +category = "where" +sql = '''select order_id from orders where order_id in (1, 2, 3) ;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ad53e8806d17c82d" +result_repository = "3 rows ad53e8806d17c82d" + +[[query]] +category = "where" +sql = '''SELECT ORDER_ID FROM "ORDERS" WHERE ORDER_ID IN (1, 2, 3)''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ad53e8806d17c82d" +result_repository = "3 rows ad53e8806d17c82d" + +[[query]] +category = "where" +sql = '''SELECT order_id FROM orders WHERE ordered_at >= '2026-10-03'''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 824105ae1973a670" +result_repository = "4 rows 824105ae1973a670" + +[[query]] +category = "where" +sql = '''SELECT ORDER_ID FROM ORDERS WHERE ORDERED_AT >= '2026-10-03'''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 824105ae1973a670" +result_repository = "4 rows 824105ae1973a670" + +[[query]] +category = "where" +sql = '''select order_id from "ORDERS" where ordered_at >= '2026-10-03' +''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 824105ae1973a670" +result_repository = "4 rows 824105ae1973a670" + +[[query]] +category = "where" +sql = '''-- a comment +selEcT OrdEr_id FrOm oRDeRS wheRe ORDEReD_aT >= '2026-10-03' +''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 824105ae1973a670" +result_repository = "4 rows 824105ae1973a670" + +[[query]] +category = "where" +sql = '''select order_id from orders where ordered_at >= '2026-10-03'; +''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 824105ae1973a670" +result_repository = "4 rows 824105ae1973a670" + +[[query]] +category = "where" +sql = '''SELECT order_id FROM orders WHERE ordered_at >= DATE '2026-10-03'''' +expect = "refused SQ0003 node:gte at 34..65" +expect_repository = "refused SQ0003 node:gte at 34..65" + +[[query]] +category = "where" +sql = '''-- a comment +select order_id from orders where ordered_at >= date '2026-10-03';''' +expect = "refused SQ0003 node:gte at 51..82" +expect_repository = "refused SQ0003 node:gte at 51..82" + +[[query]] +category = "where" +sql = '''select /* c */ Order_id + FroM oRDerS + WHeRe oRDERed_at >= date '2026-10-03'''' +expect = "refused SQ0003 node:gte at 46..77" +expect_repository = "refused SQ0003 node:gte at 46..77" + +[[query]] +category = "where" +sql = '''select order_id from orders where ordered_at >= date '2026-10-03'''' +expect = "refused SQ0003 node:gte at 34..65" +expect_repository = "refused SQ0003 node:gte at 34..65" + +[[query]] +category = "where" +sql = '''SELecT OrDEr_Id from ordeRs Where orderED_AT >= DATE '2026-10-03'''' +expect = "refused SQ0003 node:gte at 38..69" +expect_repository = "refused SQ0003 node:gte at 38..69" + +[[query]] +category = "order_limit" +sql = '''SELECT order_id, order_id FROM orders ORDER BY order_id DESC LIMIT 3''' +expect = "refused SQ0004 statement at 0..68" +expect_repository = "refused SQ0004 statement at 0..68" + +[[query]] +category = "order_limit" +sql = '''select order_id, order_id from orders order by order_id desc limit 3 -- trailing comment''' +expect = "refused SQ0004 statement at 0..74" +expect_repository = "refused SQ0004 statement at 0..74" + +[[query]] +category = "order_limit" +sql = '''select order_id, order_id from orders order by order_id desc limit 3 -- trailing comment''' +expect = "refused SQ0004 statement at 0..68" +expect_repository = "refused SQ0004 statement at 0..68" + +[[query]] +category = "order_limit" +sql = '''select order_id, order_id from orders order by order_id desc limit 3; +''' +expect = "refused SQ0004 statement at 0..68" +expect_repository = "refused SQ0004 statement at 0..68" + +[[query]] +category = "order_limit" +sql = '''sElecT OrdEr_ID, Order_iD FRom ordeRS ORDeR By oRdeR_iD Desc LimIt 3;''' +expect = "refused SQ0004 statement at 0..68" +expect_repository = "refused SQ0004 statement at 0..68" + +[[query]] +category = "order_limit" +sql = '''SELECT order_id FROM orders ORDER BY order_id NULLS LAST LIMIT 2 OFFSET 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''sElect /* c */ orDeR_id FRoM orders ORdER BY OrdeR_ID nUlls LaST LImit 2 ofFSEt 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''SeleCT oRdEr_iD FrOm ordErS ORdeR By ORDeR_Id NUlLS LAst liMIT 2 oFFSEt 1; +''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''SELECT ORDER_ID FROM ORDERS ORDER BY ORDER_ID NULLS LAST LIMIT 2 OFFSET 1 -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''SELECT /* c */ ORDER_ID FROM "ORDERS" ORDER BY ORDER_ID NULLS LAST LIMIT 2 OFFSET 1 ;''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''SELECT order_id, total FROM orders ORDER BY total DESC LIMIT 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ff177d4203b3c8b8" +result_repository = "3 rows ff177d4203b3c8b8" + +[[query]] +category = "order_limit" +sql = '''SELECT ORDER_ID, TOTAL FROM ORDERS ORDER BY TOTAL DESC LIMIT 3 -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ff177d4203b3c8b8" +result_repository = "3 rows ff177d4203b3c8b8" + +[[query]] +category = "order_limit" +sql = '''select /* c */ order_id, total from orders order by total desc limit 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ff177d4203b3c8b8" +result_repository = "3 rows ff177d4203b3c8b8" + +[[query]] +category = "order_limit" +sql = '''-- a comment +SELECT ORDER_ID, TOTAL FROM ORDERS ORDER BY TOTAL DESC LIMIT 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ff177d4203b3c8b8" +result_repository = "3 rows ff177d4203b3c8b8" + +[[query]] +category = "order_limit" +sql = '''SELECT ORDER_ID, TOTAL FROM ORDERS ORDER BY TOTAL DESC LIMIT 3 -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows ff177d4203b3c8b8" +result_repository = "3 rows ff177d4203b3c8b8" + +[[query]] +category = "order_limit" +sql = '''SELECT order_id FROM orders ORDER BY total NULLS LAST LIMIT 2 OFFSET 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''-- a comment +SElecT OrDEr_id FRom orDerS ORdER By TOTAl NULLs lasT limIT 2 ofFseT 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''sElEct oRDeR_iD FROm "ORDERS" orDeR bY ToTAL nUlLs LAsT LIMit 2 offsEt 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''selEct oRdER_Id FRom oRdeRs ORDER By TOTaL nulLS lAst lIMIt 2 oFFSet 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''SELECT /* c */ ORDER_ID FROM ORDERS ORDER BY TOTAL NULLS LAST LIMIT 2 OFFSET 1; +''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''SELECT order_id, status FROM orders ORDER BY status DESC LIMIT 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows bd4d262dc0e8d8a1" +result_repository = "3 rows bd4d262dc0e8d8a1" + +[[query]] +category = "order_limit" +sql = '''select order_id, status + from "ORDERS" + order by status desc + limit 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows bd4d262dc0e8d8a1" +result_repository = "3 rows bd4d262dc0e8d8a1" + +[[query]] +category = "order_limit" +sql = '''select order_id, status from orders order by status desc limit 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows bd4d262dc0e8d8a1" +result_repository = "3 rows bd4d262dc0e8d8a1" + +[[query]] +category = "order_limit" +sql = '''SELECT ORDER_ID, STATUS + FROM ORDERS + ORDER BY STATUS DESC + LIMIT 3 +''' +expect = "translated" +expect_repository = "translated" +result = "3 rows bd4d262dc0e8d8a1" +result_repository = "3 rows bd4d262dc0e8d8a1" + +[[query]] +category = "order_limit" +sql = '''-- a comment +SELECT ORDER_ID, STATUS FROM ORDERS ORDER BY STATUS DESC LIMIT 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows bd4d262dc0e8d8a1" +result_repository = "3 rows bd4d262dc0e8d8a1" + +[[query]] +category = "order_limit" +sql = '''SELECT order_id FROM orders ORDER BY status NULLS LAST LIMIT 2 OFFSET 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows b598b3a62a3f7ced" +result_repository = "2 rows b598b3a62a3f7ced" + +[[query]] +category = "order_limit" +sql = '''SeLEcT /* c */ ORder_id frOM ORdeRs oRdeR By StATus NULlS laST LIMiT 2 oFFSet 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows b598b3a62a3f7ced" +result_repository = "2 rows b598b3a62a3f7ced" + +[[query]] +category = "order_limit" +sql = '''-- a comment +select order_id from orders order by status nulls last limit 2 offset 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows b598b3a62a3f7ced" +result_repository = "2 rows b598b3a62a3f7ced" + +[[query]] +category = "order_limit" +sql = '''select /* c */ order_id from "ORDERS" order by status nulls last limit 2 offset 1 ;''' +expect = "translated" +expect_repository = "translated" +result = "2 rows b598b3a62a3f7ced" +result_repository = "2 rows b598b3a62a3f7ced" + +[[query]] +category = "order_limit" +sql = '''select order_id from orders order by status nulls last limit 2 offset 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows b598b3a62a3f7ced" +result_repository = "2 rows b598b3a62a3f7ced" + +[[query]] +category = "order_limit" +sql = '''SELECT order_id, ordered_at FROM orders ORDER BY ordered_at DESC LIMIT 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows c422e8d804feaf20" +result_repository = "3 rows c422e8d804feaf20" + +[[query]] +category = "order_limit" +sql = '''select /* c */ order_id, ordered_at from orders order by ordered_at desc limit 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows c422e8d804feaf20" +result_repository = "3 rows c422e8d804feaf20" + +[[query]] +category = "order_limit" +sql = '''select order_id, ordered_at from orders order by ordered_at desc limit 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows c422e8d804feaf20" +result_repository = "3 rows c422e8d804feaf20" + +[[query]] +category = "order_limit" +sql = '''select order_id, ordered_at + from orders + order by ordered_at desc + limit 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows c422e8d804feaf20" +result_repository = "3 rows c422e8d804feaf20" + +[[query]] +category = "order_limit" +sql = '''SELECT /* c */ ORDER_ID, ORDERED_AT + FROM ORDERS + ORDER BY ORDERED_AT DESC + LIMIT 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows c422e8d804feaf20" +result_repository = "3 rows c422e8d804feaf20" + +[[query]] +category = "order_limit" +sql = '''SELECT order_id FROM orders ORDER BY ordered_at NULLS LAST LIMIT 2 OFFSET 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''SELECT /* c */ ORDER_ID FROM "ORDERS" ORDER BY ORDERED_AT NULLS LAST LIMIT 2 OFFSET 1; +''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''seLeCt /* c */ ORdeR_iD FrOm orDers ORDer BY oRdeRED_aT NuLls lasT LimIt 2 OFfSeT 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''select /* c */ order_id + from "ORDERS" + order by ordered_at nulls last + limit 2 offset 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''select order_id + from orders + order by ordered_at nulls last + limit 2 offset 1 -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''SELECT order_id, customer_id FROM orders ORDER BY customer_id DESC LIMIT 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 7f2886d68bca22b7" +result_repository = "3 rows 7f2886d68bca22b7" + +[[query]] +category = "order_limit" +sql = '''-- a comment +select order_id, customer_id from orders order by customer_id desc limit 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 7f2886d68bca22b7" +result_repository = "3 rows 7f2886d68bca22b7" + +[[query]] +category = "order_limit" +sql = '''select order_id, customer_id + from orders + order by customer_id desc + limit 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 7f2886d68bca22b7" +result_repository = "3 rows 7f2886d68bca22b7" + +[[query]] +category = "order_limit" +sql = '''SElECT ORDER_iD, cUSTomEr_Id + FROM orDers + ORDer by CUStOMer_ID dESC + LIMit 3 -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 7f2886d68bca22b7" +result_repository = "3 rows 7f2886d68bca22b7" + +[[query]] +category = "order_limit" +sql = '''select order_id, customer_id from orders order by customer_id desc limit 3''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 7f2886d68bca22b7" +result_repository = "3 rows 7f2886d68bca22b7" + +[[query]] +category = "order_limit" +sql = '''SELECT order_id FROM orders ORDER BY customer_id NULLS LAST LIMIT 2 OFFSET 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''select order_id from orders order by customer_id nulls last limit 2 offset 1 -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''select order_id from "ORDERS" order by customer_id nulls last limit 2 offset 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''-- a comment +sELECt ORdEr_id + fROm ORDErS + OrdEr By cUSTOmeR_Id nULls lasT + LIMIt 2 OFFset 1''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "order_limit" +sql = '''-- a comment +SeLEcT ordEr_iD frOm "ORDERS" orDeR bY cUStOmER_iD nulLS lASt limit 2 oFFSet 1; +''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 906f1e71d8a18e3e" +result_repository = "2 rows 906f1e71d8a18e3e" + +[[query]] +category = "cte" +sql = '''WITH x AS (SELECT total AS v FROM orders) SELECT v FROM x''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "cte" +sql = '''-- a comment +with x as (select total as v from orders) select v from x''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "cte" +sql = '''WITH X AS (SELECT TOTAL AS V + FROM ORDERS) SELECT V + FROM X -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "cte" +sql = '''with x as (select total as v from orders) select v from x''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "cte" +sql = '''with x as (select total as v from orders) select v from x -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "cte" +sql = '''WITH x AS (SELECT order_id, total AS v FROM orders), y AS (SELECT * FROM x WHERE order_id > 1) SELECT v FROM y''' +expect = "translated" +expect_repository = "translated" +result = "4 rows bbce551e710e5ce4" +result_repository = "4 rows bbce551e710e5ce4" + +[[query]] +category = "cte" +sql = '''with x as (select order_id, total as v from orders), y as (select * from x where order_id > 1) select v from y''' +expect = "translated" +expect_repository = "translated" +result = "4 rows bbce551e710e5ce4" +result_repository = "4 rows bbce551e710e5ce4" + +[[query]] +category = "cte" +sql = '''WiTH X aS (seleCt OrdeR_iD, ToTAl as v + FROM oRDErS), Y as (selEcT * + frOM x + WherE ORdeR_iD > 1) seleCT V + FROm y;''' +expect = "translated" +expect_repository = "translated" +result = "4 rows bbce551e710e5ce4" +result_repository = "4 rows bbce551e710e5ce4" + +[[query]] +category = "cte" +sql = '''WITH X AS (SELECT ORDER_ID, TOTAL AS V FROM "ORDERS"), Y AS (SELECT * FROM X WHERE ORDER_ID > 1) SELECT V FROM Y''' +expect = "translated" +expect_repository = "translated" +result = "4 rows bbce551e710e5ce4" +result_repository = "4 rows bbce551e710e5ce4" + +[[query]] +category = "cte" +sql = '''-- a comment +with X aS (SeLECT OrDeR_Id, TOtAL As V frOM "ORDERS"), Y As (selecT * FROM x WHEre ordEr_iD > 1) SELEcT v froM y; +''' +expect = "translated" +expect_repository = "translated" +result = "4 rows bbce551e710e5ce4" +result_repository = "4 rows bbce551e710e5ce4" + +[[query]] +category = "subquery" +sql = '''SELECT v FROM (SELECT total AS v FROM orders) AS s''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "subquery" +sql = '''-- a comment +SELECT V FROM (SELECT TOTAL AS V FROM "ORDERS") AS S''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "subquery" +sql = '''-- a comment +SELECT V FROM (SELECT TOTAL AS V FROM ORDERS) AS S''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "subquery" +sql = '''-- a comment +sELECt V From (selecT TOtAl aS v frOM orDerS) as s''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "subquery" +sql = '''select v from (select total as v from orders) as s; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows def433544f58b7b4" +result_repository = "5 rows def433544f58b7b4" + +[[query]] +category = "cte" +sql = '''WITH x AS (SELECT total * 2 AS v FROM orders) SELECT v FROM x''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "cte" +sql = '''WIth X as (SElecT Total * 2 aS V + fRom OrDers) sEleCT v + fROm X;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "cte" +sql = '''WiTh X as (SELECT totAl * 2 As v fROM "ORDERS") sElecT v fRoM X''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "cte" +sql = '''WITH X AS (SELECT TOTAL * 2 AS V FROM ORDERS) SELECT V FROM X -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "cte" +sql = '''WITH X AS (SELECT TOTAL * 2 AS V FROM "ORDERS") SELECT V FROM X -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "cte" +sql = '''WITH x AS (SELECT order_id, total * 2 AS v FROM orders), y AS (SELECT * FROM x WHERE order_id > 1) SELECT v FROM y''' +expect = "translated" +expect_repository = "translated" +result = "4 rows bafce59b445409bc" +result_repository = "4 rows bafce59b445409bc" + +[[query]] +category = "cte" +sql = '''with /* c */ x as (select order_id, total * 2 as v from orders), y as (select * from x where order_id > 1) select v from y''' +expect = "translated" +expect_repository = "translated" +result = "4 rows bafce59b445409bc" +result_repository = "4 rows bafce59b445409bc" + +[[query]] +category = "cte" +sql = '''with x as (select order_id, total * 2 as v from orders), y as (select * from x where order_id > 1) select v from y''' +expect = "translated" +expect_repository = "translated" +result = "4 rows bafce59b445409bc" +result_repository = "4 rows bafce59b445409bc" + +[[query]] +category = "cte" +sql = '''WITH /* c */ X AS (SELECT ORDER_ID, TOTAL * 2 AS V FROM "ORDERS"), Y AS (SELECT * FROM X WHERE ORDER_ID > 1) SELECT V FROM Y''' +expect = "translated" +expect_repository = "translated" +result = "4 rows bafce59b445409bc" +result_repository = "4 rows bafce59b445409bc" + +[[query]] +category = "cte" +sql = '''WITH X AS (SELECT ORDER_ID, TOTAL * 2 AS V FROM ORDERS), Y AS (SELECT * FROM X WHERE ORDER_ID > 1) SELECT V FROM Y; +''' +expect = "translated" +expect_repository = "translated" +result = "4 rows bafce59b445409bc" +result_repository = "4 rows bafce59b445409bc" + +[[query]] +category = "subquery" +sql = '''SELECT v FROM (SELECT total * 2 AS v FROM orders) AS s''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "subquery" +sql = '''select v from (select total * 2 as v from orders) as s''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "subquery" +sql = '''select v from (select total * 2 as v from orders) as s''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "subquery" +sql = '''select /* c */ v + from (select total * 2 as v + from orders) as s +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "subquery" +sql = '''seLECT V + frOm (seLEcT toTAl * 2 as v + FroM ORderS) as s -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 78087ce880b79311" +result_repository = "5 rows 78087ce880b79311" + +[[query]] +category = "cte" +sql = '''WITH x AS (SELECT UPPER(status) AS v FROM orders) SELECT v FROM x''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "cte" +sql = '''wITh x As (SeleCt UPpeR(stAtuS) aS v + fROm "ORDERS") sElECt v + FroM x -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "cte" +sql = '''-- a comment +WITH X AS (SELECT UPPER(STATUS) AS V + FROM ORDERS) SELECT V + FROM X''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "cte" +sql = '''-- a comment +with x as (select UPPER(status) as v from "ORDERS") select v from x''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "cte" +sql = '''-- a comment +WITH X AS (SELECT UPPER(STATUS) AS V FROM ORDERS) SELECT V FROM X''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "cte" +sql = '''WITH x AS (SELECT order_id, UPPER(status) AS v FROM orders), y AS (SELECT * FROM x WHERE order_id > 1) SELECT v FROM y''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 52702d2cd6066de4" +result_repository = "4 rows 52702d2cd6066de4" + +[[query]] +category = "cte" +sql = '''WITH X AS (SELECT ORDER_ID, UPPER(STATUS) AS V + FROM "ORDERS"), Y AS (SELECT * + FROM X + WHERE ORDER_ID > 1) SELECT V + FROM Y -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 52702d2cd6066de4" +result_repository = "4 rows 52702d2cd6066de4" + +[[query]] +category = "cte" +sql = '''WITH /* c */ X AS (SELECT ORDER_ID, UPPER(STATUS) AS V FROM ORDERS), Y AS (SELECT * FROM X WHERE ORDER_ID > 1) SELECT V FROM Y''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 52702d2cd6066de4" +result_repository = "4 rows 52702d2cd6066de4" + +[[query]] +category = "cte" +sql = '''with /* c */ x as (select order_id, UPPER(status) as v from orders), y as (select * from x where order_id > 1) select v from y''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 52702d2cd6066de4" +result_repository = "4 rows 52702d2cd6066de4" + +[[query]] +category = "cte" +sql = '''with x as (select order_id, UPPER(status) as v from orders), y as (select * from x where order_id > 1) select v from y''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 52702d2cd6066de4" +result_repository = "4 rows 52702d2cd6066de4" + +[[query]] +category = "subquery" +sql = '''SELECT v FROM (SELECT UPPER(status) AS v FROM orders) AS s''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "subquery" +sql = '''select v from (select upper(status) as v from orders) as s -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "subquery" +sql = '''SelECT v FrOm (SELecT uppER(stATUS) As v FrOm "ORDERS") aS s -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "subquery" +sql = '''select v from (select upper(status) as v from "ORDERS") as s -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "subquery" +sql = '''select /* c */ v from (select upper(status) as v from orders) as s +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows da81c68a84a30b15" +result_repository = "5 rows da81c68a84a30b15" + +[[query]] +category = "cte" +sql = '''WITH x AS (SELECT 1 AS v FROM orders) SELECT v FROM x''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "cte" +sql = '''with x as (select 1 as v from orders) select v from x -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "cte" +sql = '''-- a comment +WItH X aS (SELECt 1 As V + from oRDerS) sElect v + FroM x''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "cte" +sql = '''with x as (select 1 as v from "ORDERS") select v from x -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "cte" +sql = '''WITH x AS (SELECT order_id, 1 AS v FROM orders), y AS (SELECT * FROM x WHERE order_id > 1) SELECT v FROM y''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 149051825acc9f70" +result_repository = "4 rows 149051825acc9f70" + +[[query]] +category = "cte" +sql = '''WITH /* c */ X AS (SELECT ORDER_ID, 1 AS V + FROM ORDERS), Y AS (SELECT * + FROM X + WHERE ORDER_ID > 1) SELECT V + FROM Y''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 149051825acc9f70" +result_repository = "4 rows 149051825acc9f70" + +[[query]] +category = "cte" +sql = '''with x as (select order_id, 1 as v from orders), y as (select * from x where order_id > 1) select v from y -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 149051825acc9f70" +result_repository = "4 rows 149051825acc9f70" + +[[query]] +category = "cte" +sql = '''with x as (select order_id, 1 as v + from "ORDERS"), y as (select * + from x + where order_id > 1) select v + from y''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 149051825acc9f70" +result_repository = "4 rows 149051825acc9f70" + +[[query]] +category = "cte" +sql = '''with x as (select order_id, 1 as v + from orders), y as (select * + from x + where order_id > 1) select v + from y''' +expect = "translated" +expect_repository = "translated" +result = "4 rows 149051825acc9f70" +result_repository = "4 rows 149051825acc9f70" + +[[query]] +category = "subquery" +sql = '''SELECT v FROM (SELECT 1 AS v FROM orders) AS s''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "subquery" +sql = '''-- a comment +SeleCt v from (SElECT 1 as v FroM OrdERs) as s +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "subquery" +sql = '''SELECT V FROM (SELECT 1 AS V FROM "ORDERS") AS S -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "subquery" +sql = '''SELECT /* c */ V FROM (SELECT 1 AS V FROM ORDERS) AS S''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "subquery" +sql = '''-- a comment +SELECT V FROM (SELECT 1 AS V FROM ORDERS) AS S ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows e1e64d4a1d57a936" +result_repository = "5 rows e1e64d4a1d57a936" + +[[query]] +category = "join" +sql = '''SELECT o.order_id, c.email FROM orders o JOIN customers c ON o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''seLEct O.orDEr_id, c.eMaiL FRom ORdeRs O joIN cUsToMERS c On o.CustoMER_ID = C.customer_iD -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''select o.order_id, c.email from orders o join customers c on o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SELECT O.ORDER_ID, C.EMAIL FROM "ORDERS" O JOIN CUSTOMERS C ON O.CUSTOMER_ID = C.CUSTOMER_ID''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''select /* c */ o.order_id, c.email from orders o join customers c on o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SELECT o.order_id, c.email FROM orders o INNER JOIN customers c ON o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SELECT O.ORDER_ID, C.EMAIL FROM "ORDERS" O INNER JOIN CUSTOMERS C ON O.CUSTOMER_ID = C.CUSTOMER_ID''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''select /* c */ o.order_id, c.email from orders o inner join customers c on o.customer_id = c.customer_id ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''select /* c */ o.order_id, c.email from orders o inner join customers c on o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''select o.order_id, c.email from orders o inner join customers c on o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SELECT o.order_id, c.email FROM orders o LEFT JOIN customers c ON o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''select /* c */ o.order_id, c.email from orders o left join customers c on o.customer_id = c.customer_id +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SeLecT /* c */ O.order_id, C.emAIL + FROM OrDeRs O LEft + jOIn CusToMERS C On o.CuStOMER_iD = C.cuSTOmEr_Id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''select o.order_id, c.email from orders o left join customers c on o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''-- a comment +SeLEct O.orDeR_Id, C.emAiL FRom ORderS O leFT JOin CuStoMeRs c oN o.cuSToMer_ID = c.cUstoMeR_Id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SELECT o.order_id, c.email FROM orders o LEFT OUTER JOIN customers c ON o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''select o.order_id, c.email + from orders o left outer + join customers c on o.customer_id = c.customer_id -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''-- a comment +sELECt O.oRdeR_id, c.EMail + FROM oRDers O LEfT oUteR + join CusTOmers C ON O.CustomER_id = C.cUStOMeR_iD +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''select o.order_id, c.email from orders o left outer join customers c on o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SELECT O.ORDER_ID, C.EMAIL FROM ORDERS O LEFT OUTER JOIN CUSTOMERS C ON O.CUSTOMER_ID = C.CUSTOMER_ID;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SELECT o.order_id, c.email FROM orders o RIGHT JOIN customers c ON o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SElecT o.ordEr_Id, C.eMaIL frOm OrdErS o RiGHT jOiN cUsToMERs c On O.cuSToMer_iD = C.cUstOMER_iD -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''select /* c */ o.order_id, c.email + from orders o RIGHT + join customers c on o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''select o.order_id, c.email from orders o right join customers c on o.customer_id = c.customer_id -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SELECT O.ORDER_ID, C.EMAIL FROM ORDERS O RIGHT JOIN CUSTOMERS C ON O.CUSTOMER_ID = C.CUSTOMER_ID ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SELECT o.order_id, c.email FROM orders o FULL OUTER JOIN customers c ON o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''select o.order_id, c.email from "ORDERS" o full outer join customers c on o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SELECT O.ORDER_ID, C.EMAIL FROM ORDERS O FULL OUTER JOIN CUSTOMERS C ON O.CUSTOMER_ID = C.CUSTOMER_ID +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SELECT /* c */ O.ORDER_ID, C.EMAIL FROM ORDERS O FULL OUTER JOIN CUSTOMERS C ON O.CUSTOMER_ID = C.CUSTOMER_ID''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''seLeCt /* c */ O.ORder_Id, C.eMaiL + frOM ORDeRs O FulL OUtEr + jOin cUSTomERS C oN o.cusTOmEr_iD = c.CUsTomeR_ID;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "union" +sql = '''SELECT 1 AS v UNION ALL SELECT 2 AS v''' +expect = "translated" +expect_repository = "translated" +result = "2 rows b598b3a62a3f7ced" +result_repository = "2 rows b598b3a62a3f7ced" + +[[query]] +category = "union" +sql = '''select /* c */ 1 as v union all select 2 as v ;''' +expect = "translated" +expect_repository = "translated" +result = "2 rows b598b3a62a3f7ced" +result_repository = "2 rows b598b3a62a3f7ced" + +[[query]] +category = "union" +sql = '''SeLEct 1 as V uNION all SElECt 2 As V -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "2 rows b598b3a62a3f7ced" +result_repository = "2 rows b598b3a62a3f7ced" + +[[query]] +category = "union" +sql = '''SELECT 1 AS V + UNION ALL SELECT 2 AS V -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "2 rows b598b3a62a3f7ced" +result_repository = "2 rows b598b3a62a3f7ced" + +[[query]] +category = "union" +sql = '''select /* c */ 1 as v union all select 2 as v; +''' +expect = "translated" +expect_repository = "translated" +result = "2 rows b598b3a62a3f7ced" +result_repository = "2 rows b598b3a62a3f7ced" + +[[query]] +category = "union" +sql = '''SELECT 1 AS v UNION SELECT 2 AS v''' +expect = "translated" +expect_repository = "translated" +result = "2 rows b598b3a62a3f7ced" +result_repository = "2 rows b598b3a62a3f7ced" + +[[query]] +category = "union" +sql = '''SELECT 1 AS V UNION SELECT 2 AS V; +''' +expect = "translated" +expect_repository = "translated" +result = "2 rows b598b3a62a3f7ced" +result_repository = "2 rows b598b3a62a3f7ced" + +[[query]] +category = "union" +sql = '''-- a comment +select 1 as v union select 2 as v''' +expect = "translated" +expect_repository = "translated" +result = "2 rows b598b3a62a3f7ced" +result_repository = "2 rows b598b3a62a3f7ced" + +[[query]] +category = "union" +sql = '''-- a comment +select 1 as v union select 2 as v;''' +expect = "translated" +expect_repository = "translated" +result = "2 rows b598b3a62a3f7ced" +result_repository = "2 rows b598b3a62a3f7ced" + +[[query]] +category = "union" +sql = '''SELECT 'a' AS v UNION ALL SELECT 'b' AS v''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 7e18f737311b2dc3" +result_repository = "2 rows 7e18f737311b2dc3" + +[[query]] +category = "union" +sql = '''select /* c */ 'a' as v + union all select 'b' as v;''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 7e18f737311b2dc3" +result_repository = "2 rows 7e18f737311b2dc3" + +[[query]] +category = "union" +sql = '''select 'a' as v + union all select 'b' as v''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 7e18f737311b2dc3" +result_repository = "2 rows 7e18f737311b2dc3" + +[[query]] +category = "union" +sql = '''SELECT 'a' AS V UNION ALL SELECT 'b' AS V''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 7e18f737311b2dc3" +result_repository = "2 rows 7e18f737311b2dc3" + +[[query]] +category = "union" +sql = '''select 'a' as v union all select 'b' as v;''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 7e18f737311b2dc3" +result_repository = "2 rows 7e18f737311b2dc3" + +[[query]] +category = "union" +sql = '''SELECT 'a' AS v UNION SELECT 'b' AS v''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 7e18f737311b2dc3" +result_repository = "2 rows 7e18f737311b2dc3" + +[[query]] +category = "union" +sql = '''select /* c */ 'a' as v union select 'b' as v ;''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 7e18f737311b2dc3" +result_repository = "2 rows 7e18f737311b2dc3" + +[[query]] +category = "union" +sql = '''seLeCt 'a' As V UnION SeLect 'b' as v -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 7e18f737311b2dc3" +result_repository = "2 rows 7e18f737311b2dc3" + +[[query]] +category = "union" +sql = '''SELECT 'a' As v UnIon sEleCT 'b' as V''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 7e18f737311b2dc3" +result_repository = "2 rows 7e18f737311b2dc3" + +[[query]] +category = "union" +sql = '''select 'a' as v union select 'b' as v -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "2 rows 7e18f737311b2dc3" +result_repository = "2 rows 7e18f737311b2dc3" + +[[query]] +category = "union" +sql = '''SELECT total AS v FROM orders UNION ALL SELECT total * 2 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "10 rows 1058553e48296c26" +result_repository = "10 rows 1058553e48296c26" + +[[query]] +category = "union" +sql = '''SeleCT tOTaL As V FRom ordERs uNiOn All SeleCt tOtaL * 2 as v FRom orDErS''' +expect = "translated" +expect_repository = "translated" +result = "10 rows 1058553e48296c26" +result_repository = "10 rows 1058553e48296c26" + +[[query]] +category = "union" +sql = '''sELect tOtAL As v + FRom OrDErS + uNIoN all sEleCt tOtaL * 2 As V + frOM ORdERS; +''' +expect = "translated" +expect_repository = "translated" +result = "10 rows 1058553e48296c26" +result_repository = "10 rows 1058553e48296c26" + +[[query]] +category = "union" +sql = '''select total as v + from "ORDERS" + union all select total * 2 as v + from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "10 rows 1058553e48296c26" +result_repository = "10 rows 1058553e48296c26" + +[[query]] +category = "union" +sql = '''select total as v from orders union all select total * 2 as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "10 rows 1058553e48296c26" +result_repository = "10 rows 1058553e48296c26" + +[[query]] +category = "union" +sql = '''SELECT total AS v FROM orders UNION SELECT total * 2 AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "10 rows 1058553e48296c26" +result_repository = "10 rows 1058553e48296c26" + +[[query]] +category = "union" +sql = '''SELECT /* c */ TOTAL AS V FROM ORDERS UNION SELECT TOTAL * 2 AS V FROM ORDERS; +''' +expect = "translated" +expect_repository = "translated" +result = "10 rows 1058553e48296c26" +result_repository = "10 rows 1058553e48296c26" + +[[query]] +category = "union" +sql = '''seleCt total AS V FrOM OrdErS Union SeLEcT TOTAL * 2 As V From oRDERs''' +expect = "translated" +expect_repository = "translated" +result = "10 rows 1058553e48296c26" +result_repository = "10 rows 1058553e48296c26" + +[[query]] +category = "union" +sql = '''SELECT TOTAL AS V FROM ORDERS UNION SELECT TOTAL * 2 AS V FROM ORDERS +''' +expect = "translated" +expect_repository = "translated" +result = "10 rows 1058553e48296c26" +result_repository = "10 rows 1058553e48296c26" + +[[query]] +category = "union" +sql = '''-- a comment +SELECT TOTAL AS V + FROM "ORDERS" UNION SELECT TOTAL * 2 AS V + FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "10 rows 1058553e48296c26" +result_repository = "10 rows 1058553e48296c26" + +[[query]] +category = "union" +sql = '''SELECT order_id AS v FROM orders UNION ALL SELECT customer_id AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "10 rows f226f7d8ab0e078e" +result_repository = "10 rows f226f7d8ab0e078e" + +[[query]] +category = "union" +sql = '''SeleCT OrDer_iD aS V + froM oRdErs + unION aLl seleCT cUsTOmEr_iD aS V + FRoM ORdERS''' +expect = "translated" +expect_repository = "translated" +result = "10 rows f226f7d8ab0e078e" +result_repository = "10 rows f226f7d8ab0e078e" + +[[query]] +category = "union" +sql = '''-- a comment +select order_id as v from orders union all select customer_id as v from orders''' +expect = "translated" +expect_repository = "translated" +result = "10 rows f226f7d8ab0e078e" +result_repository = "10 rows f226f7d8ab0e078e" + +[[query]] +category = "union" +sql = '''select order_id as v from "ORDERS" union all select customer_id as v from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "10 rows f226f7d8ab0e078e" +result_repository = "10 rows f226f7d8ab0e078e" + +[[query]] +category = "union" +sql = '''-- a comment +select order_id as v + from orders + union all select customer_id as v + from orders; +''' +expect = "translated" +expect_repository = "translated" +result = "10 rows f226f7d8ab0e078e" +result_repository = "10 rows f226f7d8ab0e078e" + +[[query]] +category = "union" +sql = '''SELECT order_id AS v FROM orders UNION SELECT customer_id AS v FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "8 rows 477869b86c73dfa4" +result_repository = "8 rows 477869b86c73dfa4" + +[[query]] +category = "union" +sql = '''sElEcT oRder_ID as v + FrOM oRDers uNiOn sElecT cUSTOmEr_id As V + FRom OrDerS''' +expect = "translated" +expect_repository = "translated" +result = "8 rows 477869b86c73dfa4" +result_repository = "8 rows 477869b86c73dfa4" + +[[query]] +category = "union" +sql = '''SELECT ORDER_ID AS V + FROM ORDERS UNION SELECT CUSTOMER_ID AS V + FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "8 rows 477869b86c73dfa4" +result_repository = "8 rows 477869b86c73dfa4" + +[[query]] +category = "union" +sql = '''select order_id as v + from orders union select customer_id as v + from orders''' +expect = "translated" +expect_repository = "translated" +result = "8 rows 477869b86c73dfa4" +result_repository = "8 rows 477869b86c73dfa4" + +[[query]] +category = "union" +sql = '''SELECT /* c */ ORDER_ID AS V FROM "ORDERS" UNION SELECT CUSTOMER_ID AS V FROM "ORDERS" ;''' +expect = "translated" +expect_repository = "translated" +result = "8 rows 477869b86c73dfa4" +result_repository = "8 rows 477869b86c73dfa4" + +[[query]] +category = "window" +sql = '''SELECT order_id, ROW_NUMBER() OVER (ORDER BY total) AS w FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 642896d1b6831f29" +result_repository = "5 rows 642896d1b6831f29" + +[[query]] +category = "window" +sql = '''SELeCt oRdeR_ID, rOw_nUMber() OvER (oRdeR BY tOtaL) aS w fROm oRDERs -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 642896d1b6831f29" +result_repository = "5 rows 642896d1b6831f29" + +[[query]] +category = "window" +sql = '''select /* c */ order_id, ROW_NUMBER() over (order by total) as w from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 642896d1b6831f29" +result_repository = "5 rows 642896d1b6831f29" + +[[query]] +category = "window" +sql = '''select order_id, ROW_NUMBER() over (order by total) as w from orders -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 642896d1b6831f29" +result_repository = "5 rows 642896d1b6831f29" + +[[query]] +category = "window" +sql = '''-- a comment +seleCT ORDER_ID, rOW_nuMbEr() over (OrDer BY tOTAL) as w + FroM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 642896d1b6831f29" +result_repository = "5 rows 642896d1b6831f29" + +[[query]] +category = "window" +sql = '''SELECT order_id, ROW_NUMBER() OVER (PARTITION BY status ORDER BY total DESC) AS w FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 70475fb69d9971f0" +result_repository = "5 rows 70475fb69d9971f0" + +[[query]] +category = "window" +sql = '''select order_id, ROW_NUMBER() over (partition by status order by total desc) as w from "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 70475fb69d9971f0" +result_repository = "5 rows 70475fb69d9971f0" + +[[query]] +category = "window" +sql = '''SELECT ORDER_ID, ROW_NUMBER() OVER (PARTITION BY STATUS + ORDER BY TOTAL DESC) AS W + FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 70475fb69d9971f0" +result_repository = "5 rows 70475fb69d9971f0" + +[[query]] +category = "window" +sql = '''select order_id, ROW_NUMBER() over (partition by status order by total desc) as w from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 70475fb69d9971f0" +result_repository = "5 rows 70475fb69d9971f0" + +[[query]] +category = "window" +sql = '''SELECT /* c */ ORDER_ID, ROW_NUMBER() OVER (PARTITION BY STATUS ORDER BY TOTAL DESC) AS W FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 70475fb69d9971f0" +result_repository = "5 rows 70475fb69d9971f0" + +[[query]] +category = "window" +sql = '''SELECT order_id, RANK() OVER (ORDER BY total) AS w FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 642896d1b6831f29" +result_repository = "5 rows 642896d1b6831f29" + +[[query]] +category = "window" +sql = '''SELECT /* c */ ORDER_ID, RANK() OVER (ORDER BY TOTAL) AS W + FROM ORDERS ;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 642896d1b6831f29" +result_repository = "5 rows 642896d1b6831f29" + +[[query]] +category = "window" +sql = '''select order_id, rank() over (order by total) as w + from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 642896d1b6831f29" +result_repository = "5 rows 642896d1b6831f29" + +[[query]] +category = "window" +sql = '''-- a comment +SELECT ORDER_ID, RANK() OVER (ORDER BY TOTAL) AS W + FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 642896d1b6831f29" +result_repository = "5 rows 642896d1b6831f29" + +[[query]] +category = "window" +sql = '''SELECT ORDER_ID, RANK() OVER (ORDER BY TOTAL) AS W + FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 642896d1b6831f29" +result_repository = "5 rows 642896d1b6831f29" + +[[query]] +category = "window" +sql = '''SELECT order_id, SUM(total) OVER (PARTITION BY customer_id) AS w FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 38159dccef156cfa" +result_repository = "5 rows 38159dccef156cfa" + +[[query]] +category = "window" +sql = '''-- a comment +SeLECt OrDeR_id, sUm(tOTal) ovEr (PARtitIOn BY CUsToMer_id) As w from "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 38159dccef156cfa" +result_repository = "5 rows 38159dccef156cfa" + +[[query]] +category = "window" +sql = '''SELECT ORDER_ID, SUM(TOTAL) OVER (PARTITION BY CUSTOMER_ID) AS W FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 38159dccef156cfa" +result_repository = "5 rows 38159dccef156cfa" + +[[query]] +category = "window" +sql = '''-- a comment +SELECT ORDER_ID, SUM(TOTAL) OVER (PARTITION BY CUSTOMER_ID) AS W FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 38159dccef156cfa" +result_repository = "5 rows 38159dccef156cfa" + +[[query]] +category = "window" +sql = '''select order_id, sum(total) over (partition by customer_id) as w from orders;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 38159dccef156cfa" +result_repository = "5 rows 38159dccef156cfa" + +[[query]] +category = "window" +sql = '''SELECT order_id, LAG(total) OVER (ORDER BY ordered_at) AS w FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8ec56cfa56a9e899" +result_repository = "5 rows 8ec56cfa56a9e899" + +[[query]] +category = "window" +sql = '''selEcT OrDEr_id, lag(ToTAl) ovEr (orDER BY OrDEreD_At) As w FROm OrdeRS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8ec56cfa56a9e899" +result_repository = "5 rows 8ec56cfa56a9e899" + +[[query]] +category = "window" +sql = '''select order_id, lag(total) over (order by ordered_at) as w + from "ORDERS";''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8ec56cfa56a9e899" +result_repository = "5 rows 8ec56cfa56a9e899" + +[[query]] +category = "window" +sql = '''SELECT ORDER_ID, LAG(TOTAL) OVER (ORDER BY ORDERED_AT) AS W FROM "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8ec56cfa56a9e899" +result_repository = "5 rows 8ec56cfa56a9e899" + +[[query]] +category = "window" +sql = '''select order_id, LAG(total) over (order by ordered_at) as w from "ORDERS" -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 8ec56cfa56a9e899" +result_repository = "5 rows 8ec56cfa56a9e899" + +[[query]] +category = "window" +sql = '''SELECT order_id, COUNT(*) OVER () AS w FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 9e7363b4b971a71d" +result_repository = "5 rows 9e7363b4b971a71d" + +[[query]] +category = "window" +sql = '''-- a comment +SELECT ORDER_ID, COUNT(*) OVER () AS W FROM ORDERS;''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 9e7363b4b971a71d" +result_repository = "5 rows 9e7363b4b971a71d" + +[[query]] +category = "window" +sql = '''-- a comment +SeLect ORdeR_iD, cOuNt(*) OVEr () as w FrOM orDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 9e7363b4b971a71d" +result_repository = "5 rows 9e7363b4b971a71d" + +[[query]] +category = "window" +sql = '''SELECT ORDER_ID, COUNT(*) OVER () AS W FROM ORDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 9e7363b4b971a71d" +result_repository = "5 rows 9e7363b4b971a71d" + +[[query]] +category = "window" +sql = '''SelECt orDer_iD, COunT(*) over () aS W from oRDERS -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 9e7363b4b971a71d" +result_repository = "5 rows 9e7363b4b971a71d" + +[[query]] +category = "star" +sql = '''SELECT * FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 887451867d8e5b76" +result_repository = "5 rows 887451867d8e5b76" + +[[query]] +category = "star" +sql = '''SELECT * + FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 887451867d8e5b76" +result_repository = "5 rows 887451867d8e5b76" + +[[query]] +category = "star" +sql = '''select * from orders''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 887451867d8e5b76" +result_repository = "5 rows 887451867d8e5b76" + +[[query]] +category = "star" +sql = '''SeLEct * FROm orders; +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 887451867d8e5b76" +result_repository = "5 rows 887451867d8e5b76" + +[[query]] +category = "star" +sql = '''-- a comment +SELECT * FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 887451867d8e5b76" +result_repository = "5 rows 887451867d8e5b76" + +[[query]] +category = "star" +sql = '''SELECT o.* FROM orders o''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 887451867d8e5b76" +result_repository = "5 rows 887451867d8e5b76" + +[[query]] +category = "star" +sql = '''sELECT o.* + FrOm Orders O -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 887451867d8e5b76" +result_repository = "5 rows 887451867d8e5b76" + +[[query]] +category = "star" +sql = '''select o.* + from orders o -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 887451867d8e5b76" +result_repository = "5 rows 887451867d8e5b76" + +[[query]] +category = "star" +sql = '''select o.* from orders o -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 887451867d8e5b76" +result_repository = "5 rows 887451867d8e5b76" + +[[query]] +category = "star" +sql = '''SeleCt o.* fROM oRdERs O +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 887451867d8e5b76" +result_repository = "5 rows 887451867d8e5b76" + +[[query]] +category = "star" +sql = '''SELECT * FROM orders WHERE total > 50 ORDER BY order_id''' +expect = "translated" +expect_repository = "translated" +result = "3 rows d055788bc2cde6cf" +result_repository = "3 rows d055788bc2cde6cf" + +[[query]] +category = "star" +sql = '''SELECT * FROM ORDERS WHERE TOTAL > 50 ORDER BY ORDER_ID;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows d055788bc2cde6cf" +result_repository = "3 rows d055788bc2cde6cf" + +[[query]] +category = "star" +sql = '''select * + from orders + where total > 50 + order by order_id; +''' +expect = "translated" +expect_repository = "translated" +result = "3 rows d055788bc2cde6cf" +result_repository = "3 rows d055788bc2cde6cf" + +[[query]] +category = "star" +sql = '''SeLeCt * FroM "ORDERS" WhERE tOtaL > 50 oRDER BY OrDer_iD;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows d055788bc2cde6cf" +result_repository = "3 rows d055788bc2cde6cf" + +[[query]] +category = "star" +sql = '''sELECT * fRom "ORDERS" WHErE TOtaL > 50 orDEr by orDeR_ID''' +expect = "translated" +expect_repository = "translated" +result = "3 rows d055788bc2cde6cf" +result_repository = "3 rows d055788bc2cde6cf" + +[[query]] +category = "join" +sql = '''SELECT o.order_id, i.quantity, p.name FROM orders o JOIN order_items i ON i.order_id = o.order_id JOIN products p ON p.product_id = i.product_id''' +expect = "translated" +expect_repository = "translated" +result = "6 rows 2119596e68977055" +result_repository = "6 rows 2119596e68977055" + +[[query]] +category = "join" +sql = '''select /* c */ o.order_id, i.quantity, p.name from orders o join order_items i on i.order_id = o.order_id join products p on p.product_id = i.product_id''' +expect = "translated" +expect_repository = "translated" +result = "6 rows 2119596e68977055" +result_repository = "6 rows 2119596e68977055" + +[[query]] +category = "join" +sql = '''select o.order_id, i.quantity, p.name from orders o join order_items i on i.order_id = o.order_id join products p on p.product_id = i.product_id''' +expect = "translated" +expect_repository = "translated" +result = "6 rows 2119596e68977055" +result_repository = "6 rows 2119596e68977055" + +[[query]] +category = "join" +sql = '''select o.order_id, i.quantity, p.name from orders o join order_items i on i.order_id = o.order_id join products p on p.product_id = i.product_id -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "6 rows 2119596e68977055" +result_repository = "6 rows 2119596e68977055" + +[[query]] +category = "join" +sql = '''sElecT /* c */ O.oRDER_iD, i.qUantiTY, P.name + FrOM "ORDERS" O + JOiN OrDer_itEMS i On i.OrDeR_ID = o.order_id + JoiN PRodUcTS p On P.PROdUcT_Id = i.PRoducT_iD +''' +expect = "translated" +expect_repository = "translated" +result = "6 rows 2119596e68977055" +result_repository = "6 rows 2119596e68977055" + +[[query]] +category = "join" +sql = '''SELECT o.order_id, c.email FROM orders o JOIN customers c USING (customer_id)''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''-- a comment +select o.order_id, c.email from "ORDERS" o join customers c using (customer_id)''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''select o.order_id, c.email from orders o join customers c USING (customer_id)''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''-- a comment +SeleCt o.order_iD, c.EmaiL FRom "ORDERS" O join cUSTOMeRS C UsInG (CUSToMer_iD)''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''select o.order_id, c.email from orders o join customers c USING (customer_id) -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SELECT o.order_id, c.email FROM orders o, customers c WHERE o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''sELecT o.oRdEr_id, C.eMAIl frOm ORdERs o, CUSTOmErs c WheRe O.CUSTOmer_id = C.CuSTOMER_ID''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''-- a comment +select o.order_id, c.email + from orders o, customers c + where o.customer_id = c.customer_id +''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SeLeCT o.oRDer_id, c.EMaiL froM orDErS O, cUStoMeRS c whERe O.CUstoMeR_id = C.cuStOMeR_Id''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''select o.order_id, c.email + from "ORDERS" o, customers c + where o.customer_id = c.customer_id -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "5 rows 1bafeaeaeddebbb4" +result_repository = "5 rows 1bafeaeaeddebbb4" + +[[query]] +category = "join" +sql = '''SELECT c.email, COUNT(*) AS n FROM customers c LEFT JOIN orders o ON o.customer_id = c.customer_id GROUP BY c.email''' +expect = "translated" +expect_repository = "translated" +result = "3 rows b297740cfb847322" +result_repository = "3 rows b297740cfb847322" + +[[query]] +category = "join" +sql = '''SELECT C.EMAIL, COUNT(*) AS N FROM CUSTOMERS C LEFT JOIN "ORDERS" O ON O.CUSTOMER_ID = C.CUSTOMER_ID GROUP BY C.EMAIL -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows b297740cfb847322" +result_repository = "3 rows b297740cfb847322" + +[[query]] +category = "join" +sql = '''SELECT C.EMAIL, COUNT(*) AS N + FROM CUSTOMERS C LEFT + JOIN ORDERS O ON O.CUSTOMER_ID = C.CUSTOMER_ID + GROUP BY C.EMAIL''' +expect = "translated" +expect_repository = "translated" +result = "3 rows b297740cfb847322" +result_repository = "3 rows b297740cfb847322" + +[[query]] +category = "join" +sql = '''select c.email, count(*) as n from customers c left join orders o on o.customer_id = c.customer_id group by c.email -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows b297740cfb847322" +result_repository = "3 rows b297740cfb847322" + +[[query]] +category = "join" +sql = '''-- a comment +sElECT c.Email, coUNT(*) aS n fRoM cUSTOmerS c leFt joIN "ORDERS" o ON o.CusTomer_iD = C.CUstoMEr_ID groUp BY c.EmaIl''' +expect = "translated" +expect_repository = "translated" +result = "3 rows b297740cfb847322" +result_repository = "3 rows b297740cfb847322" + +[[query]] +category = "distinct" +sql = '''SELECT DISTINCT status FROM orders''' +expect = "translated" +expect_repository = "translated" +result = "3 rows da499e2d0e7fba99" +result_repository = "3 rows da499e2d0e7fba99" + +[[query]] +category = "distinct" +sql = '''select distinct status from orders ;''' +expect = "translated" +expect_repository = "translated" +result = "3 rows da499e2d0e7fba99" +result_repository = "3 rows da499e2d0e7fba99" + +[[query]] +category = "distinct" +sql = '''-- a comment +SELECT DISTINCT STATUS FROM ORDERS''' +expect = "translated" +expect_repository = "translated" +result = "3 rows da499e2d0e7fba99" +result_repository = "3 rows da499e2d0e7fba99" + +[[query]] +category = "distinct" +sql = '''select /* c */ distinct status + from orders''' +expect = "translated" +expect_repository = "translated" +result = "3 rows da499e2d0e7fba99" +result_repository = "3 rows da499e2d0e7fba99" + +[[query]] +category = "distinct" +sql = '''-- a comment +seLEcT DiStiNcT StAtUs fROM oRDERS''' +expect = "translated" +expect_repository = "translated" +result = "3 rows da499e2d0e7fba99" +result_repository = "3 rows da499e2d0e7fba99" + +[[query]] +category = "having" +sql = '''SELECT status, COUNT(*) AS n FROM orders GROUP BY status HAVING COUNT(*) > 1''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 35ce25ff2eb0374e" +result_repository = "1 rows 35ce25ff2eb0374e" + +[[query]] +category = "having" +sql = '''-- a comment +SElecT sTatus, COUnT(*) AS n FROm orderS gROuP By STAtUs HAViNg cOunT(*) > 1''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 35ce25ff2eb0374e" +result_repository = "1 rows 35ce25ff2eb0374e" + +[[query]] +category = "having" +sql = '''-- a comment +SELECT STATUS, COUNT(*) AS N FROM "ORDERS" GROUP BY STATUS HAVING COUNT(*) > 1; +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 35ce25ff2eb0374e" +result_repository = "1 rows 35ce25ff2eb0374e" + +[[query]] +category = "having" +sql = '''select /* c */ status, COUNT(*) as n + from orders + group by status + having COUNT(*) > 1 +''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 35ce25ff2eb0374e" +result_repository = "1 rows 35ce25ff2eb0374e" + +[[query]] +category = "having" +sql = '''select status, count(*) as n + from "ORDERS" + group by status + having count(*) > 1 -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "1 rows 35ce25ff2eb0374e" +result_repository = "1 rows 35ce25ff2eb0374e" + +[[query]] +category = "qualify" +sql = '''SELECT order_id, status FROM orders QUALIFY ROW_NUMBER() OVER (PARTITION BY status ORDER BY total DESC) = 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 66b8709f757e6dc0" +result_repository = "3 rows 66b8709f757e6dc0" + +[[query]] +category = "qualify" +sql = '''SEleCT oRder_id, staTUs FrOM orDErs QuaLIFy ROW_nUMBer() oVER (paRtitION by stATuS oRder bY totAl dEsc) = 1 +''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 66b8709f757e6dc0" +result_repository = "3 rows 66b8709f757e6dc0" + +[[query]] +category = "qualify" +sql = '''select order_id, status from "ORDERS" qualify row_number() over (partition by status order by total desc) = 1 -- trailing comment''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 66b8709f757e6dc0" +result_repository = "3 rows 66b8709f757e6dc0" + +[[query]] +category = "qualify" +sql = '''-- a comment +selEct OrDER_Id, statuS FROM oRDeRs QuALIfy ROW_NuMBer() oVER (PARTitioN By STatUS orDEr By toTaL deSc) = 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 66b8709f757e6dc0" +result_repository = "3 rows 66b8709f757e6dc0" + +[[query]] +category = "qualify" +sql = '''-- a comment +select order_id, status from orders qualify row_number() over (partition by status order by total desc) = 1''' +expect = "translated" +expect_repository = "translated" +result = "3 rows 66b8709f757e6dc0" +result_repository = "3 rows 66b8709f757e6dc0" + +[[query]] +category = "last_days" +sql = '''SELECT order_id FROM orders WHERE ordered_at >= DATEADD(day, -30, CURRENT_DATE)''' +expect = "refused SQ0003 node:gte at 34..79" +expect_repository = "refused SQ0003 node:gte at 34..79" + +[[query]] +category = "last_days" +sql = '''select order_id from orders where ordered_at >= DATEADD(day, -30, CURRENT_DATE)''' +expect = "refused SQ0003 node:gte at 38..83" +expect_repository = "refused SQ0003 node:gte at 38..83" + +[[query]] +category = "last_days" +sql = '''SELECT ORDER_ID FROM ORDERS WHERE ORDERED_AT >= DATEADD(DAY, -30, CURRENT_DATE)''' +expect = "refused SQ0003 node:gte at 34..79" +expect_repository = "refused SQ0003 node:gte at 34..79" + +[[query]] +category = "last_days" +sql = '''select order_id from orders where ordered_at >= DATEADD(day, -30, CURRENT_DATE) ;''' +expect = "refused SQ0003 node:gte at 34..79" +expect_repository = "refused SQ0003 node:gte at 34..79" + +[[query]] +category = "last_days" +sql = '''select /* c */ order_id from orders where ordered_at >= DATEADD(day, -30, CURRENT_DATE)''' +expect = "refused SQ0003 node:gte at 42..87" +expect_repository = "refused SQ0003 node:gte at 42..87" + +[[query]] +category = "last_days" +sql = '''SELECT order_id FROM orders WHERE ordered_at >= DATEADD(day, -30, CURRENT_TIMESTAMP())''' +expect = "refused SQ0003 fn:DATEADD at 48..86" +expect_repository = "refused SQ0003 fn:DATEADD at 48..86" + +[[query]] +category = "last_days" +sql = '''select /* c */ order_id from "ORDERS" where ordered_at >= dateadd(day, -30, current_timestamp())''' +expect = "refused SQ0003 fn:DATEADD at 58..96" +expect_repository = "refused SQ0003 fn:DATEADD at 58..96" + +[[query]] +category = "last_days" +sql = '''SELECT /* c */ ORDER_ID FROM ORDERS WHERE ORDERED_AT >= DATEADD(DAY, -30, CURRENT_TIMESTAMP())''' +expect = "refused SQ0003 fn:DATEADD at 60..98" +expect_repository = "refused SQ0003 fn:DATEADD at 60..98" + +[[query]] +category = "last_days" +sql = '''select order_id from orders where ordered_at >= DATEADD(day, -30, CURRENT_TIMESTAMP())''' +expect = "refused SQ0003 fn:DATEADD at 48..86" +expect_repository = "refused SQ0003 fn:DATEADD at 48..86" + +[[query]] +category = "last_days" +sql = '''SeLect ordEr_Id FrOM "ORDERS" wHERe oRDeRed_at >= DAteAdD(DAY, -30, cURrENt_tImEsTamP())''' +expect = "refused SQ0003 fn:DATEADD at 54..92" +expect_repository = "refused SQ0003 fn:DATEADD at 54..92" diff --git a/corpora/basics/schema.json b/corpora/basics/schema.json new file mode 100644 index 000000000..a29142d9a --- /dev/null +++ b/corpora/basics/schema.json @@ -0,0 +1,104 @@ +{ + "ORDERS": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "TOTAL", + "NUMBER(12,2)" + ], + [ + "ORDERED_AT", + "TIMESTAMP_NTZ" + ] + ], + "CUSTOMERS": [ + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "EMAIL", + "VARCHAR" + ], + [ + "FIRST_NAME", + "VARCHAR" + ], + [ + "COUNTRY", + "VARCHAR" + ], + [ + "SIGNUP_DATE", + "DATE" + ] + ], + "PRODUCTS": [ + [ + "PRODUCT_ID", + "NUMBER(38,0)" + ], + [ + "NAME", + "VARCHAR" + ], + [ + "CATEGORY", + "VARCHAR" + ], + [ + "PRICE", + "NUMBER(10,2)" + ] + ], + "ORDER_ITEMS": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "PRODUCT_ID", + "NUMBER(38,0)" + ], + [ + "QUANTITY", + "NUMBER(38,0)" + ], + [ + "UNIT_PRICE", + "NUMBER(10,2)" + ] + ], + "EVENTS": [ + [ + "EVENT_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "EVENT_TYPE", + "VARCHAR" + ], + [ + "OCCURRED_AT", + "TIMESTAMP_NTZ" + ], + [ + "PAYLOAD", + "VARIANT" + ] + ] +} diff --git a/corpora/everyday-models/queries.toml b/corpora/everyday-models/queries.toml new file mode 100644 index 000000000..aad2a7303 --- /dev/null +++ b/corpora/everyday-models/queries.toml @@ -0,0 +1,6616 @@ +# dbt-style Snowflake models, over schema.json: staging, CTE chains, incremental filters, QUALIFY +# deduplication, FLATTEN, MERGE and other materialization DML, date spines, window frames, +# PIVOT/UNPIVOT, marts, snapshots and the SQL generic tests compile to. The fields are those of +# corpora/everyday/queries.toml: `expect` under the built-in default policy, `expect_repository` +# under the repository's sqlquack.toml with a UTC session, `snowflake` for Snowflake's recorded +# verdict from snowflake-receipts.json, and `uncertain` for a query whose validity is not recorded. +# The test fails and reports changes as for that corpus; `make corpus-rerecord` records them. + +[[query]] +category = "dbt_staging" +sql = '''with source as ( + select * from raw_orders +), +renamed as ( + select + id as order_id, + user_id as customer_id, order_date, status + from source +) +select * from renamed +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''with source as ( + select * from raw_customers +), +renamed as ( + select + id as customer_id, + first_name, last_name, email + from source +) +select * from renamed +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''with source as ( + select * from raw_payments +), +renamed as ( + select + id as payment_id, + orderid as order_id, paymentmethod as payment_method + from source +) +select * from renamed +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as payment_id, + orderid as order_id, + paymentmethod as payment_method, + amount / 100 as amount +from raw_payments''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as payment_id, + orderid as order_id, + paymentmethod as payment_method, + amount / 100.0 as amount, + created as created_at +from raw_payments +where status = 'success'''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as order_id, + user_id as customer_id, + order_date, + lower(status) as status, + amount_cents / 100 as amount +from raw_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as customer_id, + trim(first_name) as first_name, + trim(last_name) as last_name, + lower(trim(email)) as email +from raw_customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as customer_id, + initcap(first_name) as first_name, + initcap(last_name) as last_name, + nullif(trim(email), '') as email, + updated_at +from raw_customers''' +expect = "refused SQ0008 fn:INITCAP at 34..53" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as order_id, + user_id as customer_id, + order_date::date as order_date, + coalesce(status, 'unknown') as status, + amount_cents::number(12,2) / 100 as amount, + updated_at +from raw_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as order_id, + user_id as customer_id, + cast(order_date as date) as order_date, + status, + cast(amount_cents as number(38,2)) / 100 as amount +from raw_orders +where status is not null''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as order_id, + user_id as customer_id, + order_date, + status, + amount_cents, + _loaded_at +from raw_orders +where _loaded_at >= dateadd(day, -3, current_timestamp())''' +expect = "refused SQ0003 fn:DATEADD at 152..189" +expect_repository = "refused SQ0003 fn:DATEADD at 152..189" + +[[query]] +category = "dbt_staging" +sql = '''select + id as order_id, + status in ('returned', 'return_pending') as is_returned, + status = 'completed' as is_completed +from raw_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as order_id, + case status + when 'placed' then 1 + when 'shipped' then 2 + when 'completed' then 3 + when 'return_pending' then 4 + when 'returned' then 5 + end as status_rank +from raw_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + md5(cast(coalesce(cast(id as varchar), '_dbt_utils_surrogate_key_null_') as varchar)) as order_key, + id as order_id +from raw_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + md5(cast(coalesce(cast(orderid as varchar), '_dbt_utils_surrogate_key_null_') || '-' || coalesce(cast(paymentmethod as varchar), '_dbt_utils_surrogate_key_null_') as varchar)) as payment_key, + orderid as order_id, + paymentmethod as payment_method +from raw_payments''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + md5(concat_ws('|', coalesce(to_varchar(id), ''), coalesce(email, ''))) as customer_key, + id as customer_id +from raw_customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + sha2(lower(trim(email)), 256) as email_hash, + id as customer_id +from raw_customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as customer_id, + split_part(email, '@', 2) as email_domain +from raw_customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as customer_id, + regexp_replace(email, '\\s+', '') as email +from raw_customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as customer_id, + first_name || ' ' || last_name as full_name +from raw_customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as customer_id, + concat(first_name, ' ', last_name) as full_name +from raw_customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as order_id, + try_to_number(to_varchar(amount_cents)) as amount_cents +from raw_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as order_id, + to_date(order_date) as order_date, + to_timestamp_ntz(updated_at) as updated_at +from raw_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as order_id, + convert_timezone('UTC', 'America/New_York', updated_at) as updated_at_local +from raw_orders''' +expect = "refused SQ0008 fn:CONVERT_TIMEZONE at 31..86" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + raw:id::varchar as event_id, + raw:customer_id::number as customer_id, + raw:type::varchar as event_type, + raw:occurred_at::timestamp_ntz as occurred_at, + _loaded_at +from raw_events''' +expect = "refused SQ0008 node:column at 192..202" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + raw:id::string as event_id, + raw:properties:page::string as page, + raw:properties:referrer::string as referrer +from raw_events''' +expect = "refused SQ0008 node:column at 133..143" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + raw['id']::varchar as event_id, + raw['properties']['page']::varchar as page +from raw_events''' +expect = "refused SQ0008 node:column at 95..105" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + get_path(raw, 'properties.page')::varchar as page, + raw:id::varchar as event_id +from raw_events''' +expect = "refused SQ0008 node:column at 99..109" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + raw:id::varchar as event_id, + try_to_timestamp(raw:occurred_at::varchar) as occurred_at +from raw_events''' +expect = "refused SQ0008 node:column at 107..117" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + raw:id::varchar as event_id, + coalesce(raw:revenue::number(12,2), 0) as revenue +from raw_events''' +expect = "refused SQ0008 node:column at 99..109" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as payment_id, + orderid as order_id, + iff(paymentmethod in ('credit_card', 'debit_card'), 'card', paymentmethod) as payment_type +from raw_payments''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as payment_id, + orderid as order_id, + decode(paymentmethod, 'credit_card', 'card', 'bank_transfer', 'bank', 'other') as payment_type +from raw_payments''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + session_id, + customer_id, + started_at, + attributes:utm_source::varchar as utm_source, + attributes:utm_campaign::varchar as utm_campaign +from web_sessions''' +expect = "refused SQ0008 node:column at 164..176" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + subscription_id, + customer_id, + upper(plan) as plan, + mrr, + started_at::date as started_on, + cancelled_at::date as cancelled_on +from subscriptions''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + rate_date, + upper(currency) as currency, + rate_to_usd +from fx_rates +where rate_to_usd > 0''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select * exclude (_loaded_at) +from raw_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select * rename (id as order_id, user_id as customer_id) +from raw_orders''' +expect = "refused SQ0002 node:star at 0..72" +expect_repository = "refused SQ0002 node:star at 0..72" + +[[query]] +category = "dbt_staging" +sql = '''select * exclude (_loaded_at) rename (id as customer_id) +from raw_customers''' +expect = "refused SQ0002 node:star at 0..75" +expect_repository = "refused SQ0002 node:star at 0..75" +uncertain = true + +[[query]] +category = "dbt_staging" +sql = '''select + id as order_id, + user_id as customer_id, + current_timestamp() as _dbt_loaded_at +from raw_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + id as order_id, + '{{ invocation_id }}' as invocation_id +from raw_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with customers as ( + select * from stg_customers +), +orders as ( + select * from stg_orders +), +customer_orders as ( + select + customer_id, + min(order_date) as first_order, + max(order_date) as most_recent_order, + count(order_id) as number_of_orders + from orders + group by customer_id +), +final as ( + select + customers.customer_id, + customers.first_name, + customers.last_name, + customer_orders.first_order, + customer_orders.most_recent_order, + coalesce(customer_orders.number_of_orders, 0) as number_of_orders + from customers + left join customer_orders using (customer_id) +) +select * from final''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with customers as ( + select * from stg_customers +), +orders as ( + select * from stg_orders +), +payments as ( + select * from stg_payments +), +customer_orders as ( + select + customer_id, + min(order_date) as first_order, + max(order_date) as most_recent_order, + count(order_id) as number_of_orders + from orders + group by customer_id +), +customer_payments as ( + select + orders.customer_id, + sum(amount) as total_amount + from payments + left join orders on payments.order_id = orders.order_id + group by orders.customer_id +), +final as ( + select + customers.customer_id, + customers.first_name, + customers.last_name, + customer_orders.first_order, + customer_orders.most_recent_order, + customer_orders.number_of_orders, + customer_payments.total_amount as customer_lifetime_value + from customers + left join customer_orders on customers.customer_id = customer_orders.customer_id + left join customer_payments on customers.customer_id = customer_payments.customer_id +) +select * from final''' +expect = "refused SQ0004 statement at 448..454" +expect_repository = "refused SQ0004 statement at 448..454" +snowflake = "rejects 2028" + +[[query]] +category = "dbt_cte_chain" +sql = '''with orders as ( + select * from stg_orders +), +payments as ( + select * from stg_payments +), +order_payments as ( + select + order_id, + sum(case when payment_method = 'credit_card' then amount else 0 end) as credit_card_amount, + sum(case when payment_method = 'coupon' then amount else 0 end) as coupon_amount, + sum(case when payment_method = 'bank_transfer' then amount else 0 end) as bank_transfer_amount, + sum(case when payment_method = 'gift_card' then amount else 0 end) as gift_card_amount, + sum(amount) as total_amount + from payments + group by order_id +), +final as ( + select + orders.order_id, + orders.customer_id, + orders.order_date, + orders.status, + order_payments.credit_card_amount, + order_payments.coupon_amount, + order_payments.bank_transfer_amount, + order_payments.gift_card_amount, + order_payments.total_amount as amount + from orders + left join order_payments on orders.order_id = order_payments.order_id +) +select * from final''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from orders +), +aggregated as ( + select + customer_id, + count(*) as row_count, + sum(total) as total_total + from source + group by customer_id +) +select * from aggregated +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from orders +), +filtered as ( + select * from source + where total is not null +), +aggregated as ( + select + customer_id, + count(*) as row_count, + avg(total) as avg_total, + max(total) as max_total + from filtered + group by 1 +) +select * from aggregated +order by row_count desc +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from orders +), +daily as ( + select + date_trunc('day', ordered_at) as day, + customer_id, + sum(total) as daily_total + from source + group by 1, 2 +), +final as ( + select + day, + customer_id, + daily_total, + sum(daily_total) over (partition by customer_id order by day) as cumulative_total + from daily +) +select * from final +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with base as ( + select * from orders +), +monthly as ( + select + date_trunc(month, ordered_at)::date as month, + count(*) as row_count + from base + group by 1 +), +with_growth as ( + select + month, + row_count, + lag(row_count) over (order by month) as previous_count + from monthly +), +final as ( + select + month, + row_count, + previous_count, + row_count - previous_count as change + from with_growth +) +select * from final +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from payments +), +aggregated as ( + select + method, + count(*) as row_count, + sum(amount) as total_amount + from source + group by method +) +select * from aggregated +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from payments +), +filtered as ( + select * from source + where amount is not null +), +aggregated as ( + select + method, + count(*) as row_count, + avg(amount) as avg_amount, + max(amount) as max_amount + from filtered + group by 1 +) +select * from aggregated +order by row_count desc +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from payments +), +daily as ( + select + date_trunc('day', paid_at) as day, + method, + sum(amount) as daily_amount + from source + group by 1, 2 +), +final as ( + select + day, + method, + daily_amount, + sum(daily_amount) over (partition by method order by day) as cumulative_amount + from daily +) +select * from final +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with base as ( + select * from payments +), +monthly as ( + select + date_trunc(month, paid_at)::date as month, + count(*) as row_count + from base + group by 1 +), +with_growth as ( + select + month, + row_count, + lag(row_count) over (order by month) as previous_count + from monthly +), +final as ( + select + month, + row_count, + previous_count, + row_count - previous_count as change + from with_growth +) +select * from final +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from stg_orders +), +aggregated as ( + select + status, + count(*) as row_count, + sum(amount) as total_amount + from source + group by status +) +select * from aggregated +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from stg_orders +), +filtered as ( + select * from source + where amount is not null +), +aggregated as ( + select + status, + count(*) as row_count, + avg(amount) as avg_amount, + max(amount) as max_amount + from filtered + group by 1 +) +select * from aggregated +order by row_count desc +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from stg_orders +), +daily as ( + select + date_trunc('day', updated_at) as day, + status, + sum(amount) as daily_amount + from source + group by 1, 2 +), +final as ( + select + day, + status, + daily_amount, + sum(daily_amount) over (partition by status order by day) as cumulative_amount + from daily +) +select * from final +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with base as ( + select * from stg_orders +), +monthly as ( + select + date_trunc(month, updated_at)::date as month, + count(*) as row_count + from base + group by 1 +), +with_growth as ( + select + month, + row_count, + lag(row_count) over (order by month) as previous_count + from monthly +), +final as ( + select + month, + row_count, + previous_count, + row_count - previous_count as change + from with_growth +) +select * from final +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from stg_payments +), +aggregated as ( + select + payment_method, + count(*) as row_count, + sum(amount) as total_amount + from source + group by payment_method +) +select * from aggregated +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from stg_payments +), +filtered as ( + select * from source + where amount is not null +), +aggregated as ( + select + payment_method, + count(*) as row_count, + avg(amount) as avg_amount, + max(amount) as max_amount + from filtered + group by 1 +) +select * from aggregated +order by row_count desc +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from stg_payments +), +daily as ( + select + date_trunc('day', paid_at) as day, + payment_method, + sum(amount) as daily_amount + from source + group by 1, 2 +), +final as ( + select + day, + payment_method, + daily_amount, + sum(daily_amount) over (partition by payment_method order by day) as cumulative_amount + from daily +) +select * from final +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with base as ( + select * from stg_payments +), +monthly as ( + select + date_trunc(month, paid_at)::date as month, + count(*) as row_count + from base + group by 1 +), +with_growth as ( + select + month, + row_count, + lag(row_count) over (order by month) as previous_count + from monthly +), +final as ( + select + month, + row_count, + previous_count, + row_count - previous_count as change + from with_growth +) +select * from final +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from subscriptions +), +aggregated as ( + select + plan, + count(*) as row_count, + sum(mrr) as total_mrr + from source + group by plan +) +select * from aggregated +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from subscriptions +), +filtered as ( + select * from source + where mrr is not null +), +aggregated as ( + select + plan, + count(*) as row_count, + avg(mrr) as avg_mrr, + max(mrr) as max_mrr + from filtered + group by 1 +) +select * from aggregated +order by row_count desc +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from subscriptions +), +daily as ( + select + date_trunc('day', started_at) as day, + plan, + sum(mrr) as daily_mrr + from source + group by 1, 2 +), +final as ( + select + day, + plan, + daily_mrr, + sum(daily_mrr) over (partition by plan order by day) as cumulative_mrr + from daily +) +select * from final +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with base as ( + select * from subscriptions +), +monthly as ( + select + date_trunc(month, started_at)::date as month, + count(*) as row_count + from base + group by 1 +), +with_growth as ( + select + month, + row_count, + lag(row_count) over (order by month) as previous_count + from monthly +), +final as ( + select + month, + row_count, + previous_count, + row_count - previous_count as change + from with_growth +) +select * from final +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from order_items +), +aggregated as ( + select + product_id, + count(*) as row_count, + sum(quantity) as total_quantity + from source + group by product_id +) +select * from aggregated +''' +expect = "refused SQ0008 fn:SUM at 136..149" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from order_items +), +filtered as ( + select * from source + where quantity is not null +), +aggregated as ( + select + product_id, + count(*) as row_count, + avg(quantity) as avg_quantity, + max(quantity) as max_quantity + from filtered + group by 1 +) +select * from aggregated +order by row_count desc +''' +expect = "refused SQ0008 fn:AVG at 209..222" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from inventory_snapshots +), +aggregated as ( + select + warehouse, + count(*) as row_count, + sum(on_hand) as total_on_hand + from source + group by warehouse +) +select * from aggregated +''' +expect = "refused SQ0008 fn:SUM at 143..155" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from inventory_snapshots +), +filtered as ( + select * from source + where on_hand is not null +), +aggregated as ( + select + warehouse, + count(*) as row_count, + avg(on_hand) as avg_on_hand, + max(on_hand) as max_on_hand + from filtered + group by 1 +) +select * from aggregated +order by row_count desc +''' +expect = "refused SQ0008 fn:AVG at 215..227" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from web_sessions +), +aggregated as ( + select + device, + count(*) as row_count, + sum(page_views) as total_page_views + from source + group by device +) +select * from aggregated +''' +expect = "refused SQ0008 node:column at 35..47" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from web_sessions +), +filtered as ( + select * from source + where page_views is not null +), +aggregated as ( + select + device, + count(*) as row_count, + avg(page_views) as avg_page_views, + max(page_views) as max_page_views + from filtered + group by 1 +) +select * from aggregated +order by row_count desc +''' +expect = "refused SQ0008 node:column at 35..47" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with source as ( + select * from web_sessions +), +daily as ( + select + date_trunc('day', started_at) as day, + device, + sum(page_views) as daily_page_views + from source + group by 1, 2 +), +final as ( + select + day, + device, + daily_page_views, + sum(daily_page_views) over (partition by device order by day) as cumulative_page_views + from daily +) +select * from final +''' +expect = "refused SQ0008 node:column at 35..47" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with base as ( + select * from web_sessions +), +monthly as ( + select + date_trunc(month, started_at)::date as month, + count(*) as row_count + from base + group by 1 +), +with_growth as ( + select + month, + row_count, + lag(row_count) over (order by month) as previous_count + from monthly +), +final as ( + select + month, + row_count, + previous_count, + row_count - previous_count as change + from with_growth +) +select * from final +''' +expect = "refused SQ0008 node:column at 33..45" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with orders as ( + select * from orders +), +items as ( + select * from order_items +), +products as ( + select * from products +), +order_lines as ( + select + items.order_id, + products.category, + items.quantity * items.unit_price as line_total + from items + inner join products on items.product_id = products.product_id +), +category_revenue as ( + select + orders.channel, + order_lines.category, + sum(order_lines.line_total) as revenue + from order_lines + inner join orders on order_lines.order_id = orders.order_id + group by 1, 2 +) +select * from category_revenue''' +expect = "refused SQ0008 node:mul at 220..253" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with orders as ( + select * from orders where status != 'cancelled' +), +customers as ( + select * from customers where is_active +), +joined as ( + select + customers.customer_id, + customers.country, + orders.order_id, + orders.total + from customers + join orders on orders.customer_id = customers.customer_id +), +by_country as ( + select country, count(distinct customer_id) as customers, sum(total) as revenue + from joined + group by country +) +select * from by_country''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with recursive numbers as ( + select 1 as n + union all + select n + 1 from numbers where n < 10 +) +select n from numbers''' +expect = "refused SQ0002 node:with at 0..126" +expect_repository = "refused SQ0002 node:with at 0..126" + +[[query]] +category = "dbt_cte_chain" +sql = '''with +a as (select customer_id, total from orders), +b as (select customer_id, sum(total) as total from a group by customer_id), +c as (select customer_id, total, rank() over (order by total desc) as rnk from b) +select customer_id, total from c where rnk <= 10''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with orders as ( + select * from stg_orders +), +order_status_counts as ( + select + customer_id, + count_if(status = 'completed') as completed_orders, + count_if(status = 'returned') as returned_orders + from orders + group by customer_id +) +select * from order_status_counts''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with orders as ( + select * from stg_orders +), +payments as ( + select * from stg_payments +), +unpaid as ( + select orders.order_id + from orders + left join payments on payments.order_id = orders.order_id + where payments.payment_id is null +) +select count(*) as unpaid_orders from unpaid''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with orders as ( + select * from stg_orders +) +select * +from orders +where order_id not in (select order_id from stg_payments)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with orders as ( + select * from stg_orders +) +select * +from orders o +where exists (select 1 from stg_payments p where p.order_id = o.order_id)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with tickets as ( + select * from tickets +), +resolution as ( + select + ticket_id, + priority, + datediff('hour', opened_at, closed_at) as hours_to_close + from tickets + where closed_at is not null +) +select + priority, + avg(hours_to_close) as avg_hours_to_close, + median(hours_to_close) as median_hours_to_close +from resolution +group by priority''' +expect = "refused SQ0008 node:column at 36..43" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with sessions as ( + select * from web_sessions +), +first_touch as ( + select + customer_id, + min_by(attributes:utm_source::varchar, started_at) as first_source + from sessions + group by customer_id +) +select * from first_touch''' +expect = "refused SQ0008 node:column at 37..49" +expect_repository = "translated" + +[[query]] +category = "dbt_cte_chain" +sql = '''with orders as ( + select * from stg_orders +), +union_all as ( + select order_id, amount, 'order' as source from orders + union all + select payment_id, amount, 'payment' as source from stg_payments +) +select source, sum(amount) as amount from union_all group by source''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select + order_id, + customer_id, + order_date, + status, + amount, + updated_at +from stg_orders +where updated_at > (select max(updated_at) from fct_orders) +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select + order_id, + customer_id, + order_date, + status, + amount, + updated_at +from stg_orders +where updated_at >= (select max(updated_at) from fct_orders) +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select + order_id, + customer_id, + order_date, + status, + amount, + updated_at +from stg_orders +where updated_at > (select coalesce(max(updated_at), '1900-01-01') from fct_orders) +''' +expect = "refused SQ0003 fn:COALESCE at 136..175" +expect_repository = "refused SQ0003 fn:COALESCE at 136..175" + +[[query]] +category = "dbt_incremental" +sql = '''select + order_id, + customer_id, + order_date, + status, + amount, + updated_at +from stg_orders +where updated_at > (select coalesce(max(updated_at), '1900-01-01'::timestamp_ntz) from fct_orders) +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select + order_id, + customer_id, + order_date, + status, + amount, + updated_at +from stg_orders +where updated_at > (select coalesce(max(updated_at), to_timestamp_ntz('1900-01-01')) from fct_orders) +''' +expect = "refused SQ0008 fn:TO_TIMESTAMP_NTZ at 162..192" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select + order_id, + customer_id, + order_date, + status, + amount, + updated_at +from stg_orders +where updated_at > (select dateadd(hour, -3, max(updated_at)) from fct_orders) +''' +expect = "refused SQ0008 fn:DATEADD at 136..170" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select + order_id, + customer_id, + order_date, + status, + amount, + updated_at +from stg_orders +where updated_at >= (select dateadd(day, -1, max(updated_at)) from fct_orders) +''' +expect = "refused SQ0008 fn:DATEADD at 137..170" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select + order_id, + customer_id, + order_date, + status, + amount, + updated_at +from stg_orders +where updated_at > (select max(updated_at) - interval '3 hours' from fct_orders) +''' +expect = "refused SQ0008 node:sub at 136..172" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select + order_id, + customer_id, + order_date, + status, + amount, + updated_at +from stg_orders +where order_date >= (select max(order_date) from fct_orders) +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select + order_id, + customer_id, + order_date, + status, + amount, + updated_at +from stg_orders +where order_date > (select dateadd('day', -7, max(order_date)) from fct_orders) +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select + order_id, + customer_id, + order_date, + status, + amount, + updated_at +from stg_orders +where order_date >= (select coalesce(max(order_date), '2000-01-01'::date) from fct_orders) +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select + order_id, + customer_id, + order_date, + status, + amount, + updated_at +from stg_orders +where order_id > (select coalesce(max(order_id), 0) from fct_orders) +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select + order_id, + customer_id, + order_date, + status, + amount, + updated_at +from stg_orders +where updated_at > (select max(this.updated_at) from fct_orders as this) +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select + order_id, + customer_id, + order_date, + status, + amount, + updated_at +from stg_orders +where updated_at > (select max(updated_at) from fct_orders) or updated_at is null +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''with new_orders as ( + select * from stg_orders + where updated_at > (select max(updated_at) from fct_orders) +) +select * from new_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''with source as ( + select * from stg_orders +), +max_loaded as ( + select max(updated_at) as max_updated_at from fct_orders +) +select source.* +from source +cross join max_loaded +where source.updated_at > max_loaded.max_updated_at''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select s.* +from stg_orders s +left join fct_orders t on s.order_id = t.order_id +where t.order_id is null or s.updated_at > t.updated_at''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from stg_orders +where updated_at > (select max(updated_at) from fct_orders) +qualify row_number() over (partition by order_id order by updated_at desc) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from raw_orders +where _loaded_at > (select coalesce(max(updated_at), '1970-01-01') from fct_orders)''' +expect = "refused SQ0003 fn:COALESCE at 52..91" +expect_repository = "refused SQ0003 fn:COALESCE at 52..91" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from events +where occurred_at > (select max(occurred_at) from events)''' +expect = "refused SQ0008 node:column at 14..20" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from events +where occurred_at >= dateadd(day, -3, current_date())''' +expect = "refused SQ0008 node:column at 14..20" +expect_repository = "refused SQ0003 node:gte at 27..74" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from events +where occurred_at::date >= current_date() - 3''' +expect = "refused SQ0008 node:column at 14..20" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from events +where occurred_at >= dateadd(day, -3, (select max(occurred_at) from events))''' +expect = "refused SQ0008 node:column at 14..20" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from payments +where paid_at between dateadd(day, -7, current_date()) and current_date()''' +expect = "refused SQ0003 node:between at 29..96" +expect_repository = "refused SQ0003 node:between at 29..96" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from inventory_snapshots +where snapshot_date = (select max(snapshot_date) from inventory_snapshots)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from inventory_snapshots +where snapshot_date > (select max(snapshot_date) from inventory_snapshots where warehouse = 'east')''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select + customer_id, + max(updated_at) as last_seen_at +from stg_orders +where updated_at > (select max(updated_at) from fct_orders) +group by customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select order_id, amount +from stg_orders +where updated_at > ( + select max(updated_at) + from fct_orders + where order_date >= dateadd(month, -1, current_date()) +)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select order_id, amount, updated_at +from stg_orders +where updated_at > ifnull((select max(updated_at) from fct_orders), '1900-01-01')''' +expect = "refused SQ0003 fn:IFNULL at 71..133" +expect_repository = "refused SQ0003 fn:IFNULL at 71..133" + +[[query]] +category = "dbt_incremental" +sql = '''select order_id, amount, updated_at +from stg_orders +where updated_at > nvl((select max(updated_at) from fct_orders), '1900-01-01'::timestamp_ntz)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * +from raw_orders +qualify row_number() over (partition by id order by updated_at desc) = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * +from raw_orders +qualify row_number() over (partition by id order by _loaded_at desc) = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * +from raw_customers +qualify row_number() over (partition by id order by updated_at desc) = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * +from raw_customers +qualify row_number() over (partition by email order by _loaded_at desc) = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * +from raw_payments +qualify row_number() over (partition by id order by _batched_at desc) = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * +from stg_orders +qualify row_number() over (partition by order_id order by updated_at desc) = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * +from stg_customers +qualify row_number() over (partition by customer_id order by updated_at desc) = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * +from subscriptions +qualify row_number() over (partition by subscription_id order by updated_at desc) = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * +from events +qualify row_number() over (partition by event_id order by occurred_at desc) = 1 +''' +expect = "refused SQ0008 node:column at 14..20" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * +from web_sessions +qualify row_number() over (partition by session_id order by started_at desc) = 1 +''' +expect = "refused SQ0008 node:column at 14..26" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''with ranked as ( + select + *, + row_number() over (partition by id order by updated_at desc) as row_num + from raw_orders +) +select * from ranked where row_num = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''with ranked as ( + select + *, + row_number() over (partition by id order by _loaded_at desc) as row_num + from raw_orders +) +select * from ranked where row_num = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''with ranked as ( + select + *, + row_number() over (partition by id order by updated_at desc) as row_num + from raw_customers +) +select * from ranked where row_num = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''with ranked as ( + select + *, + row_number() over (partition by email order by _loaded_at desc) as row_num + from raw_customers +) +select * from ranked where row_num = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''with ranked as ( + select + *, + row_number() over (partition by id order by _batched_at desc) as row_num + from raw_payments +) +select * from ranked where row_num = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''with ranked as ( + select + *, + row_number() over (partition by order_id order by updated_at desc) as row_num + from stg_orders +) +select * from ranked where row_num = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * exclude (row_num) +from ( + select *, row_number() over (partition by id order by updated_at desc) as row_num + from raw_orders +) +where row_num = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * exclude (row_num) +from ( + select *, row_number() over (partition by id order by _loaded_at desc) as row_num + from raw_orders +) +where row_num = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * exclude (row_num) +from ( + select *, row_number() over (partition by id order by updated_at desc) as row_num + from raw_customers +) +where row_num = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * exclude (row_num) +from ( + select *, row_number() over (partition by email order by _loaded_at desc) as row_num + from raw_customers +) +where row_num = 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select id, user_id, status, updated_at +from raw_orders +qualify rank() over (partition by id order by updated_at desc) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select id, user_id, status, updated_at +from raw_orders +qualify updated_at = max(updated_at) over (partition by id)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select id, user_id, status, updated_at +from raw_orders +qualify row_number() over (partition by id order by updated_at desc, _loaded_at desc) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select id, user_id, status, updated_at +from raw_orders +qualify row_number() over (partition by id order by updated_at desc nulls last) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select distinct id, user_id, status from raw_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select id, any_value(user_id) as user_id, max(updated_at) as updated_at +from raw_orders +group by id''' +expect = "refused SQ0008 fn:ANY_VALUE at 11..29" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select id, max_by(status, updated_at) as status, max(updated_at) as updated_at +from raw_orders +group by id''' +expect = "refused SQ0008 fn:MAX_BY at 11..37" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select id, status +from raw_orders +qualify count(*) over (partition by id) > 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + events.event_id, + item.value:sku::varchar as sku, + item.value:quantity::number as quantity +from events, + lateral flatten(input => events.payload:items) as item''' +expect = "refused SQ0008 node:column at 113..119" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + e.event_id, + f.value:sku::string as sku, + f.value:price::number(10,2) as price +from events e, + lateral flatten(input => e.payload:items) f''' +expect = "refused SQ0008 node:column at 101..109" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + e.event_id, + f.index as position, + f.value::varchar as tag +from events e, + lateral flatten(input => e.payload:tags) f''' +expect = "refused SQ0008 node:column at 81..89" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + e.event_id, + f.value::varchar as tag +from events e, + lateral flatten(input => e.payload:tags, outer => true) f''' +expect = "refused SQ0008 node:column at 56..64" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + t.ticket_id, + tag.value::varchar as tag +from tickets t, + lateral flatten(input => t.tags) tag''' +expect = "refused SQ0008 node:column at 59..68" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + t.ticket_id, + tag.value::varchar as tag +from tickets t, + table(flatten(input => t.tags)) tag''' +expect = "refused SQ0008 node:column at 59..68" +expect_repository = "refused SQ0002 fn:FLATTEN at 74..109" + +[[query]] +category = "dbt_flatten" +sql = '''select + tag.value::varchar as tag, + count(*) as tickets +from tickets t, + lateral flatten(input => t.tags) tag +group by 1 +order by 2 desc''' +expect = "refused SQ0008 node:column at 67..76" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + e.event_id, + attr.key as attribute, + attr.value::varchar as value +from events e, + lateral flatten(input => e.payload:attributes) attr''' +expect = "refused SQ0008 node:column at 88..96" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + s.session_id, + a.key as attribute, + a.value::varchar as value +from web_sessions s, + lateral flatten(input => s.attributes) a''' +expect = "refused SQ0008 node:column at 84..98" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + e.event_id, + item.value:sku::varchar as sku, + option.value::varchar as option +from events e, + lateral flatten(input => e.payload:items) item, + lateral flatten(input => item.value:options) option''' +expect = "refused SQ0008 node:column at 100..108" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + r.raw:id::varchar as event_id, + f.value:name::varchar as product_name +from raw_events r, + lateral flatten(input => r.raw:products) f''' +expect = "refused SQ0008 node:column at 89..101" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + r.raw:id::varchar as event_id, + f.path, + f.value +from raw_events r, + lateral flatten(input => r.raw, recursive => true) f''' +expect = "refused SQ0008 node:column at 71..83" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "dbt_flatten" +sql = '''select + f.value:sku::varchar as sku, + sum(f.value:quantity::number) as units +from events e, + lateral flatten(input => e.payload:items) f +where e.event_type = 'purchase' +group by 1''' +expect = "refused SQ0008 node:column at 88..96" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + e.event_id, + array_size(e.payload:items) as item_count +from events e''' +expect = "refused SQ0008 node:column at 74..82" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + e.event_id, + e.payload:items[0]:sku::varchar as first_sku +from events e''' +expect = "refused SQ0008 node:column at 77..85" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + e.event_id, + array_agg(f.value:sku::varchar) within group (order by f.index) as skus +from events e, + lateral flatten(input => e.payload:items) f +group by e.event_id''' +expect = "refused SQ0008 node:column at 104..112" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + e.customer_id, + object_agg(e.event_type, e.payload) as last_payload_by_type +from events e +group by e.customer_id''' +expect = "refused SQ0008 node:column at 95..103" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "dbt_flatten" +sql = '''select + e.event_id, + f.value:sku::varchar as sku +from events e +join lateral flatten(input => e.payload:items) f''' +expect = "refused SQ0008 node:column at 60..68" +expect_repository = "refused SQ0002 node:lateral at 74..117" +snowflake = "compiles" + +[[query]] +category = "dbt_flatten" +sql = '''select + e.event_id, + f.value:sku::varchar as sku +from events e +inner join lateral flatten(input => e.payload:items) f on true''' +expect = "refused SQ0008 node:column at 60..68" +expect_repository = "refused SQ0002 node:lateral at 80..123" +snowflake = "rejects 2" + +[[query]] +category = "dbt_flatten" +sql = '''select + f.value::varchar as tag +from table(flatten(input => parse_json('["a", "b", "c"]'))) f''' +expect = "refused SQ0002 fn:FLATTEN at 40..96" +expect_repository = "refused SQ0002 fn:FLATTEN at 40..96" + +[[query]] +category = "dbt_flatten" +sql = '''select + f.value::number as n +from table(flatten(input => array_construct(1, 2, 3))) f''' +expect = "refused SQ0002 fn:FLATTEN at 37..88" +expect_repository = "refused SQ0002 fn:FLATTEN at 37..88" + +[[query]] +category = "dbt_flatten" +sql = '''select + e.event_id, + f.value:sku::varchar as sku, + f.value:quantity::number * f.value:price::number(10,2) as line_total +from events e, + lateral flatten(input => e.payload:items) f +where f.value:quantity::number > 0''' +expect = "refused SQ0008 node:column at 134..142" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + e.event_id, + f.this +from events e, + lateral flatten(input => e.payload:items) f''' +expect = "refused SQ0008 node:column at 39..47" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + e.event_id, + f.seq, + f.key, + f.index, + f.value +from events e, + lateral flatten(input => e.payload) f''' +expect = "refused SQ0008 node:column at 75..83" +expect_repository = "refused SQ0003 node:column at 27..32" + +[[query]] +category = "dbt_flatten" +sql = '''select + t.ticket_id, + s.value::varchar as word +from tickets t, + lateral split_to_table(t.subject, ' ') s''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select + t.ticket_id, + array_to_string(t.tags, ', ') as tag_list +from tickets t''' +expect = "refused SQ0008 node:column at 75..84" +expect_repository = "translated" + +[[query]] +category = "ddl_dml" +sql = '''merge into fct_orders as target +using ( + select * from stg_orders + where updated_at > (select max(updated_at) from fct_orders) +) as source +on target.order_id = source.order_id +when matched then update set + target.status = source.status, + target.amount = source.amount, + target.updated_at = source.updated_at +when not matched then insert (order_id, customer_id, order_date, status, amount, updated_at) + values (source.order_id, source.customer_id, source.order_date, source.status, source.amount, source.updated_at)''' +expect = "refused SQ0002 node:merge at 11..531" +expect_repository = "refused SQ0002 node:merge at 11..531" + +[[query]] +category = "ddl_dml" +sql = '''merge into fct_orders t +using stg_orders s +on t.order_id = s.order_id +when matched and s.status = 'deleted' then delete +when matched then update set status = s.status, amount = s.amount, updated_at = s.updated_at +when not matched then insert values (s.order_id, s.customer_id, s.order_date, s.status, s.amount, s.updated_at)''' +expect = "refused SQ0002 node:merge at 11..323" +expect_repository = "refused SQ0002 node:merge at 11..323" + +[[query]] +category = "ddl_dml" +sql = '''merge into fct_orders t +using (select * from stg_orders qualify row_number() over (partition by order_id order by updated_at desc) = 1) s +on t.order_id = s.order_id +when matched then update set t.amount = s.amount +when not matched then insert (order_id, amount) values (s.order_id, s.amount)''' +expect = "refused SQ0002 node:merge at 11..290" +expect_repository = "refused SQ0002 node:merge at 11..290" + +[[query]] +category = "ddl_dml" +sql = '''delete from fct_orders +where order_id in (select order_id from stg_orders where updated_at > (select max(updated_at) from fct_orders))''' +expect = "refused SQ0002 node:delete at 12..134" +expect_repository = "refused SQ0002 node:delete at 12..134" + +[[query]] +category = "ddl_dml" +sql = '''insert into fct_orders (order_id, customer_id, order_date, status, amount, updated_at) +select order_id, customer_id, order_date, status, amount, updated_at +from stg_orders +where updated_at > (select max(updated_at) from fct_orders)''' +expect = "refused SQ0002 node:insert at 12..231" +expect_repository = "refused SQ0002 node:insert at 12..231" + +[[query]] +category = "ddl_dml" +sql = '''insert overwrite into fct_orders +select * from stg_orders''' +expect = "refused SQ0002 node:insert at 22..57" +expect_repository = "refused SQ0002 node:insert at 22..57" + +[[query]] +category = "ddl_dml" +sql = '''create or replace table fct_orders as ( + select * from stg_orders +)''' +expect = "refused SQ0002 node:create_table at 24..68" +expect_repository = "refused SQ0002 node:create_table at 24..68" + +[[query]] +category = "ddl_dml" +sql = '''create or replace transient table fct_orders as +select * from stg_orders''' +expect = "refused SQ0002 node:create_table at 34..72" +expect_repository = "refused SQ0002 node:create_table at 34..72" + +[[query]] +category = "ddl_dml" +sql = '''create or replace view stg_orders_v as +select order_id, status from stg_orders''' +expect = "refused SQ0002 node:create_view at 23..78" +expect_repository = "refused SQ0002 node:create_view at 23..78" + +[[query]] +category = "ddl_dml" +sql = '''create or replace temporary table fct_orders__dbt_tmp as +select * from stg_orders where updated_at > (select max(updated_at) from fct_orders)''' +expect = "refused SQ0002 node:create_table at 34..141" +expect_repository = "refused SQ0002 node:create_table at 34..141" + +[[query]] +category = "ddl_dml" +sql = '''update fct_orders +set status = 'archived' +where order_date < dateadd(year, -2, current_date())''' +expect = "refused SQ0002 node:update at 7..94" +expect_repository = "refused SQ0002 node:update at 7..94" + +[[query]] +category = "ddl_dml" +sql = '''update fct_orders t +set amount = s.amount +from stg_orders s +where t.order_id = s.order_id''' +expect = "refused SQ0002 node:update at 7..89" +expect_repository = "refused SQ0002 node:update at 7..89" + +[[query]] +category = "ddl_dml" +sql = '''alter table fct_orders add column if not exists channel varchar''' +expect = "refused SQ0002 node:alter_table at 12..55" +expect_repository = "refused SQ0002 node:alter_table at 12..55" + +[[query]] +category = "ddl_dml" +sql = '''truncate table fct_orders''' +expect = "refused SQ0002 node:truncate at 15..25" +expect_repository = "refused SQ0002 node:truncate at 15..25" + +[[query]] +category = "ddl_dml" +sql = '''begin; +delete from fct_orders where order_date = current_date(); +insert into fct_orders select * from stg_orders where order_date = current_date(); +commit;''' +expect = "refused SQ0002 node:transaction at 0..155" +expect_repository = "refused SQ0002 node:transaction at 0..155" + +[[query]] +category = "dbt_date_spine" +sql = '''select + dateadd(day, seq4(), '2024-01-01'::date) as date_day +from table(generator(rowcount => 366))''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''select + dateadd(day, row_number() over (order by seq4()) - 1, '2024-01-01'::date) as date_day +from table(generator(rowcount => 366))''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''select + dateadd('day', seq4(), to_date('2023-01-01')) as date_day +from table(generator(rowcount => 730))''' +expect = "refused SQ0008 fn:TO_DATE at 34..55" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''select + dateadd(month, seq4(), '2020-01-01'::date) as month_start +from table(generator(rowcount => 72))''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''select + seq4() as n +from table(generator(rowcount => 10))''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''select + uniform(1, 100, random()) as roll +from table(generator(rowcount => 5))''' +expect = "refused SQ0002 fn:UNIFORM at 11..36" +expect_repository = "refused SQ0002 fn:UNIFORM at 11..36" + +[[query]] +category = "dbt_date_spine" +sql = '''with spine as ( + select dateadd(day, seq4(), '2024-01-01'::date) as date_day + from table(generator(rowcount => 366)) +) +select date_day +from spine +where date_day <= current_date()''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''with spine as ( + select dateadd(day, seq4(), '2024-01-01'::date) as date_day + from table(generator(rowcount => 366)) +), +daily_orders as ( + select ordered_at::date as order_day, sum(total) as revenue + from orders + group by 1 +) +select + spine.date_day, + coalesce(daily_orders.revenue, 0) as revenue +from spine +left join daily_orders on daily_orders.order_day = spine.date_day''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''with spine as ( + select dateadd(day, seq4(), '2024-01-01'::date) as date_day + from table(generator(rowcount => 366)) +) +select + date_day, + year(date_day) as year, + quarter(date_day) as quarter, + month(date_day) as month, + dayofweek(date_day) as day_of_week, + dayname(date_day) as day_name, + monthname(date_day) as month_name, + weekofyear(date_day) as week_of_year, + dayofweek(date_day) in (0, 6) as is_weekend +from spine''' +expect = "refused SQ0002 fn:DAYOFWEEK at 242..261" +expect_repository = "refused SQ0002 fn:DAYOFWEEK at 242..261" + +[[query]] +category = "dbt_date_spine" +sql = '''with spine as ( + select dateadd(day, seq4(), '2024-01-01'::date) as date_day + from table(generator(rowcount => 366)) +) +select + date_day, + date_trunc('week', date_day) as week_start, + last_day(date_day) as month_end, + date_day = last_day(date_day) as is_month_end +from spine''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''with spine as ( + select dateadd(day, seq4(), '2024-01-01'::date) as date_day + from table(generator(rowcount => 366)) +), +customers_by_day as ( + select spine.date_day, count(c.customer_id) as active_customers + from spine + left join customers c on c.signup_date <= spine.date_day + group by 1 +) +select * from customers_by_day''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''with spine as ( + select dateadd(day, seq4(), '2024-01-01'::date) as date_day + from table(generator(rowcount => 366)) +) +select + spine.date_day, + count(s.subscription_id) as active_subscriptions, + sum(s.mrr) as mrr +from spine +left join subscriptions s + on s.started_at::date <= spine.date_day + and (s.cancelled_at is null or s.cancelled_at::date > spine.date_day) +group by 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''with spine as ( + select dateadd(day, seq4(), '2024-01-01'::date) as date_day + from table(generator(rowcount => 366)) +), +products_by_day as ( + select spine.date_day, p.product_id + from spine + cross join products p +) +select + products_by_day.date_day, + products_by_day.product_id, + coalesce(i.on_hand, 0) as on_hand +from products_by_day +left join inventory_snapshots i + on i.product_id = products_by_day.product_id + and i.snapshot_date = products_by_day.date_day''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''with spine as ( + select dateadd(day, seq4(), '2024-01-01'::date) as date_day + from table(generator(rowcount => 366)) +) +select + spine.date_day, + last_value(f.rate_to_usd ignore nulls) over (order by spine.date_day rows between unbounded preceding and current row) as rate_to_usd +from spine +left join fx_rates f on f.rate_date = spine.date_day and f.currency = 'EUR'''' +expect = "translated" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "dbt_date_spine" +sql = '''select + dateadd(hour, seq4(), '2024-01-01'::timestamp_ntz) as hour_start +from table(generator(rowcount => 24 * 7))''' +expect = "refused SQ0003 fn:GENERATOR at 81..117" +expect_repository = "refused SQ0003 fn:GENERATOR at 81..117" + +[[query]] +category = "dbt_date_spine" +sql = '''select + dateadd(day, seq4(), current_date() - 30) as date_day +from table(generator(rowcount => 31))''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''select + row_number() over (order by null) as id +from table(generator(rowcount => 100))''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''select + seq8() as id +from table(generator(rowcount => 100))''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''select + dateadd(day, value::int, '2024-01-01'::date) as date_day +from table(flatten(input => array_generate_range(0, 366)))''' +expect = "refused SQ0002 fn:FLATTEN at 73..126" +expect_repository = "refused SQ0002 fn:FLATTEN at 73..126" +snowflake = "compiles" + +[[query]] +category = "dbt_date_spine" +sql = '''with recursive spine as ( + select '2024-01-01'::date as date_day + union all + select dateadd(day, 1, date_day) from spine where date_day < '2024-12-31' +) +select date_day from spine''' +expect = "refused SQ0002 node:with at 0..188" +expect_repository = "refused SQ0002 node:with at 0..188" + +[[query]] +category = "dbt_date_spine" +sql = '''with spine as ( + select dateadd(week, seq4(), '2024-01-01'::date) as week_start + from table(generator(rowcount => 52)) +) +select + spine.week_start, + count(o.order_id) as orders +from spine +left join orders o + on o.ordered_at >= spine.week_start + and o.ordered_at < dateadd(week, 1, spine.week_start) +group by 1 +order by 1''' +expect = "refused SQ0003 node:gte at 225..257" +expect_repository = "refused SQ0003 node:gte at 225..257" + +[[query]] +category = "dbt_date_spine" +sql = '''with spine as ( + select dateadd(day, seq4(), '2024-01-01'::date) as date_day + from table(generator(rowcount => 366)) +) +select + date_day, + to_char(date_day, 'YYYY-MM') as year_month, + to_char(date_day, 'DY') as day_short +from spine''' +expect = "refused SQ0003 fn:TO_CHAR at 198..221" +expect_repository = "refused SQ0003 fn:TO_CHAR at 198..221" + +[[query]] +category = "dbt_date_spine" +sql = '''select + dateadd(minute, 15 * seq4(), '2024-01-01'::timestamp_ntz) as slot_start +from table(generator(rowcount => 96))''' +expect = "refused SQ0008 fn:DATEADD at 11..68" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''select + dateadd(day, seq4(), '2024-01-01') as date_day +from table(generator(rowcount => 10))''' +expect = "refused SQ0008 fn:DATEADD at 11..45" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "dbt_date_spine" +sql = '''select + dateadd(day, seq4(), '2024-01-01'::date) as date_day +from table(generator(timelimit => 1))''' +expect = "refused SQ0003 fn:GENERATOR at 69..101" +expect_repository = "refused SQ0003 fn:GENERATOR at 69..101" +snowflake = "compiles" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + sum(total) over (partition by customer_id order by ordered_at rows between unbounded preceding and current row) as running_total +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + avg(total) over (partition by customer_id order by ordered_at rows between 2 preceding and current row) as moving_avg_3 +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + avg(total) over (order by ordered_at rows between 6 preceding and current row) as moving_avg_7 +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + sum(total) over (partition by customer_id order by ordered_at rows between current row and unbounded following) as remaining_total +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + sum(total) over (partition by customer_id order by ordered_at rows between 1 preceding and 1 following) as neighbour_sum +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + min(total) over (partition by customer_id order by ordered_at rows between unbounded preceding and unbounded following) as min_total +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + count(*) over (partition by customer_id order by ordered_at rows between unbounded preceding and 1 preceding) as prior_orders +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + sum(total) over (partition by customer_id order by ordered_at range between unbounded preceding and current row) as running_total_range +from orders +''' +expect = "refused SQ0003 fn:SUM at 69..181" +expect_repository = "refused SQ0003 fn:SUM at 69..181" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + sum(total) over (partition by customer_id order by ordered_at) as running_total_default +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + sum(total) over (partition by customer_id) as customer_total +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + total / sum(total) over (partition by customer_id) as share_of_customer +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + ratio_to_report(total) over (partition by customer_id) as ratio +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + lag(total) over (partition by customer_id order by ordered_at) as previous_total +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + lag(total, 1, 0) over (partition by customer_id order by ordered_at) as previous_total_or_zero +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + lead(ordered_at) over (partition by customer_id order by ordered_at) as next_ordered_at +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + datediff('day', lag(ordered_at) over (partition by customer_id order by ordered_at), ordered_at) as days_since_previous +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + first_value(total) over (partition by customer_id order by ordered_at) as first_total +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + last_value(total) over (partition by customer_id order by ordered_at rows between unbounded preceding and unbounded following) as last_total +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + nth_value(total, 2) over (partition by customer_id order by ordered_at) as second_total +from orders +''' +expect = "refused SQ0002 fn:NTH_VALUE at 69..140" +expect_repository = "refused SQ0002 fn:NTH_VALUE at 69..140" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + row_number() over (partition by customer_id order by ordered_at) as order_sequence +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + rank() over (order by total desc) as total_rank +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + dense_rank() over (partition by channel order by total desc) as channel_rank +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + percent_rank() over (order by total) as total_percentile +from orders +''' +expect = "refused SQ0002 fn:PERCENT_RANK at 69..105" +expect_repository = "refused SQ0002 fn:PERCENT_RANK at 69..105" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + cume_dist() over (order by total) as total_cume_dist +from orders +''' +expect = "refused SQ0002 fn:CUME_DIST at 69..102" +expect_repository = "refused SQ0002 fn:CUME_DIST at 69..102" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + ntile(4) over (order by total) as total_quartile +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + count(distinct status) over (partition by customer_id) as distinct_statuses +from orders +''' +expect = "translated" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + max(total) over (partition by customer_id order by ordered_at rows between 3 preceding and 1 preceding) as max_prior_three +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + sum(iff(status = 'returned', 1, 0)) over (partition by customer_id order by ordered_at) as returns_so_far +from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + conditional_true_event(datediff('minute', lag(ordered_at) over (partition by customer_id order by ordered_at), ordered_at) > 30) over (partition by customer_id order by ordered_at) as session_number +from orders +''' +expect = "refused SQ0002 fn:CONDITIONAL_TRUE_EVENT at 69..249" +expect_repository = "refused SQ0002 fn:CONDITIONAL_TRUE_EVENT at 69..249" +snowflake = "compiles" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + avg(total) over (partition by customer_id order by ordered_at range between interval '7 days' preceding and current row) as avg_7_days +from orders +''' +expect = "refused SQ0003 fn:AVG at 69..189" +expect_repository = "refused SQ0003 fn:AVG at 69..189" +snowflake = "compiles" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + lag(total) ignore nulls over (partition by customer_id order by ordered_at) as previous_non_null +from orders +''' +expect = "translated" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + customer_id, + ordered_at, + total, + median(total) over (partition by customer_id) as median_total +from orders +''' +expect = "refused SQ0002 fn:MEDIAN at 69..114" +expect_repository = "refused SQ0002 fn:MEDIAN at 69..114" + +[[query]] +category = "dbt_window_frames" +sql = '''select + order_id, + sum(total) over w as running_total, + avg(total) over w as running_avg +from orders +window w as (partition by customer_id order by ordered_at)''' +expect = "refused SQ0002 node:select at 0..168" +expect_repository = "refused SQ0002 node:select at 0..168" +snowflake = "rejects 1003" + +[[query]] +category = "dbt_window_frames" +sql = '''with sessions as ( + select + customer_id, + started_at, + case + when datediff('minute', lag(started_at) over (partition by customer_id order by started_at), started_at) > 30 + or lag(started_at) over (partition by customer_id order by started_at) is null + then 1 else 0 + end as is_new_session + from web_sessions +) +select + customer_id, + started_at, + sum(is_new_session) over (partition by customer_id order by started_at rows between unbounded preceding and current row) as session_index +from sessions''' +expect = "refused SQ0008 node:column at 366..378" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''with daily as ( + select ordered_at::date as day, sum(total) as revenue + from orders + group by 1 +) +select + day, + revenue, + avg(revenue) over (order by day rows between 6 preceding and current row) as revenue_7d_avg, + sum(revenue) over (order by day rows between 27 preceding and current row) as revenue_28d +from daily''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_pivot" +sql = '''select * +from (select order_id, payment_method, amount from stg_payments) +pivot (sum(amount) for payment_method in ('credit_card', 'coupon', 'bank_transfer', 'gift_card'))''' +expect = "refused SQ0003 node:pivot at 22..111" +expect_repository = "refused SQ0003 node:pivot at 22..111" + +[[query]] +category = "dbt_pivot" +sql = '''select * +from (select order_id, payment_method, amount from stg_payments) +pivot (sum(amount) for payment_method in ('credit_card', 'coupon', 'bank_transfer', 'gift_card')) + as p (order_id, credit_card_amount, coupon_amount, bank_transfer_amount, gift_card_amount)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_pivot" +sql = '''select * +from (select customer_id, channel, total from orders) +pivot (count(total) for channel in ('web', 'store', 'phone'))''' +expect = "refused SQ0003 node:pivot at 22..94" +expect_repository = "refused SQ0003 node:pivot at 22..94" + +[[query]] +category = "dbt_pivot" +sql = '''select * +from (select customer_id, channel, total from orders) +pivot (sum(total) for channel in (any order by channel))''' +expect = "refused SQ0003 node:pivot at 22..117" +expect_repository = "refused SQ0003 node:pivot at 22..117" +snowflake = "compiles" + +[[query]] +category = "dbt_pivot" +sql = '''select * +from (select customer_id, channel, total from orders) +pivot (sum(total) for channel in (select distinct channel from orders))''' +expect = "refused SQ0003 node:pivot at 22..132" +expect_repository = "refused SQ0003 node:pivot at 22..132" +snowflake = "compiles" + +[[query]] +category = "dbt_pivot" +sql = '''select * +from (select customer_id, channel, total from orders) +pivot (sum(total) for channel in ('web', 'store') default on null (0))''' +expect = "refused SQ0002 node:pivot at 22..92" +expect_repository = "refused SQ0002 node:pivot at 22..92" +snowflake = "compiles" + +[[query]] +category = "dbt_pivot" +sql = '''select * +from (select warehouse, product_id, on_hand from inventory_snapshots where snapshot_date = '2024-06-30') +pivot (sum(on_hand) for warehouse in ('east', 'west'))''' +expect = "refused SQ0003 node:pivot at 22..147" +expect_repository = "refused SQ0003 node:pivot at 22..147" + +[[query]] +category = "dbt_pivot" +sql = '''select + order_id, + sum(case when payment_method = 'credit_card' then amount end) as credit_card_amount, + sum(case when payment_method = 'coupon' then amount end) as coupon_amount +from stg_payments +group by 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_pivot" +sql = '''select + customer_id, + count_if(channel = 'web') as web_orders, + count_if(channel = 'store') as store_orders +from orders +group by 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_pivot" +sql = '''select + customer_id, + sum(iff(channel = 'web', total, 0)) as web_total, + sum(iff(channel = 'store', total, 0)) as store_total +from orders +group by 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_pivot" +sql = '''select + date_trunc('month', ordered_at)::date as month, + sum(case when status = 'completed' then 1 else 0 end) as completed, + sum(case when status = 'returned' then 1 else 0 end) as returned, + sum(case when status = 'cancelled' then 1 else 0 end) as cancelled +from orders +group by 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_pivot" +sql = '''select order_id, metric, value +from (select order_id, total, discount from orders) +unpivot (value for metric in (total, discount))''' +expect = "refused SQ0002 node:unpivot at 44..128" +expect_repository = "refused SQ0002 node:unpivot at 44..128" + +[[query]] +category = "dbt_pivot" +sql = '''select customer_id, metric, value +from ( + select customer_id, sum(total) as revenue, sum(discount) as discounts + from orders + group by 1 +) +unpivot (value for metric in (revenue, discounts))''' +expect = "refused SQ0002 node:unpivot at 52..196" +expect_repository = "refused SQ0002 node:unpivot at 52..196" + +[[query]] +category = "dbt_pivot" +sql = '''select order_id, metric, value +from (select order_id, total, discount from orders) +unpivot include nulls (value for metric in (total, discount))''' +expect = "refused SQ0002 node:unpivot at 44..142" +expect_repository = "refused SQ0002 node:unpivot at 44..142" +snowflake = "compiles" + +[[query]] +category = "dbt_pivot" +sql = '''select order_id, 'total' as metric, total as value from orders +union all +select order_id, 'discount' as metric, discount as value from orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_pivot" +sql = '''select o.order_id, m.metric, m.value +from orders o, + lateral ( + select 'total' as metric, o.total as value + union all + select 'discount', o.discount + ) m''' +expect = "translated" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "dbt_pivot" +sql = '''select customer_id, channel, total_web, total_store +from (select customer_id, channel, total from orders) +pivot (sum(total) for channel in ('web' as total_web, 'store' as total_store))''' +expect = "refused SQ0003 node:pivot at 65..182" +expect_repository = "refused SQ0003 node:pivot at 65..182" +snowflake = "rejects 904" + +[[query]] +category = "dbt_pivot" +sql = '''select * +from orders +pivot (sum(total) for channel in ('web', 'store'))''' +expect = "refused SQ0003 node:pivot at 14..50" +expect_repository = "refused SQ0003 node:pivot at 14..50" + +[[query]] +category = "dbt_marts" +sql = '''with orders as ( + select * from fct_orders +), +customers as ( + select * from stg_customers +), +cohorts as ( + select + customer_id, + date_trunc('month', min(order_date)) as cohort_month + from orders + group by 1 +), +activity as ( + select + o.customer_id, + c.cohort_month, + datediff('month', c.cohort_month, date_trunc('month', o.order_date)) as months_since_first + from orders o + join cohorts c using (customer_id) +) +select + cohort_month, + months_since_first, + count(distinct customer_id) as active_customers +from activity +group by 1, 2 +order by 1, 2''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + c.customer_id, + c.email, + count(o.order_id) as lifetime_orders, + sum(o.amount) as lifetime_value, + min(o.order_date) as first_order_date, + max(o.order_date) as last_order_date, + datediff('day', max(o.order_date), current_date()) as days_since_last_order +from stg_customers c +left join fct_orders o on o.customer_id = c.customer_id +group by 1, 2''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + c.customer_id, + case + when count(o.order_id) = 0 then 'prospect' + when count(o.order_id) = 1 then 'new' + when max(o.order_date) < dateadd(day, -90, current_date()) then 'lapsed' + else 'repeat' + end as lifecycle_stage +from stg_customers c +left join fct_orders o on o.customer_id = c.customer_id +group by 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + o.order_id, + o.customer_id, + o.order_date, + o.amount, + o.amount * fx.rate_to_usd as amount_usd +from fct_orders o +left join fx_rates fx + on fx.rate_date = o.order_date + and fx.currency = 'EUR'''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + p.category, + date_trunc('month', o.ordered_at) as month, + sum(i.quantity) as units, + sum(i.quantity * i.unit_price) as revenue, + div0(sum(i.quantity * i.unit_price), sum(i.quantity)) as avg_unit_price +from order_items i +join orders o on o.order_id = i.order_id +join products p on p.product_id = i.product_id +group by 1, 2''' +expect = "refused SQ0008 fn:SUM at 75..90" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + p.category, + sum(i.quantity * i.unit_price) as revenue, + sum(i.quantity * i.unit_price) / nullif(sum(sum(i.quantity * i.unit_price)) over (), 0) as share_of_revenue +from order_items i +join products p on p.product_id = i.product_id +group by 1''' +expect = "refused SQ0008 node:mul at 31..56" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + plan, + date_trunc('month', started_at)::date as start_month, + count(*) as new_subscriptions, + sum(mrr) as new_mrr +from subscriptions +group by 1, 2''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + date_trunc('month', cancelled_at)::date as churn_month, + count(*) as churned, + sum(mrr) as churned_mrr +from subscriptions +where cancelled_at is not null +group by 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + s.customer_id, + s.plan, + s.mrr, + s.mrr * 12 as arr, + datediff('month', s.started_at, coalesce(s.cancelled_at, current_timestamp())) as tenure_months +from subscriptions s''' +expect = "refused SQ0003 fn:DATEDIFF at 76..154" +expect_repository = "refused SQ0003 fn:DATEDIFF at 76..154" + +[[query]] +category = "dbt_marts" +sql = '''select + o.channel, + count(distinct o.customer_id) as customers, + count(*) as orders, + sum(o.total) as revenue, + round(sum(o.total) / count(*), 2) as avg_order_value +from orders o +where o.status not in ('cancelled', 'returned') +group by 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + o.order_id, + o.total, + coalesce(sum(p.amount), 0) as paid, + o.total - coalesce(sum(p.amount), 0) as outstanding +from orders o +left join payments p on p.order_id = o.order_id +group by o.order_id, o.total +having outstanding <> 0''' +expect = "translated" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "dbt_marts" +sql = '''select + t.priority, + count(*) as tickets, + count_if(t.closed_at is null) as open_tickets, + avg(datediff('hour', t.opened_at, t.closed_at)) as avg_hours_to_close +from tickets t +group by 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + c.country, + count(distinct t.ticket_id) as tickets, + count(distinct o.order_id) as orders, + div0(count(distinct t.ticket_id), count(distinct o.order_id)) as tickets_per_order +from customers c +left join tickets t on t.customer_id = c.customer_id +left join orders o on o.customer_id = c.customer_id +group by 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + s.device, + count(*) as sessions, + sum(s.page_views) as page_views, + avg(s.page_views) as avg_page_views +from web_sessions s +group by 1''' +expect = "refused SQ0008 fn:SUM at 51..68" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + s.attributes:utm_source::varchar as source, + count(distinct s.customer_id) as visitors, + count(distinct o.customer_id) as buyers +from web_sessions s +left join orders o + on o.customer_id = s.customer_id + and o.ordered_at between s.started_at and dateadd(day, 7, s.started_at) +group by 1''' +expect = "refused SQ0008 node:column at 151..165" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + i.warehouse, + i.snapshot_date, + sum(i.on_hand) as units_on_hand, + sum(i.on_hand * p.price) as stock_value +from inventory_snapshots i +join products p on p.product_id = i.product_id +group by 1, 2''' +expect = "refused SQ0008 fn:SUM at 49..63" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + product_id, + snapshot_date, + on_hand, + on_hand - lag(on_hand) over (partition by product_id, warehouse order by snapshot_date) as change +from inventory_snapshots''' +expect = "refused SQ0008 node:sub at 59..146" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + date_trunc('week', ordered_at)::date as week, + approx_count_distinct(customer_id) as approx_customers, + count(distinct customer_id) as customers +from orders +group by 1''' +expect = "refused SQ0002 fn:APPROX_COUNT_DISTINCT at 61..95" +expect_repository = "refused SQ0002 fn:APPROX_COUNT_DISTINCT at 61..95" + +[[query]] +category = "dbt_marts" +sql = '''select + customer_id, + listagg(distinct channel, ', ') within group (order by channel) as channels +from orders +group by 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + customer_id, + percentile_cont(0.5) within group (order by total) as median_order +from orders +group by 1''' +expect = "refused SQ0008 fn:PERCENTILE_CONT at 72..77" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + o.order_id, + o.customer_id, + o.total, + c.email, + c.country +from orders o +left join customers c on c.customer_id = o.customer_id +where c.customer_id is null or c.is_active''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + o.order_id, + datediff('hour', o.ordered_at, o.shipped_at) as hours_to_ship, + iff(datediff('hour', o.ordered_at, o.shipped_at) <= 48, 'on_time', 'late') as shipping_sla +from orders o +where o.shipped_at is not null''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + o.customer_id, + o.order_id, + o.total, + sum(o.total) over (partition by o.customer_id) as customer_total, + o.total / nullif(sum(o.total) over (partition by o.customer_id), 0) as share +from orders o''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + year(ordered_at) as year, + month(ordered_at) as month, + sum(total) as revenue, + sum(total) - lag(sum(total)) over (order by year(ordered_at), month(ordered_at)) as revenue_change +from orders +group by 1, 2''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + customer_id, + array_agg(distinct channel) as channels, + array_size(array_agg(distinct channel)) as channel_count +from orders +group by 1''' +expect = "refused SQ0008 fn:ARRAY_AGG at 28..55" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + c.customer_id, + object_construct('email', c.email, 'country', c.country) as profile +from customers c''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + c.customer_id, + to_json(object_construct('email', c.email)) as profile_json +from customers c''' +expect = "refused SQ0008 fn:TO_JSON at 30..73" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + o.customer_id, + sum(o.total) as revenue +from orders o +group by all''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + o.channel, + o.status, + count(*) as orders +from orders o +group by rollup (o.channel, o.status)''' +expect = "refused SQ0002 fn:ROLLUP at 90..109" +expect_repository = "refused SQ0002 fn:ROLLUP at 90..109" + +[[query]] +category = "dbt_marts" +sql = '''select + o.channel, + o.status, + count(*) as orders, + grouping(o.channel) as channel_rollup +from orders o +group by grouping sets ((o.channel), (o.status), ())''' +expect = "refused SQ0002 fn:GROUPING SETS at 141..162" +expect_repository = "refused SQ0002 fn:GROUPING SETS at 141..162" + +[[query]] +category = "dbt_snapshot" +sql = '''select + customer_id, + email, + country, + updated_at as dbt_valid_from, + lead(updated_at) over (partition by customer_id order by updated_at) as dbt_valid_to +from stg_customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_snapshot" +sql = '''select + customer_id, + email, + updated_at as valid_from, + coalesce(lead(updated_at) over (partition by customer_id order by updated_at), '9999-12-31'::timestamp_ntz) as valid_to, + lead(updated_at) over (partition by customer_id order by updated_at) is null as is_current +from stg_customers''' +expect = "refused SQ0003 node:cast at 148..175" +expect_repository = "refused SQ0003 node:cast at 148..175" + +[[query]] +category = "dbt_snapshot" +sql = '''select + md5(coalesce(cast(customer_id as varchar), '') || '|' || coalesce(cast(updated_at as varchar), '')) as dbt_scd_id, + customer_id, + updated_at as dbt_updated_at +from stg_customers''' +expect = "refused SQ0008 node:cast at 77..104" +expect_repository = "translated" + +[[query]] +category = "dbt_snapshot" +sql = '''with history as ( + select + customer_id, + email, + updated_at as valid_from, + lead(updated_at) over (partition by customer_id order by updated_at) as valid_to + from stg_customers +) +select * +from history +where '2024-06-30'::timestamp_ntz >= valid_from + and ('2024-06-30'::timestamp_ntz < valid_to or valid_to is null)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_snapshot" +sql = '''select + o.order_id, + h.email as email_at_order_time +from fct_orders o +left join ( + select + customer_id, + email, + updated_at as valid_from, + lead(updated_at) over (partition by customer_id order by updated_at) as valid_to + from stg_customers +) h + on h.customer_id = o.customer_id + and o.updated_at >= h.valid_from + and (o.updated_at < h.valid_to or h.valid_to is null)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_snapshot" +sql = '''select + customer_id, + email, + lag(email) over (partition by customer_id order by updated_at) as previous_email +from stg_customers +qualify email is distinct from previous_email''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_snapshot" +sql = '''select + customer_id, + email, + updated_at +from stg_customers +qualify email <> lag(email) over (partition by customer_id order by updated_at) + or lag(email) over (partition by customer_id order by updated_at) is null''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_snapshot" +sql = '''select + s.customer_id, + s.email, + s.updated_at +from stg_customers s +where not exists ( + select 1 + from stg_customers newer + where newer.customer_id = s.customer_id + and newer.updated_at > s.updated_at +)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_snapshot" +sql = '''select * +from stg_customers +at (timestamp => '2024-06-30 00:00:00'::timestamp_ltz)''' +expect = "refused SQ0002 node:table at 14..81" +expect_repository = "refused SQ0002 node:table at 14..81" +snowflake = "compiles" + +[[query]] +category = "dbt_snapshot" +sql = '''select * +from stg_customers +changes (information => default) +at (offset => -3600)''' +expect = "refused SQ0002 node:table at 14..80" +expect_repository = "refused SQ0002 node:table at 14..80" +snowflake = "rejects 91930" + +[[query]] +category = "dbt_tests" +sql = '''select order_id +from stg_orders +where order_id is null +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''select + order_id as unique_field, + count(*) as n_records +from stg_orders +where order_id is not null +group by order_id +having count(*) > 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''select customer_id +from stg_customers +where customer_id is null +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''select + customer_id as unique_field, + count(*) as n_records +from stg_customers +where customer_id is not null +group by customer_id +having count(*) > 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''select payment_id +from stg_payments +where payment_id is null +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''select + payment_id as unique_field, + count(*) as n_records +from stg_payments +where payment_id is not null +group by payment_id +having count(*) > 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''select order_id +from fct_orders +where order_id is null +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''select + order_id as unique_field, + count(*) as n_records +from fct_orders +where order_id is not null +group by order_id +having count(*) > 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''with all_values as ( + select status as value_field, count(*) as n_records + from stg_orders + group by status +) +select * +from all_values +where value_field not in ('placed', 'shipped', 'completed', 'return_pending', 'returned')''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''with child as ( + select customer_id as from_field + from stg_orders + where customer_id is not null +), +parent as ( + select customer_id as to_field + from stg_customers +) +select from_field +from child +left join parent on child.from_field = parent.to_field +where parent.to_field is null''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''select count(*) as failures, count(*) != 0 as should_warn, count(*) != 0 as should_error +from ( + select order_id from stg_orders where amount < 0 +) dbt_internal_test''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''select * +from stg_orders +where not (amount >= 0)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''select * +from ( + select order_id, sum(amount) as payments + from stg_payments + group by 1 +) +where payments < 0''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''select max(updated_at) as max_updated_at +from stg_orders +having max(updated_at) < dateadd(hour, -24, current_timestamp())''' +expect = "refused SQ0003 fn:DATEADD at 82..121" +expect_repository = "refused SQ0003 fn:DATEADD at 82..121" + +[[query]] +category = "dbt_tests" +sql = '''select + count(*) as row_count +from stg_orders +having count(*) = 0''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''select order_id, count(*) +from stg_payments +group by order_id +having count(*) > 1 and sum(amount) = 0''' +expect = "translated" +expect_repository = "translated" + +# Launch shapes: incremental filters, the dbt_utils surrogate key, and common date and string functions. + +[[query]] +category = "dbt_incremental" +sql = '''select * +from stg_orders +where updated_at > (select max(updated_at) from fct_orders) +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from stg_orders +where updated_at >= (select dateadd(hour, -6, max(updated_at)) from fct_orders) +''' +expect = "refused SQ0008 fn:DATEADD at 53..87" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from stg_orders +where order_date >= (select coalesce(max(order_date), '1900-01-01'::date) from fct_orders) +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from stg_orders +where updated_at > (select coalesce(max(updated_at), '1970-01-01'::timestamp_ntz) from fct_orders) +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from stg_payments +where paid_at::date >= dateadd(day, -3, current_date()) +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from stg_orders +where updated_at > (select max(updated_at) from fct_orders) - interval '1 day' +''' +expect = "refused SQ0008 node:sub at 44..103" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select o.* +from stg_orders o +left join fct_orders f on o.order_id = f.order_id +where f.order_id is null or o.updated_at > f.updated_at +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from stg_orders +where order_date >= dateadd(day, -7, (select max(order_date) from fct_orders)) +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_staging" +sql = '''select + md5(cast(coalesce(cast(order_id as varchar), '_dbt_utils_surrogate_key_null_') || '-' || coalesce(cast(line_number as varchar), '_dbt_utils_surrogate_key_null_') as varchar)) as order_item_key, + order_id, + line_number +from order_items +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, date_trunc('week', ordered_at) as order_week from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, date_trunc('month', ordered_at)::date as order_month from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, datediff('day', ordered_at, shipped_at) as days_to_ship from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, datediff('hour', ordered_at, shipped_at) as hours_to_ship +from orders +where shipped_at is not null +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, to_char(ordered_at, 'YYYY-MM-DD') as order_day from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, year(ordered_at) as order_year, month(ordered_at) as order_month from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, extract(year from ordered_at) as order_year from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select customer_id, last_day(signup_date) as signup_month_end from customers +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select customer_id, dayname(signup_date) as signup_day from customers +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id +from stg_orders +where order_date between '2024-01-01' and '2024-03-31' +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select customer_id, date_from_parts(year(signup_date), 1, 1) as signup_year_start from customers +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, ordered_at::date as order_date from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select customer_id, datediff('month', signup_date, current_date()) as tenure_months from customers +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, dateadd(month, 1, order_date) as next_month from stg_orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select date_trunc('day', ordered_at) as order_day, count(*) as orders +from orders +group by 1 +order by 1 +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, convert_timezone('UTC', 'America/New_York', ordered_at) as ordered_at_et from orders +''' +expect = "refused SQ0008 fn:CONVERT_TIMEZONE at 17..72" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select customer_id, lower(trim(email)) as email from stg_customers +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select customer_id, initcap(first_name) || ' ' || initcap(last_name) as full_name from customers +''' +expect = "refused SQ0008 fn:INITCAP at 20..39" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select customer_id, split_part(email, '@', 2) as email_domain from customers +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select product_id, regexp_replace(sku, '[^A-Z0-9]', '') as sku_clean from products +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select product_id, upper(left(sku, 3)) as sku_prefix from products +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select product_id, substr(sku, 4) as sku_suffix from products +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select customer_id, concat(first_name, ' ', last_name) as full_name from customers +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select customer_id, coalesce(nullif(trim(country), ''), 'unknown') as country from customers +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select ticket_id, length(subject) as subject_length from tickets +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select customer_id from customers where email ilike '%@example.com' +''' +expect = "refused SQ0008 node:i_like at 40..67" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select product_id, replace(name, '-', ' ') as product_name from products +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select customer_id, md5(lower(email)) as email_hash from customers +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select order_id, iff(status = 'shipped', true, false) as is_shipped from orders +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select status, count(*) as orders +from orders +group by status +order by orders desc +''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select order_id, round(total * 1.2, 2) as total_with_tax from orders +''' +expect = "translated" +expect_repository = "translated" + +# Launch shapes, round 2: top-N QUALIFY, bracket and quoted JSON paths, numeric RANGE frames, +# compiled dbt with qualified names, surrogate keys, microbatch and insert_overwrite filters, MERGE. + +[[query]] +category = "dbt_dedup" +sql = '''select customer_id, order_id, amount +from stg_orders +qualify dense_rank() over (partition by customer_id order by amount desc) <= 3''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select customer_id, order_id, order_date +from stg_orders +where status = 'completed' +qualify row_number() over (partition by customer_id order by order_date) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select customer_id, count(*) as orders +from stg_orders +group by customer_id +qualify rank() over (order by count(*) desc) <= 10''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select order_id, customer_id, status, + row_number() over (partition by customer_id order by updated_at desc) as rn +from stg_orders +qualify rn = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select order_id, customer_id, amount +from stg_orders +qualify amount > avg(amount) over (partition by customer_id)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select subscription_id, plan, updated_at +from subscriptions +qualify lag(plan) over (partition by subscription_id order by updated_at) is distinct from plan''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select event_id, customer_id, event_type, occurred_at +from events +qualify row_number() over (partition by customer_id, event_type order by occurred_at desc) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select event_id, payload['items'][0]['sku']::varchar as first_sku +from events''' +expect = "refused SQ0008 node:column at 71..77" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select event_id, payload:customer.address.city::varchar as city +from events''' +expect = "refused SQ0008 node:column at 69..75" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select event_id, payload:"Order-Id"::number as order_id +from events''' +expect = "refused SQ0008 node:column at 61..67" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select event_id, get_path(payload, 'customer.email')::varchar as email +from events''' +expect = "refused SQ0008 node:column at 76..82" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select event_id, get(payload, 'event_type')::varchar as kind +from events''' +expect = "refused SQ0008 node:column at 66..72" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select event_id +from events +where payload:type::varchar = 'checkout'''' +expect = "refused SQ0008 node:column at 21..27" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select event_id, typeof(payload:amount) as amount_type +from events''' +expect = "refused SQ0008 node:column at 60..66" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select event_id, array_contains('vip'::variant, payload:tags) as is_vip +from events''' +expect = "refused SQ0008 node:column at 77..83" +expect_repository = "translated" +uncertain = true + +[[query]] +category = "dbt_flatten" +sql = '''select event_id, object_keys(payload) as keys +from events''' +expect = "refused SQ0008 node:column at 51..57" +expect_repository = "translated" +uncertain = true + +[[query]] +category = "dbt_flatten" +sql = '''select r.raw:id::varchar as event_id, try_parse_json(r.raw:body::varchar) as body +from raw_events r''' +expect = "refused SQ0008 node:column at 87..99" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select session_id, attributes:utm_source::varchar as utm_source, attributes:utm_campaign::varchar as utm_campaign +from web_sessions''' +expect = "refused SQ0008 node:column at 119..131" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select event_id, payload:amount::number(12,2) as amount, payload:currency::varchar as currency +from events +where payload:amount is not null''' +expect = "refused SQ0008 node:column at 100..106" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select customer_id, object_construct('orders', count(*), 'revenue', sum(amount)) as summary +from stg_orders +group by customer_id''' +expect = "refused SQ0008 fn:OBJECT_CONSTRUCT at 20..80" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select event_id, payload:items[array_size(payload:items) - 1]:sku::varchar as last_sku +from events''' +expect = "refused SQ0008 node:column at 92..98" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select order_id, customer_id, amount, + sum(amount) over (partition by customer_id order by order_id range between 10 preceding and current row) as nearby_amount +from stg_orders''' +expect = "refused SQ0003 fn:SUM at 42..146" +expect_repository = "refused SQ0003 fn:SUM at 42..146" + +[[query]] +category = "dbt_window_frames" +sql = '''select order_date, amount, + sum(amount) over (order by order_date rows unbounded preceding) as cumulative +from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select order_id, customer_id, amount, + first_value(status) ignore nulls over (partition by customer_id order by updated_at rows between unbounded preceding and current row) as first_status +from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select order_id, customer_id, amount, + last_value(status) ignore nulls over (partition by customer_id order by updated_at rows between unbounded preceding and current row) as latest_status +from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select order_id, customer_id, + count_if(status = 'returned') over (partition by customer_id) as returns +from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select order_id, customer_id, amount, + lead(amount, 1, 0) over (partition by customer_id order by order_date, order_id) as next_amount +from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select order_id, customer_id, amount, + avg(amount) over (partition by customer_id order by order_date rows between 2 preceding and 2 following) as centred_avg +from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select order_id, customer_id, amount, + min(order_date) over (partition by customer_id) as first_order_date, + datediff('day', min(order_date) over (partition by customer_id), order_date) as days_since_first +from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select rate_date, currency, rate_to_usd, + rate_to_usd / lag(rate_to_usd) over (partition by currency order by rate_date) - 1 as daily_change +from fx_rates''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_window_frames" +sql = '''select snapshot_date, product_id, on_hand, + on_hand - lag(on_hand, 1, on_hand) over (partition by product_id order by snapshot_date) as delta +from inventory_snapshots''' +expect = "refused SQ0008 node:sub at 47..135" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from analytics.staging.stg_orders +where updated_at > (select max(updated_at) from analytics.marts.fct_orders)''' +expect = "translated" +expect_repository = "translated" +uncertain = true + +[[query]] +category = "dbt_incremental" +sql = '''select * +from "ANALYTICS"."STAGING"."STG_ORDERS" +where updated_at > (select max(updated_at) from "ANALYTICS"."MARTS"."FCT_ORDERS")''' +expect = "translated" +expect_repository = "translated" +uncertain = true + +[[query]] +category = "dbt_incremental" +sql = '''select * +from stg_orders +where updated_at >= '2026-11-01 00:00:00'::timestamp_ntz + and updated_at < '2026-11-02 00:00:00'::timestamp_ntz''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from stg_orders +where order_date in ('2026-11-01'::date, '2026-11-02'::date)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from stg_orders +where order_date >= dateadd(day, -3, (select max(order_date) from fct_orders)) +qualify row_number() over (partition by order_id order by updated_at desc) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select s.* +from stg_orders s +where not exists (select 1 from fct_orders f where f.order_id = s.order_id)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from stg_orders +where updated_at > (select max(updated_at) from fct_orders) + and updated_at <= current_timestamp()''' +expect = "refused SQ0003 node:lte at 91..124" +expect_repository = "refused SQ0003 node:lte at 91..124" + +[[query]] +category = "dbt_incremental" +sql = '''select * +from events +where occurred_at > (select coalesce(max(occurred_at), '1900-01-01'::timestamp_ntz) from events) + and event_type in ('page_view', 'checkout')''' +expect = "refused SQ0008 node:column at 14..20" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + md5(cast(coalesce(cast(order_id as varchar), '_dbt_utils_surrogate_key_null_') || '-' || coalesce(cast(customer_id as varchar), '_dbt_utils_surrogate_key_null_') as varchar)) as order_key, + order_id, customer_id, amount +from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + md5(cast(coalesce(cast(event_id as varchar), '') as varchar)) as event_key, + event_id, event_type +from events''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select + sha2(order_id::varchar || '|' || customer_id::varchar) as order_hash, order_id +from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_snapshot" +sql = '''select *, + md5(coalesce(cast(order_id as varchar), '') || '|' || coalesce(cast(updated_at as varchar), '')) as dbt_scd_id, + updated_at as dbt_updated_at, + updated_at as dbt_valid_from, + nullif(updated_at, updated_at) as dbt_valid_to +from stg_orders''' +expect = "refused SQ0008 node:cast at 77..104" +expect_repository = "translated" + +[[query]] +category = "dbt_snapshot" +sql = '''select order_id, status, dbt_valid_from, dbt_valid_to +from ( + select order_id, status, updated_at as dbt_valid_from, + lead(updated_at) over (partition by order_id order by updated_at) as dbt_valid_to + from stg_orders +) +where dbt_valid_to is null''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, date_trunc('week', order_date) as order_week, dayname(order_date) as order_day +from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, last_day(order_date) as month_end, date_part(quarter, order_date) as quarter +from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, convert_timezone('UTC', 'America/New_York', updated_at) as updated_at_ny +from stg_orders''' +expect = "refused SQ0008 fn:CONVERT_TIMEZONE at 17..72" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, to_char(order_date, 'YYYY-MM') as order_month +from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, timestampdiff(hour, order_date, updated_at) as hours_to_update +from stg_orders''' +expect = "refused SQ0003 fn:TIMESTAMPDIFF at 17..60" +expect_repository = "refused SQ0003 fn:TIMESTAMPDIFF at 17..60" + +[[query]] +category = "strings" +sql = '''select customer_id, initcap(first_name) || ' ' || initcap(last_name) as full_name +from stg_customers''' +expect = "refused SQ0008 fn:INITCAP at 20..39" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select customer_id, split_part(email, '@', 2) as email_domain +from stg_customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select customer_id, regexp_replace(email, '[^a-z0-9@.]', '') as clean_email +from stg_customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select customer_id, left(first_name, 1) || '.' as initial, lower(trim(email)) as email +from stg_customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select customer_id, coalesce(nullif(trim(country), ''), 'unknown') as country +from stg_customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "ddl_dml" +sql = '''merge into fct_orders t +using stg_orders s +on t.order_id = s.order_id +when matched then update set t.status = s.status, t.amount = s.amount, t.updated_at = s.updated_at +when not matched then insert (order_id, customer_id, order_date, status, amount, updated_at) + values (s.order_id, s.customer_id, s.order_date, s.status, s.amount, s.updated_at)''' +expect = "refused SQ0002 node:merge at 11..347" +expect_repository = "refused SQ0002 node:merge at 11..347" + +[[query]] +category = "ddl_dml" +sql = '''merge into fct_orders t +using (select * from stg_orders where order_date >= dateadd(day, -3, current_date())) s +on t.order_id = s.order_id and t.order_date >= dateadd(day, -3, current_date()) +when matched and s.updated_at > t.updated_at then update set t.status = s.status +when not matched then insert (order_id, customer_id, order_date, status, amount, updated_at) + values (s.order_id, s.customer_id, s.order_date, s.status, s.amount, s.updated_at)''' +expect = "refused SQ0002 node:merge at 11..451" +expect_repository = "refused SQ0002 node:merge at 11..451" + +# Launch shapes, round 3: dbt_utils and dbt_date macro output compiled by dbt-snowflake 1.12 +# (date_spine, get_date_dimension, pivot, generate_surrogate_key, deduplicate, cross-database +# macros, dbt_utils generic tests), dbt-snowflake's rendered snapshot SQL and incremental DML +# (merge with incremental_predicates, delete+insert, insert_overwrite, snapshot merge), with the +# database and schema qualifiers dropped and blank lines removed, and FLATTEN over VARIANT. + +[[query]] +category = "dbt_tests" +sql = '''with meet_condition as( + select * + from fct_orders +), +validation_errors as ( + select * + from meet_condition + where + -- never true, defaults to an empty result set. Exists to ensure any combo of the `or` clauses below succeeds + 1 = 2 + -- records with a value >= min_value are permitted. The `not` flips this to find records that don't meet the rule. + or not amount >= 0 +) +select * +from validation_errors''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''select + 1 +from fct_orders +where not(amount >= 0)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''with all_values as ( + select distinct + status as value_field + from fct_orders +), +validation_errors as ( + select + value_field + from all_values + where value_field in ( + 'unknown' + ) +) +select * +from validation_errors''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''with + all_values as ( + select + trim(status) as status + from fct_orders + ), + errors as ( + select * from all_values + where status = '' + ) + select * from errors''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''with validation as ( + select + sum(case when amount is null then 0 else 1 end) / cast(count(*) as numeric(28,6)) as not_null_proportion + from fct_orders +), +validation_errors as ( + select + not_null_proportion + from validation + where not_null_proportion < 0.95 or not_null_proportion > 1 +) +select + * +from validation_errors''' +expect = "refused SQ0008 node:div at 34..115" +expect_repository = "translated" + +[[query]] +category = "dbt_tests" +sql = '''with recency as ( + select + max(order_date) as most_recent + from fct_orders +) +select + most_recent, + cast( + dateadd( + day, + -3, + convert_timezone('UTC', current_timestamp()) + ) + as timestamp) as threshold +from recency +where most_recent < cast( + dateadd( + day, + -3, + convert_timezone('UTC', current_timestamp()) + ) + as timestamp) + or most_recent is null''' +expect = "refused SQ0008 fn:CONVERT_TIMEZONE at 170..214" +expect_repository = "refused SQ0003 node:lt at 272..407" + +[[query]] +category = "dbt_tests" +sql = '''with validation_errors as ( + select + order_id, customer_id + from fct_orders + group by order_id, customer_id + having count(*) > 1 +) +select * +from validation_errors''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''with + base_dates as ( + with + date_spine as ( + with + rawdata as ( + with + p as ( + select 0 as generated_number + union all + select 1 + ), + unioned as ( + select + p0.generated_number * power(2, 0) + + + p1.generated_number * power(2, 1) + + + p2.generated_number * power(2, 2) + + + p3.generated_number * power(2, 3) + + + p4.generated_number * power(2, 4) + + + p5.generated_number * power(2, 5) + + + p6.generated_number * power(2, 6) + + + p7.generated_number * power(2, 7) + + + p8.generated_number * power(2, 8) + + 1 as generated_number + from + p as p0 cross join + p as p1 cross join + p as p2 cross join + p as p3 cross join + p as p4 cross join + p as p5 cross join + p as p6 cross join + p as p7 cross join + p as p8 + ) + select * + from unioned + where generated_number <= 364 + order by generated_number + ), + all_periods as ( + select + ( + dateadd( + day, + (row_number() over (order by 1) - 1), + cast('2026-01-01' as timestamp) + ) + ) as date_day + from rawdata + ), + filtered as ( + select * from all_periods where date_day <= cast('2026-12-31' as timestamp) + ) + select * + from filtered + ) + select + cast(d.date_day as timestamp) as date_day + from date_spine d +), + dates_with_prior_year_dates as ( + select + cast(d.date_day as date) as date_day, + cast( + dateadd( + year, + -1, + d.date_day + ) + as date + ) as prior_year_date_day, + cast( + dateadd( + day, + -364, + d.date_day + ) + as date + ) as prior_year_over_year_date_day + from base_dates d + ) + select + d.date_day, + cast( + dateadd( + day, + -1, + d.date_day + ) + as date) as prior_date_day, + cast( + dateadd( + day, + 1, + d.date_day + ) + as date) as next_date_day, + d.prior_year_date_day as prior_year_date_day, + d.prior_year_over_year_date_day, + case + when date_part('dayofweek', d.date_day) = 7 + then 1 + else date_part('dayofweek', d.date_day) + 1 + end as day_of_week, + date_part('dayofweekiso', d.date_day) as day_of_week_iso, + case + -- Similar to python, last argument is not included + when date_part('dayofweekiso', d.date_day) = 1 + then + 'Monday' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', d.date_day) = 2 + then + 'Tuesday' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', d.date_day) = 3 + then + 'Wednesday' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', d.date_day) = 4 + then + 'Thursday' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', d.date_day) = 5 + then + 'Friday' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', d.date_day) = 6 + then + 'Saturday' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', d.date_day) = 7 + then + 'Sunday' + end as day_of_week_name, + case + -- Similar to python, last argument is not included + when date_part('dayofweekiso', d.date_day) = 1 + then + 'Mon' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', d.date_day) = 2 + then + 'Tue' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', d.date_day) = 3 + then + 'Wed' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', d.date_day) = 4 + then + 'Thu' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', d.date_day) = 5 + then + 'Fri' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', d.date_day) = 6 + then + 'Sat' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', d.date_day) = 7 + then + 'Sun' + end as day_of_week_name_short, + date_part('day', d.date_day) as day_of_month, + date_part('dayofyear', d.date_day) as day_of_year, + cast( + dateadd( + day, + -1 * (case + when date_part('dayofweek', d.date_day) = 7 + then 1 + else date_part('dayofweek', d.date_day) + 1 + end - 1), + d.date_day + ) + as date) as week_start_date, + cast( + dateadd( + day, + 6, + cast( + dateadd( + day, + -1 * (case + when date_part('dayofweek', d.date_day) = 7 + then 1 + else date_part('dayofweek', d.date_day) + 1 + end - 1), + d.date_day + ) + as date) + ) + as date) as week_end_date, + cast( + dateadd( + day, + -1 * (case + when date_part('dayofweek', d.prior_year_over_year_date_day) = 7 + then 1 + else date_part('dayofweek', d.prior_year_over_year_date_day) + 1 + end - 1), + d.prior_year_over_year_date_day + ) + as date) + as prior_year_week_start_date, + cast( + dateadd( + day, + 6, + cast( + dateadd( + day, + -1 * (case + when date_part('dayofweek', d.prior_year_over_year_date_day) = 7 + then 1 + else date_part('dayofweek', d.prior_year_over_year_date_day) + 1 + end - 1), + d.prior_year_over_year_date_day + ) + as date) + ) + as date) + as prior_year_week_end_date, + cast(date_part('week', d.date_day) as integer) as week_of_year, + cast(date_trunc('week', d.date_day) as date) as iso_week_start_date, + cast( + dateadd( + day, + 6, + cast(date_trunc('week', d.date_day) as date) + ) + as date) as iso_week_end_date, + cast(date_trunc('week', d.prior_year_over_year_date_day) as date) + as prior_year_iso_week_start_date, + cast( + dateadd( + day, + 6, + cast(date_trunc('week', d.prior_year_over_year_date_day) as date) + ) + as date) + as prior_year_iso_week_end_date, + cast(date_part('weekiso', d.date_day) as integer) as iso_week_of_year, + case + when cast(date_part('weekiso', d.date_day) as integer) = 1 + then + concat( + date_part('year', cast( + dateadd( + day, + 6, + cast(date_trunc('week', d.date_day) as date) + ) + as date)), + '-W', + lpad(concat('',cast(date_part('weekiso', d.date_day) as integer)), 2, '0') + ) + else + concat( + date_part('year', cast(date_trunc('week', d.date_day) as date)), + '-W', + lpad(concat('', cast(date_part('weekiso', d.date_day) as integer)), 2, '0') + ) + end as iso_year_week, + cast(date_part('week', d.prior_year_over_year_date_day) as integer) + as prior_year_week_of_year, + cast(date_part('weekiso', d.prior_year_over_year_date_day) as integer) + as prior_year_iso_week_of_year, + cast( + date_part('month', d.date_day) as integer + ) as month_of_year, + to_char(d.date_day, 'MMMM') as month_name, + to_char(d.date_day, 'MON') as month_name_short, + cast(date_trunc('month', d.date_day) as date) as month_start_date, + cast(cast( + dateadd( + day, + -1, + dateadd( + month, + 1, + date_trunc('month', d.date_day) + ) + ) + as date) as date) as month_end_date, + cast( + date_trunc('month', d.prior_year_date_day) as date + ) as prior_year_month_start_date, + cast( + cast( + dateadd( + day, + -1, + dateadd( + month, + 1, + date_trunc('month', d.prior_year_date_day) + ) + ) + as date) as date + ) as prior_year_month_end_date, + cast( + date_part('quarter', d.date_day) as integer + ) as quarter_of_year, + cast( + date_trunc('quarter', d.date_day) as date + ) as quarter_start_date, + cast(cast( + dateadd( + day, + -1, + dateadd( + quarter, + 1, + date_trunc('quarter', d.date_day) + ) + ) + as date) as date) as quarter_end_date, + cast( + date_part('year', d.date_day) as integer + ) as year_number, + cast(date_trunc('year', d.date_day) as date) as year_start_date, + cast(cast( + dateadd( + day, + -1, + dateadd( + year, + 1, + date_trunc('year', d.date_day) + ) + ) + as date) as date) as year_end_date + from dates_with_prior_year_dates d + order by 1''' +expect = "refused SQ0008 fn:DATEADD at 1507..1624" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select * from stg_orders where order_date >= cast( + dateadd( + day, + -7, + cast(convert_timezone( + 'UTC', + 'UTC', + cast(convert_timezone('UTC', current_timestamp()) as timestamp) + ) as date) + ) + as date)''' +expect = "refused SQ0008 fn:CONVERT_TIMEZONE at 163..207" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, date_part('dayofweekiso', order_date) as dow, case + -- Similar to python, last argument is not included + when date_part('dayofweekiso', order_date) = 1 + then + 'Mon' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', order_date) = 2 + then + 'Tue' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', order_date) = 3 + then + 'Wed' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', order_date) = 4 + then + 'Thu' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', order_date) = 5 + then + 'Fri' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', order_date) = 6 + then + 'Sat' + -- Similar to python, last argument is not included + when date_part('dayofweekiso', order_date) = 7 + then + 'Sun' + end as day_name from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, datediff( + day, + order_date, + convert_timezone( + 'UTC', + 'UTC', + cast(convert_timezone('UTC', current_timestamp()) as timestamp) + ) + ) as days_since from stg_orders''' +expect = "refused SQ0008 fn:CONVERT_TIMEZONE at 129..173" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, convert_timezone( + 'UTC', + 'America/New_York', + cast(cast(order_date as timestamp) as timestamp) + ) as order_ts_ny from stg_orders''' +expect = "refused SQ0008 node:cast at 91..120" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, + cast( + dateadd( + day, + -1 * (case + when date_part('dayofweek', order_date) = 7 + then 1 + else date_part('dayofweek', order_date) + 1 + end - 1), + order_date + ) + as date) as week_start, cast(date_part('weekiso', order_date) as integer) as iso_week from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select * + from stg_orders + qualify + row_number() over ( + partition by customer_id + order by order_date desc + ) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select customer_id, status, count(*) as orders from stg_orders group by 1,2''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_pivot" +sql = '''select order_id, + sum( + case + when payment_method = 'credit_card' + then amount + else 0 + end + ) + as "credit_card_amount" + , + sum( + case + when payment_method = 'coupon' + then amount + else 0 + end + ) + as "coupon_amount" + , + sum( + case + when payment_method = 'bank_transfer' + then amount + else 0 + end + ) + as "bank_transfer_amount" + , + sum( + case + when payment_method = 'gift_card' + then amount + else 0 + end + ) + as "gift_card_amount" +from stg_payments +group by order_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_pivot" +sql = '''select customer_id, + sum( + case + when status = 'placed' + then 1 + else 0 + end + ) + as "placed" + , + sum( + case + when status = 'shipped' + then 1 + else 0 + end + ) + as "shipped" + , + sum( + case + when status = 'completed' + then 1 + else 0 + end + ) + as "completed" + , + sum( + case + when status = 'returned' + then 1 + else 0 + end + ) + as "returned" +from stg_orders +group by customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select order_id, + ( amount ) / nullif( ( order_id ), 0) + as ratio from fct_orders''' +expect = "refused SQ0008 node:div at 21..58" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select md5(cast(coalesce(cast(customer_id as TEXT), '_dbt_utils_surrogate_key_null_') || '-' || coalesce(cast(order_date as TEXT), '_dbt_utils_surrogate_key_null_') as TEXT)) as customer_day_key, customer_id, order_date from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select md5(cast(coalesce(cast(payment_id as TEXT), '_dbt_utils_surrogate_key_null_') as TEXT)) as payment_key, payment_id, amount from stg_payments''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select md5(cast(coalesce(cast(order_id as TEXT), '_dbt_utils_surrogate_key_null_') || '-' || coalesce(cast(customer_id as TEXT), '_dbt_utils_surrogate_key_null_') as TEXT)) as order_key, order_id, customer_id from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''with rawdata as ( + with p as ( + select 0 as generated_number union all select 1 + ), unioned as ( + select + p0.generated_number * power(2, 0) + + + p1.generated_number * power(2, 1) + + + p2.generated_number * power(2, 2) + + + p3.generated_number * power(2, 3) + + + p4.generated_number * power(2, 4) + + 1 + as generated_number + from + p as p0 + cross join + p as p1 + cross join + p as p2 + cross join + p as p3 + cross join + p as p4 + ) + select * + from unioned + where generated_number <= 31 + order by generated_number +), +all_periods as ( + select ( + dateadd( + day, + row_number() over (order by generated_number) - 1, + cast('2026-01-01' as date) + ) + ) as date_day + from rawdata +), +filtered as ( + select * + from all_periods + where date_day <= cast('2026-02-01' as date) +) +select * from filtered''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_date_spine" +sql = '''with rawdata as ( + with p as ( + select 0 as generated_number union all select 1 + ), unioned as ( + select + p0.generated_number * power(2, 0) + + + p1.generated_number * power(2, 1) + + + p2.generated_number * power(2, 2) + + + p3.generated_number * power(2, 3) + + 1 + as generated_number + from + p as p0 + cross join + p as p1 + cross join + p as p2 + cross join + p as p3 + ) + select * + from unioned + where generated_number <= 12 + order by generated_number +), +all_periods as ( + select ( + dateadd( + month, + row_number() over (order by generated_number) - 1, + cast('2025-01-01' as date) + ) + ) as date_month + from rawdata +), +filtered as ( + select * + from all_periods + where date_month <= cast('2026-01-01' as date) +) +select * from filtered''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select order_id, cast(order_id as TEXT) as order_key from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select customer_id, first_name || ' ' || last_name as full_name from stg_customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, + dateadd( + day, + 7, + order_date + ) + as due_date from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, datediff( + day, + order_date, + current_date + ) as age_days from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select order_id, md5(cast(status as TEXT)) as status_hash from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, cast( + dateadd( + day, + -1, + dateadd( + month, + 1, + date_trunc('month', order_date) + ) + ) + as date) as month_end from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select customer_id, + listagg( + status, + ', ' + ) + within group (order by order_date) as statuses from stg_orders group by customer_id''' +expect = "refused SQ0008 fn:LISTAGG at 41..113" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select order_id, convert_timezone('UTC', current_timestamp()) as loaded_at from stg_orders''' +expect = "refused SQ0008 fn:CONVERT_TIMEZONE at 17..61" +expect_repository = "translated" + +[[query]] +category = "dbt_marts" +sql = '''select order_id, + try_cast(status as integer) + as status_code from stg_orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''select customer_id, + split_part( + first_name, + ' ', + 1 + ) + as first_word from stg_customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''select date_trunc('month', order_date) as order_month, count(*) as orders from stg_orders group by 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_snapshot" +sql = '''with snapshot_query as ( + select order_id, customer_id, order_date, status, amount, updated_at from stg_orders + ), + snapshotted_data as ( + select *, + order_id as dbt_unique_key + from orders_snapshot + where + dbt_valid_to is null + ), + insertions_source_data as ( + select *, + order_id as dbt_unique_key +, + updated_at as dbt_updated_at, + updated_at as dbt_valid_from, + coalesce(nullif(updated_at, updated_at), null) + as dbt_valid_to +, + md5(coalesce(cast(order_id as varchar ), '') + || '|' || coalesce(cast(updated_at as varchar ), '') + ) as dbt_scd_id + from snapshot_query + ), + updates_source_data as ( + select *, + order_id as dbt_unique_key +, + updated_at as dbt_updated_at, + updated_at as dbt_valid_from, + updated_at as dbt_valid_to + from snapshot_query + ), + insertions as ( + select + 'insert' as dbt_change_type, + source_data.* + from insertions_source_data as source_data + left outer join snapshotted_data + on + snapshotted_data.dbt_unique_key = source_data.dbt_unique_key + where + snapshotted_data.dbt_unique_key is null + or ( + snapshotted_data.dbt_unique_key is not null + and ( + (snapshotted_data.dbt_valid_from < source_data.updated_at) + ) + ) + ), + updates as ( + select + 'update' as dbt_change_type, + source_data.*, + snapshotted_data.dbt_scd_id + from updates_source_data as source_data + join snapshotted_data + on + snapshotted_data.dbt_unique_key = source_data.dbt_unique_key + where ( + (snapshotted_data.dbt_valid_from < source_data.updated_at) + ) + ) + select * from insertions + union all + select * from updates''' +expect = "refused SQ0008 node:cast at 616..644" +expect_repository = "translated" + +[[query]] +category = "dbt_snapshot" +sql = '''select *, + md5(coalesce(cast(order_id as varchar ), '') + || '|' || coalesce(cast(updated_at as varchar ), '') + ) as dbt_scd_id, + updated_at as dbt_updated_at, + updated_at as dbt_valid_from, + coalesce(nullif(updated_at, updated_at), null) + as dbt_valid_to +from ( + select order_id, customer_id, order_date, status, amount, updated_at from stg_orders + ) sbq''' +expect = "refused SQ0008 node:cast at 91..119" +expect_repository = "translated" + +[[query]] +category = "ddl_dml" +sql = '''merge into fct_orders as DBT_INTERNAL_DEST + using fct_orders__dbt_tmp as DBT_INTERNAL_SOURCE + on ((DBT_INTERNAL_SOURCE.order_id = DBT_INTERNAL_DEST.order_id)) + when matched then update set + "ORDER_ID" = DBT_INTERNAL_SOURCE."ORDER_ID","CUSTOMER_ID" = DBT_INTERNAL_SOURCE."CUSTOMER_ID","ORDER_DATE" = DBT_INTERNAL_SOURCE."ORDER_DATE","STATUS" = DBT_INTERNAL_SOURCE."STATUS","AMOUNT" = DBT_INTERNAL_SOURCE."AMOUNT","UPDATED_AT" = DBT_INTERNAL_SOURCE."UPDATED_AT" + when not matched then insert + ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT") + values + ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT")''' +expect = "refused SQ0002 node:merge at 11..694" +expect_repository = "refused SQ0002 node:merge at 11..694" + +[[query]] +category = "ddl_dml" +sql = '''merge into fct_orders as DBT_INTERNAL_DEST + using fct_orders__dbt_tmp as DBT_INTERNAL_SOURCE + on (DBT_INTERNAL_DEST.order_date >= dateadd(day, -7, current_date)) and ((DBT_INTERNAL_SOURCE.order_id = DBT_INTERNAL_DEST.order_id)) + when matched then update set + "ORDER_ID" = DBT_INTERNAL_SOURCE."ORDER_ID","CUSTOMER_ID" = DBT_INTERNAL_SOURCE."CUSTOMER_ID","ORDER_DATE" = DBT_INTERNAL_SOURCE."ORDER_DATE","STATUS" = DBT_INTERNAL_SOURCE."STATUS","AMOUNT" = DBT_INTERNAL_SOURCE."AMOUNT","UPDATED_AT" = DBT_INTERNAL_SOURCE."UPDATED_AT" + when not matched then insert + ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT") + values + ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT")''' +expect = "refused SQ0002 node:merge at 11..763" +expect_repository = "refused SQ0002 node:merge at 11..763" + +[[query]] +category = "ddl_dml" +sql = '''merge into fct_orders as DBT_INTERNAL_DEST + using fct_orders__dbt_tmp as DBT_INTERNAL_SOURCE + on ( + DBT_INTERNAL_SOURCE.order_id = DBT_INTERNAL_DEST.order_id + ) and ( + DBT_INTERNAL_SOURCE.customer_id = DBT_INTERNAL_DEST.customer_id + ) + when matched then update set + "ORDER_ID" = DBT_INTERNAL_SOURCE."ORDER_ID","CUSTOMER_ID" = DBT_INTERNAL_SOURCE."CUSTOMER_ID","ORDER_DATE" = DBT_INTERNAL_SOURCE."ORDER_DATE","STATUS" = DBT_INTERNAL_SOURCE."STATUS","AMOUNT" = DBT_INTERNAL_SOURCE."AMOUNT","UPDATED_AT" = DBT_INTERNAL_SOURCE."UPDATED_AT" + when not matched then insert + ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT") + values + ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT")''' +expect = "refused SQ0002 node:merge at 11..838" +expect_repository = "refused SQ0002 node:merge at 11..838" + +[[query]] +category = "ddl_dml" +sql = '''insert into fct_orders ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT") + ( + select "ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT" + from fct_orders__dbt_tmp + )''' +expect = "refused SQ0002 node:insert at 12..238" +expect_repository = "refused SQ0002 node:insert at 12..238" + +[[query]] +category = "ddl_dml" +sql = '''delete from fct_orders as DBT_INTERNAL_DEST + where (order_id) in ( + select distinct order_id + from fct_orders__dbt_tmp as DBT_INTERNAL_SOURCE + )''' +expect = "refused SQ0002 node:delete at 12..180" +expect_repository = "refused SQ0002 node:delete at 12..180" + +[[query]] +category = "ddl_dml" +sql = '''insert into fct_orders ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT") + ( + select "ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT" + from fct_orders__dbt_tmp + )''' +expect = "refused SQ0002 node:insert at 12..226" +expect_repository = "refused SQ0002 node:insert at 12..226" + +[[query]] +category = "ddl_dml" +sql = '''delete from fct_orders as DBT_INTERNAL_DEST + where (order_id) in ( + select distinct order_id + from fct_orders__dbt_tmp as DBT_INTERNAL_SOURCE + ) + and order_date >= dateadd(day, -7, current_date)''' +expect = "refused SQ0002 node:delete at 12..245" +expect_repository = "refused SQ0002 node:delete at 12..245" + +[[query]] +category = "ddl_dml" +sql = '''insert into fct_orders ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT") + ( + select "ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT" + from fct_orders__dbt_tmp + )''' +expect = "refused SQ0002 node:insert at 12..226" +expect_repository = "refused SQ0002 node:insert at 12..226" + +[[query]] +category = "ddl_dml" +sql = '''merge into fct_orders as DBT_INTERNAL_DEST + using fct_orders__dbt_tmp as DBT_INTERNAL_SOURCE + on FALSE + when not matched by source + and order_date >= dateadd(day, -7, current_date) + then delete + when not matched then insert + ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT") + values + ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT")''' +expect = "refused SQ0002 node:merge at 11..436" +expect_repository = "refused SQ0002 node:merge at 11..436" + +[[query]] +category = "ddl_dml" +sql = '''merge into orders_snapshot as DBT_INTERNAL_DEST + using orders_snapshot__dbt_tmp as DBT_INTERNAL_SOURCE + on DBT_INTERNAL_SOURCE.dbt_scd_id = DBT_INTERNAL_DEST.dbt_scd_id + when matched + and DBT_INTERNAL_DEST.dbt_valid_to is null + and DBT_INTERNAL_SOURCE.dbt_change_type in ('update', 'delete') + then update + set dbt_valid_to = DBT_INTERNAL_SOURCE.dbt_valid_to + when not matched + and DBT_INTERNAL_SOURCE.dbt_change_type = 'insert' + then insert ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT", "DBT_SCD_ID", "DBT_UPDATED_AT", "DBT_VALID_FROM", "DBT_VALID_TO") + values ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT", "DBT_SCD_ID", "DBT_UPDATED_AT", "DBT_VALID_FROM", "DBT_VALID_TO")''' +expect = "refused SQ0002 node:merge at 11..785" +expect_repository = "refused SQ0002 node:merge at 11..785" + +[[query]] +category = "dbt_flatten" +sql = '''select e.event_id, f.value:sku::varchar as sku +from events e, lateral flatten(input => e.payload, path => 'items') f''' +expect = "refused SQ0008 node:column at 52..60" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select e.event_id, f.value:sku::varchar as sku +from events e, lateral flatten(e.payload:items) f''' +expect = "refused SQ0008 node:column at 52..60" +expect_repository = "translated" +uncertain = true + +[[query]] +category = "dbt_flatten" +sql = '''select e.event_id, f.key as attribute +from events e, lateral flatten(input => e.payload, mode => 'object') f''' +expect = "refused SQ0008 node:column at 43..51" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select e.event_id, f.value['sku']::varchar as sku +from events e, lateral flatten(input => e.payload['items']) f''' +expect = "refused SQ0008 node:column at 55..63" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select e.event_id, f.value:sku::varchar as first_sku +from events e, lateral flatten(input => e.payload:items) f +where f.index = 0''' +expect = "refused SQ0008 node:column at 58..66" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select e.customer_id, count(f.value) as items +from events e, lateral flatten(input => e.payload:items, outer => true) f +group by e.customer_id''' +expect = "refused SQ0008 node:column at 51..59" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select r.raw:id::varchar as event_id, f.value:name::varchar as name +from raw_events r, lateral flatten(input => parse_json(r.raw:body::varchar):products) f''' +expect = "refused SQ0008 node:column at 73..85" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select t.ticket_id, f.value::varchar as tag +from tickets t, lateral flatten(input => t.tags) f +qualify row_number() over (partition by t.ticket_id order by f.index) = 1''' +expect = "refused SQ0008 node:column at 49..58" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select e.event_id, f.value:sku::varchar as sku +from events e +cross join lateral flatten(input => e.payload:items) f''' +expect = "refused SQ0008 node:column at 52..60" +expect_repository = "translated" + +[[query]] +category = "dbt_flatten" +sql = '''select f.value:sku::varchar as sku, count(distinct e.customer_id) as buyers +from events e, lateral flatten(input => e.payload:items) f +where e.event_type = 'checkout' +group by 1 +order by buyers desc''' +expect = "refused SQ0008 node:column at 81..89" +expect_repository = "translated" + +# Round 5: dbt incremental models compiled by dbt-snowflake 1.12 as an incremental run ({{ this }} +# is the existing target), dbt-snowflake's snapshot staging SQL for the check and timestamp +# strategies with hard_deletes ignore and invalidate, its MERGE and delete+insert DML with several +# incremental predicates, QUALIFY dedup edge cases, and hand-written MERGE shapes. + +[[query]] +category = "dbt_incremental" +sql = '''select order_id, status, updated_at, convert_timezone('UTC', current_timestamp()) as loaded_at +from analytics.dbt_dev.fct_orders +where updated_at > (select max(updated_at) from analytics.dbt_dev.inc_append)''' +expect = "refused SQ0008 fn:CONVERT_TIMEZONE at 37..81" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * from analytics.dbt_dev.fct_orders +where updated_at > (select coalesce(max(updated_at), '1900-01-01'::timestamp_ntz) from analytics.dbt_dev.inc_coalesce)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * from analytics.dbt_dev.fct_orders +where updated_at > (select max(updated_at) from analytics.dbt_dev.inc_dedup) +qualify row_number() over (partition by order_id order by updated_at desc) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * from analytics.dbt_dev.fct_orders +where updated_at > (select max(updated_at) from analytics.dbt_dev.inc_event_time) + and updated_at <= convert_timezone('UTC', current_timestamp())''' +expect = "refused SQ0008 fn:CONVERT_TIMEZONE at 145..189" +expect_repository = "refused SQ0003 node:lte at 131..189" + +[[query]] +category = "dbt_incremental" +sql = '''select s.* +from analytics.dbt_dev.fct_orders s +left join analytics.dbt_dev.inc_join_this t on t.order_id = s.order_id +where t.order_id is null or s.updated_at > t.updated_at''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * from analytics.dbt_dev.fct_orders +where updated_at >= (select dateadd(day, -3, max(updated_at)) from analytics.dbt_dev.inc_lookback)''' +expect = "refused SQ0008 fn:DATEADD at 71..104" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select order_id, customer_id, order_date, status, amount, updated_at +from analytics.dbt_dev.fct_orders +where updated_at > (select max(updated_at) from analytics.dbt_dev.inc_merge)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select s.* from analytics.dbt_dev.fct_orders s +where not exists (select 1 from analytics.dbt_dev.inc_not_exists t where t.order_id = s.order_id and t.updated_at >= s.updated_at)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select order_date, count(*) as orders, sum(amount) as revenue +from analytics.dbt_dev.fct_orders +where order_date >= (select max(order_date) from analytics.dbt_dev.inc_partition_date) - 2 +group by order_date''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_incremental" +sql = '''select * from analytics.dbt_dev.fct_orders +where order_date >= '2026-11-01'::date''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_snapshot" +sql = '''with snapshot_query as ( + select order_id, customer_id, order_date, status, amount, updated_at from analytics.dbt_dev.stg_orders + ), + snapshotted_data as ( + select *, + order_id as dbt_unique_key + from analytics.snapshots.orders_snapshot + where + dbt_valid_to is null + ), + insertions_source_data as ( + select *, + order_id as dbt_unique_key +, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_updated_at, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_valid_from, + coalesce(nullif(to_timestamp_ntz(convert_timezone('UTC', current_timestamp())), to_timestamp_ntz(convert_timezone('UTC', current_timestamp()))), null) + as dbt_valid_to +, + md5(coalesce(cast(order_id as varchar ), '') + || '|' || coalesce(cast(to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as varchar ), '') + ) as dbt_scd_id + from snapshot_query + ), + updates_source_data as ( + select *, + order_id as dbt_unique_key +, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_updated_at, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_valid_from, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_valid_to + from snapshot_query + ), + insertions as ( + select + 'insert' as dbt_change_type, + source_data.* + from insertions_source_data as source_data + left outer join snapshotted_data + on + snapshotted_data.dbt_unique_key = source_data.dbt_unique_key + where + snapshotted_data.dbt_unique_key is null + or ( + snapshotted_data.dbt_unique_key is not null + and ( + (snapshotted_data.status != source_data.status + or + ( + ((snapshotted_data.status is null) and not (source_data.status is null)) + or + ((not snapshotted_data.status is null) and (source_data.status is null)) + ) or snapshotted_data.amount != source_data.amount + or + ( + ((snapshotted_data.amount is null) and not (source_data.amount is null)) + or + ((not snapshotted_data.amount is null) and (source_data.amount is null)) + )) + ) + ) + ), + updates as ( + select + 'update' as dbt_change_type, + source_data.*, + snapshotted_data.dbt_scd_id + from updates_source_data as source_data + join snapshotted_data + on + snapshotted_data.dbt_unique_key = source_data.dbt_unique_key + where ( + (snapshotted_data.status != source_data.status + or + ( + ((snapshotted_data.status is null) and not (source_data.status is null)) + or + ((not snapshotted_data.status is null) and (source_data.status is null)) + ) or snapshotted_data.amount != source_data.amount + or + ( + ((snapshotted_data.amount is null) and not (source_data.amount is null)) + or + ((not snapshotted_data.amount is null) and (source_data.amount is null)) + )) + ) + ) + select * from insertions + union all + select * from updates''' +expect = "refused SQ0008 fn:CONVERT_TIMEZONE at 445..489" +expect_repository = "refused SQ0003 fn:TO_TIMESTAMP_NTZ at 428..490" + +[[query]] +category = "dbt_snapshot" +sql = '''with snapshot_query as ( + select order_id, customer_id, order_date, status, amount, updated_at from analytics.dbt_dev.stg_orders + ), + snapshotted_data as ( + select *, + order_id as dbt_unique_key + from analytics.snapshots.orders_snapshot + where + dbt_valid_to is null + ), + insertions_source_data as ( + select *, + order_id as dbt_unique_key +, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_updated_at, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_valid_from, + coalesce(nullif(to_timestamp_ntz(convert_timezone('UTC', current_timestamp())), to_timestamp_ntz(convert_timezone('UTC', current_timestamp()))), null) + as dbt_valid_to +, + md5(coalesce(cast(order_id as varchar ), '') + || '|' || coalesce(cast(to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as varchar ), '') + ) as dbt_scd_id + from snapshot_query + ), + updates_source_data as ( + select *, + order_id as dbt_unique_key +, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_updated_at, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_valid_from, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_valid_to + from snapshot_query + ), + deletes_source_data as ( + select *, + order_id as dbt_unique_key + from snapshot_query + ), + insertions as ( + select + 'insert' as dbt_change_type, + source_data.* + from insertions_source_data as source_data + left outer join snapshotted_data + on + snapshotted_data.dbt_unique_key = source_data.dbt_unique_key + where + snapshotted_data.dbt_unique_key is null + or ( + snapshotted_data.dbt_unique_key is not null + and ( + (snapshotted_data.status != source_data.status + or + ( + ((snapshotted_data.status is null) and not (source_data.status is null)) + or + ((not snapshotted_data.status is null) and (source_data.status is null)) + ) or snapshotted_data.amount != source_data.amount + or + ( + ((snapshotted_data.amount is null) and not (source_data.amount is null)) + or + ((not snapshotted_data.amount is null) and (source_data.amount is null)) + )) + ) + ) + ), + updates as ( + select + 'update' as dbt_change_type, + source_data.*, + snapshotted_data.dbt_scd_id + from updates_source_data as source_data + join snapshotted_data + on + snapshotted_data.dbt_unique_key = source_data.dbt_unique_key + where ( + (snapshotted_data.status != source_data.status + or + ( + ((snapshotted_data.status is null) and not (source_data.status is null)) + or + ((not snapshotted_data.status is null) and (source_data.status is null)) + ) or snapshotted_data.amount != source_data.amount + or + ( + ((snapshotted_data.amount is null) and not (source_data.amount is null)) + or + ((not snapshotted_data.amount is null) and (source_data.amount is null)) + )) + ) + ) + , + deletes as ( + select + 'delete' as dbt_change_type, + source_data.*, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_valid_from, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_updated_at, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_valid_to, + snapshotted_data.dbt_scd_id + from snapshotted_data + left join deletes_source_data as source_data + on + snapshotted_data.dbt_unique_key = source_data.dbt_unique_key + where + source_data.dbt_unique_key is null + ) + select * from insertions + union all + select * from updates + union all + select * from deletes''' +expect = "refused SQ0008 fn:CONVERT_TIMEZONE at 445..489" +expect_repository = "refused SQ0003 fn:TO_TIMESTAMP_NTZ at 428..490" + +[[query]] +category = "dbt_snapshot" +sql = '''with snapshot_query as ( + select order_id, customer_id, order_date, status, amount, updated_at from analytics.dbt_dev.stg_orders + ), + snapshotted_data as ( + select *, + order_id as dbt_unique_key + from analytics.snapshots.orders_snapshot + where + dbt_valid_to is null + ), + insertions_source_data as ( + select *, + order_id as dbt_unique_key +, + updated_at as dbt_updated_at, + updated_at as dbt_valid_from, + coalesce(nullif(updated_at, updated_at), null) + as dbt_valid_to +, + md5(coalesce(cast(order_id as varchar ), '') + || '|' || coalesce(cast(updated_at as varchar ), '') + ) as dbt_scd_id + from snapshot_query + ), + updates_source_data as ( + select *, + order_id as dbt_unique_key +, + updated_at as dbt_updated_at, + updated_at as dbt_valid_from, + updated_at as dbt_valid_to + from snapshot_query + ), + deletes_source_data as ( + select *, + order_id as dbt_unique_key + from snapshot_query + ), + insertions as ( + select + 'insert' as dbt_change_type, + source_data.* + from insertions_source_data as source_data + left outer join snapshotted_data + on + snapshotted_data.dbt_unique_key = source_data.dbt_unique_key + where + snapshotted_data.dbt_unique_key is null + or ( + snapshotted_data.dbt_unique_key is not null + and ( + (snapshotted_data.dbt_valid_from < source_data.updated_at) + ) + ) + ), + updates as ( + select + 'update' as dbt_change_type, + source_data.*, + snapshotted_data.dbt_scd_id + from updates_source_data as source_data + join snapshotted_data + on + snapshotted_data.dbt_unique_key = source_data.dbt_unique_key + where ( + (snapshotted_data.dbt_valid_from < source_data.updated_at) + ) + ) + , + deletes as ( + select + 'delete' as dbt_change_type, + source_data.*, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_valid_from, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_updated_at, + to_timestamp_ntz(convert_timezone('UTC', current_timestamp())) as dbt_valid_to, + snapshotted_data.dbt_scd_id + from snapshotted_data + left join deletes_source_data as source_data + on + snapshotted_data.dbt_unique_key = source_data.dbt_unique_key + where + source_data.dbt_unique_key is null + ) + select * from insertions + union all + select * from updates + union all + select * from deletes''' +expect = "refused SQ0008 node:cast at 654..682" +expect_repository = "refused SQ0003 fn:TO_TIMESTAMP_NTZ at 2154..2216" + +[[query]] +category = "ddl_dml" +sql = '''merge into analytics.dbt_dev.fct_orders as DBT_INTERNAL_DEST + using analytics.dbt_dev.fct_orders__dbt_tmp as DBT_INTERNAL_SOURCE + on (DBT_INTERNAL_DEST.order_date >= dateadd(day, -7, current_date)) and (DBT_INTERNAL_SOURCE.status != 'deleted') and ((DBT_INTERNAL_SOURCE.order_id = DBT_INTERNAL_DEST.order_id)) + when matched then update set + "ORDER_ID" = DBT_INTERNAL_SOURCE."ORDER_ID","CUSTOMER_ID" = DBT_INTERNAL_SOURCE."CUSTOMER_ID","ORDER_DATE" = DBT_INTERNAL_SOURCE."ORDER_DATE","STATUS" = DBT_INTERNAL_SOURCE."STATUS","AMOUNT" = DBT_INTERNAL_SOURCE."AMOUNT","UPDATED_AT" = DBT_INTERNAL_SOURCE."UPDATED_AT" + when not matched then insert + ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT") + values + ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT")''' +expect = "refused SQ0002 node:merge at 11..845" +expect_repository = "refused SQ0002 node:merge at 11..845" + +[[query]] +category = "ddl_dml" +sql = '''merge into analytics.dbt_dev.fct_orders as DBT_INTERNAL_DEST + using analytics.dbt_dev.fct_orders__dbt_tmp as DBT_INTERNAL_SOURCE + on (DBT_INTERNAL_DEST.updated_at > dateadd(day, -3, current_timestamp)) and ((DBT_INTERNAL_SOURCE.order_id = DBT_INTERNAL_DEST.order_id)) + when matched then update set + "ORDER_ID" = DBT_INTERNAL_SOURCE."ORDER_ID","CUSTOMER_ID" = DBT_INTERNAL_SOURCE."CUSTOMER_ID","ORDER_DATE" = DBT_INTERNAL_SOURCE."ORDER_DATE","STATUS" = DBT_INTERNAL_SOURCE."STATUS","AMOUNT" = DBT_INTERNAL_SOURCE."AMOUNT","UPDATED_AT" = DBT_INTERNAL_SOURCE."UPDATED_AT" + when not matched then insert + ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT") + values + ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT")''' +expect = "refused SQ0002 node:merge at 11..803" +expect_repository = "refused SQ0002 node:merge at 11..803" + +[[query]] +category = "ddl_dml" +sql = '''delete from analytics.dbt_dev.fct_orders as DBT_INTERNAL_DEST + where (order_id, customer_id) in ( + select distinct order_id, customer_id + from analytics.dbt_dev.fct_orders__dbt_tmp as DBT_INTERNAL_SOURCE + )''' +expect = "refused SQ0002 node:delete at 12..242" +expect_repository = "refused SQ0002 node:delete at 12..242" + +[[query]] +category = "ddl_dml" +sql = '''insert into analytics.dbt_dev.fct_orders ("ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT") + ( + select "ORDER_ID", "CUSTOMER_ID", "ORDER_DATE", "STATUS", "AMOUNT", "UPDATED_AT" + from analytics.dbt_dev.fct_orders__dbt_tmp + )''' +expect = "refused SQ0002 node:insert at 12..262" +expect_repository = "refused SQ0002 node:insert at 12..262" + +[[query]] +category = "dbt_dedup" +sql = '''select * from stg_orders +qualify row_number() over (partition by order_id order by updated_at desc, order_date desc) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * from stg_orders +qualify row_number() over (partition by order_id order by updated_at desc nulls last) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * from stg_orders +qualify 1 = row_number() over (partition by order_id order by updated_at desc)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * from stg_orders +qualify row_number() over (partition by order_id, customer_id order by updated_at desc) < 2''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * from stg_orders +qualify count(*) over (partition by order_id) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * from stg_orders +where status != 'deleted' +qualify row_number() over (partition by order_id order by updated_at desc) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select order_id, status from stg_orders +qualify last_value(status) over (partition by order_id order by updated_at rows between unbounded preceding and unbounded following) = status''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * from stg_orders +qualify updated_at = max(updated_at) over (partition by order_id) + and row_number() over (partition by order_id order by updated_at desc) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * from raw_events +qualify row_number() over (partition by raw:id::varchar order by _loaded_at desc) = 1''' +expect = "refused SQ0008 node:column at 14..24" +expect_repository = "translated" + +[[query]] +category = "dbt_dedup" +sql = '''select * from stg_orders +qualify row_number() over (partition by order_id order by updated_at desc) = 1 +order by order_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "ddl_dml" +sql = '''merge into fct_orders t +using (select * from stg_orders qualify row_number() over (partition by order_id order by updated_at desc) = 1) s +on t.order_id = s.order_id +when matched and s.status = 'deleted' then delete +when matched and s.updated_at > t.updated_at then update set t.status = s.status, t.amount = s.amount, t.updated_at = s.updated_at +when not matched and s.status != 'deleted' then insert (order_id, customer_id, order_date, status, amount, updated_at) values (s.order_id, s.customer_id, s.order_date, s.status, s.amount, s.updated_at)''' +expect = "refused SQ0002 node:merge at 11..546" +expect_repository = "refused SQ0002 node:merge at 11..546" + +[[query]] +category = "ddl_dml" +sql = '''merge into fct_orders t +using stg_orders s +on t.order_id = s.order_id +when not matched then insert values (s.order_id, s.customer_id, s.order_date, s.status, s.amount, s.updated_at)''' +expect = "refused SQ0002 node:merge at 11..180" +expect_repository = "refused SQ0002 node:merge at 11..180" + +[[query]] +category = "ddl_dml" +sql = '''merge into fct_orders t +using stg_orders s +on t.order_id = s.order_id +when matched then update set status = s.status''' +expect = "refused SQ0002 node:merge at 11..116" +expect_repository = "refused SQ0002 node:merge at 11..116" + +[[query]] +category = "ddl_dml" +sql = '''merge into fct_orders t +using (select order_id, max(updated_at) as updated_at from stg_orders group by order_id) s +on t.order_id = s.order_id +when matched then update set t.updated_at = s.updated_at''' +expect = "refused SQ0002 node:merge at 11..198" +expect_repository = "refused SQ0002 node:merge at 11..198" + +[[query]] +category = "ddl_dml" +sql = '''merge into fct_orders t +using stg_orders s +on t.order_id = s.order_id +when not matched by source then delete''' +expect = "refused SQ0002 node:merge at 11..69" +expect_repository = "refused SQ0002 node:merge at 11..69" diff --git a/corpora/everyday-models/schema.json b/corpora/everyday-models/schema.json new file mode 100644 index 000000000..e863ac743 --- /dev/null +++ b/corpora/everyday-models/schema.json @@ -0,0 +1,788 @@ +{ + "CUSTOMERS": [ + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "FIRST_NAME", + "VARCHAR" + ], + [ + "LAST_NAME", + "VARCHAR" + ], + [ + "EMAIL", + "VARCHAR" + ], + [ + "COUNTRY", + "VARCHAR" + ], + [ + "SIGNUP_DATE", + "DATE" + ], + [ + "IS_ACTIVE", + "BOOLEAN" + ], + [ + "CREATED_AT", + "TIMESTAMP_NTZ" + ] + ], + "ORDERS": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "TOTAL", + "NUMBER(12,2)" + ], + [ + "DISCOUNT", + "NUMBER(12,2)" + ], + [ + "ORDERED_AT", + "TIMESTAMP_NTZ" + ], + [ + "SHIPPED_AT", + "TIMESTAMP_NTZ" + ], + [ + "CHANNEL", + "VARCHAR" + ] + ], + "ORDER_ITEMS": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "LINE_NUMBER", + "NUMBER(38,0)" + ], + [ + "PRODUCT_ID", + "NUMBER(38,0)" + ], + [ + "QUANTITY", + "NUMBER(38,0)" + ], + [ + "UNIT_PRICE", + "NUMBER(10,2)" + ] + ], + "PRODUCTS": [ + [ + "PRODUCT_ID", + "NUMBER(38,0)" + ], + [ + "SKU", + "VARCHAR" + ], + [ + "NAME", + "VARCHAR" + ], + [ + "CATEGORY", + "VARCHAR" + ], + [ + "PRICE", + "NUMBER(10,2)" + ], + [ + "WEIGHT_KG", + "FLOAT" + ], + [ + "LAUNCHED_ON", + "DATE" + ] + ], + "PAYMENTS": [ + [ + "PAYMENT_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "METHOD", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(12,2)" + ], + [ + "PAID_AT", + "TIMESTAMP_NTZ" + ] + ], + "EVENTS": [ + [ + "EVENT_ID", + "VARCHAR" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "EVENT_TYPE", + "VARCHAR" + ], + [ + "PAYLOAD", + "VARIANT" + ], + [ + "OCCURRED_AT", + "TIMESTAMP_NTZ" + ] + ], + "TICKETS": [ + [ + "TICKET_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "PRIORITY", + "VARCHAR" + ], + [ + "SUBJECT", + "VARCHAR" + ], + [ + "OPENED_AT", + "TIMESTAMP_NTZ" + ], + [ + "CLOSED_AT", + "TIMESTAMP_NTZ" + ], + [ + "TAGS", + "ARRAY" + ] + ], + "RAW_ORDERS": [ + [ + "ID", + "NUMBER(38,0)" + ], + [ + "USER_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_DATE", + "DATE" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "AMOUNT_CENTS", + "NUMBER(38,0)" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ], + [ + "_LOADED_AT", + "TIMESTAMP_NTZ" + ] + ], + "RAW_CUSTOMERS": [ + [ + "ID", + "NUMBER(38,0)" + ], + [ + "FIRST_NAME", + "VARCHAR" + ], + [ + "LAST_NAME", + "VARCHAR" + ], + [ + "EMAIL", + "VARCHAR" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ], + [ + "_LOADED_AT", + "TIMESTAMP_NTZ" + ] + ], + "RAW_PAYMENTS": [ + [ + "ID", + "NUMBER(38,0)" + ], + [ + "ORDERID", + "NUMBER(38,0)" + ], + [ + "PAYMENTMETHOD", + "VARCHAR" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(38,0)" + ], + [ + "CREATED", + "DATE" + ], + [ + "_BATCHED_AT", + "TIMESTAMP_NTZ" + ] + ], + "RAW_EVENTS": [ + [ + "RAW", + "VARIANT" + ], + [ + "_LOADED_AT", + "TIMESTAMP_NTZ" + ] + ], + "STG_ORDERS": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_DATE", + "DATE" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(12,2)" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ] + ], + "STG_CUSTOMERS": [ + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "FIRST_NAME", + "VARCHAR" + ], + [ + "LAST_NAME", + "VARCHAR" + ], + [ + "EMAIL", + "VARCHAR" + ], + [ + "COUNTRY", + "VARCHAR" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ] + ], + "STG_PAYMENTS": [ + [ + "PAYMENT_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "PAYMENT_METHOD", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(12,2)" + ], + [ + "PAID_AT", + "TIMESTAMP_NTZ" + ] + ], + "FCT_ORDERS": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_DATE", + "DATE" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(12,2)" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ] + ], + "SUBSCRIPTIONS": [ + [ + "SUBSCRIPTION_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "PLAN", + "VARCHAR" + ], + [ + "MRR", + "NUMBER(10,2)" + ], + [ + "STARTED_AT", + "TIMESTAMP_NTZ" + ], + [ + "CANCELLED_AT", + "TIMESTAMP_NTZ" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ] + ], + "INVENTORY_SNAPSHOTS": [ + [ + "SNAPSHOT_DATE", + "DATE" + ], + [ + "PRODUCT_ID", + "NUMBER(38,0)" + ], + [ + "WAREHOUSE", + "VARCHAR" + ], + [ + "ON_HAND", + "NUMBER(38,0)" + ] + ], + "WEB_SESSIONS": [ + [ + "SESSION_ID", + "VARCHAR" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "STARTED_AT", + "TIMESTAMP_NTZ" + ], + [ + "PAGE_VIEWS", + "NUMBER(38,0)" + ], + [ + "DEVICE", + "VARCHAR" + ], + [ + "ATTRIBUTES", + "OBJECT" + ] + ], + "FX_RATES": [ + [ + "RATE_DATE", + "DATE" + ], + [ + "CURRENCY", + "VARCHAR" + ], + [ + "RATE_TO_USD", + "NUMBER(18,6)" + ] + ], + "ORDERS_SNAPSHOT": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_DATE", + "DATE" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(12,2)" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ], + [ + "DBT_SCD_ID", + "VARCHAR" + ], + [ + "DBT_UPDATED_AT", + "TIMESTAMP_NTZ" + ], + [ + "DBT_VALID_FROM", + "TIMESTAMP_NTZ" + ], + [ + "DBT_VALID_TO", + "TIMESTAMP_NTZ" + ] + ], + "INC_MERGE": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_DATE", + "DATE" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(12,2)" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ] + ], + "INC_LOOKBACK": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_DATE", + "DATE" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(12,2)" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ] + ], + "INC_COALESCE": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_DATE", + "DATE" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(12,2)" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ] + ], + "INC_DEDUP": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_DATE", + "DATE" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(12,2)" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ] + ], + "INC_VAR": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_DATE", + "DATE" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(12,2)" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ] + ], + "INC_NOT_EXISTS": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_DATE", + "DATE" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(12,2)" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ] + ], + "INC_JOIN_THIS": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_DATE", + "DATE" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(12,2)" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ] + ], + "INC_EVENT_TIME": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_DATE", + "DATE" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(12,2)" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ] + ], + "INC_APPEND": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ], + [ + "LOADED_AT", + "TIMESTAMP_TZ" + ] + ], + "INC_PARTITION_DATE": [ + [ + "ORDER_DATE", + "DATE" + ], + [ + "ORDERS", + "NUMBER(18,0)" + ], + [ + "REVENUE", + "NUMBER(38,2)" + ] + ], + "FCT_ORDERS__DBT_TMP": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_DATE", + "DATE" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(12,2)" + ], + [ + "UPDATED_AT", + "TIMESTAMP_NTZ" + ] + ] +} diff --git a/corpora/everyday-models/snowflake-receipts.json b/corpora/everyday-models/snowflake-receipts.json new file mode 100644 index 000000000..3c44f31db --- /dev/null +++ b/corpora/everyday-models/snowflake-receipts.json @@ -0,0 +1,563 @@ +{ + "schema": "the 19 relations the models read, typed as in corpora/everyday-models/schema.json, as empty CTEs (CAST(NULL AS type) ... WHERE FALSE) ahead of each query; for queries with their own WITH, the schema CTEs go first in the same WITH and skip names the query defines", + "method": "EXPLAIN of each query (compile only); queries that compiled were then executed once on the empty inputs and their result columns taken from the connector metadata", + "session": "TIMEZONE UTC, TIMESTAMP_TYPE_MAPPING TIMESTAMP_NTZ, QUOTED_IDENTIFIERS_IGNORE_CASE false, USE_CACHED_RESULT false", + "results": { + "U1": { + "sql": "select * exclude (_loaded_at) rename (id as customer_id)\nfrom raw_customers", + "compiles": null, + "captured": false, + "note": "not submitted: the capture guard's offline read-only screen holds any statement containing the word RENAME" + }, + "U2": { + "sql": "with customers as (\n select * from stg_customers\n),\norders as (\n select * from stg_orders\n),\npayments as (\n select * from stg_payments\n),\ncustomer_orders as (\n select\n customer_id,\n min(order_date) as first_order,\n max(order_date) as most_recent_order,\n count(order_id) as number_of_orders\n from orders\n group by customer_id\n),\ncustomer_payments as (\n select\n orders.customer_id,\n sum(amount) as total_amount\n from payments\n left join orders on payments.order_id = orders.order_id\n group by orders.customer_id\n),\nfinal as (\n select\n customers.customer_id,\n customers.first_name,\n customers.last_name,\n customer_orders.first_order,\n customer_orders.most_recent_order,\n customer_orders.number_of_orders,\n customer_payments.total_amount as customer_lifetime_value\n from customers\n left join customer_orders on customers.customer_id = customer_orders.customer_id\n left join customer_payments on customers.customer_id = customer_payments.customer_id\n)\nselect * from final", + "compiles": false, + "errno": 2028, + "sqlstate": "42601", + "message": "SQL compilation error: ambiguous column name 'AMOUNT'" + }, + "U3": { + "sql": "select\n r.raw:id::varchar as event_id,\n f.path,\n f.value\nfrom raw_events r,\n lateral flatten(input => r.raw, recursive => true) f", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "EVENT_ID", + "type_name": "TEXT", + "precision": null, + "scale": null, + "nullable": true + }, + { + "name": "PATH", + "type_name": "TEXT", + "precision": null, + "scale": null, + "nullable": true + }, + { + "name": "VALUE", + "type_name": "VARIANT", + "precision": null, + "scale": null, + "nullable": true + } + ] + }, + "U4": { + "sql": "select\n e.customer_id,\n object_agg(e.event_type, e.payload) as last_payload_by_type\nfrom events e\ngroup by e.customer_id", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "CUSTOMER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + }, + { + "name": "LAST_PAYLOAD_BY_TYPE", + "type_name": "OBJECT", + "precision": null, + "scale": null, + "nullable": false + } + ] + }, + "U5": { + "sql": "select\n e.event_id,\n f.value:sku::varchar as sku\nfrom events e\njoin lateral flatten(input => e.payload:items) f", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "EVENT_ID", + "type_name": "TEXT", + "precision": null, + "scale": null, + "nullable": true + }, + { + "name": "SKU", + "type_name": "TEXT", + "precision": null, + "scale": null, + "nullable": true + } + ] + }, + "U6": { + "sql": "select\n e.event_id,\n f.value:sku::varchar as sku\nfrom events e\ninner join lateral flatten(input => e.payload:items) f on true", + "compiles": false, + "errno": 2, + "sqlstate": "0A000", + "message": "Unsupported feature 'lateral table function called with OUTER JOIN syntax or a join predicate (ON clause)'." + }, + "U7": { + "sql": "with spine as (\n select dateadd(day, seq4(), '2024-01-01'::date) as date_day\n from table(generator(rowcount => 366))\n)\nselect\n spine.date_day,\n last_value(f.rate_to_usd ignore nulls) over (order by spine.date_day rows between unbounded preceding and current row) as rate_to_usd\nfrom spine\nleft join fx_rates f on f.rate_date = spine.date_day and f.currency = 'EUR'", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "DATE_DAY", + "type_name": "DATE", + "precision": null, + "scale": null, + "nullable": false + }, + { + "name": "RATE_TO_USD", + "type_name": "FIXED", + "precision": 18, + "scale": 6, + "nullable": true + } + ] + }, + "U8": { + "sql": "select\n dateadd(day, value::int, '2024-01-01'::date) as date_day\nfrom table(flatten(input => array_generate_range(0, 366)))", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "DATE_DAY", + "type_name": "DATE", + "precision": null, + "scale": null, + "nullable": true + } + ] + }, + "U9": { + "sql": "select\n dateadd(day, seq4(), '2024-01-01') as date_day\nfrom table(generator(rowcount => 10))", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "DATE_DAY", + "type_name": "TIMESTAMP_NTZ", + "precision": 0, + "scale": 9, + "nullable": false + } + ] + }, + "U10": { + "sql": "select\n dateadd(day, seq4(), '2024-01-01'::date) as date_day\nfrom table(generator(timelimit => 1))", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "DATE_DAY", + "type_name": "DATE", + "precision": null, + "scale": null, + "nullable": false + } + ] + }, + "U11": { + "sql": "select\n order_id,\n customer_id,\n ordered_at,\n total,\n count(distinct status) over (partition by customer_id) as distinct_statuses\nfrom orders\n", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "ORDER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + }, + { + "name": "CUSTOMER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + }, + { + "name": "ORDERED_AT", + "type_name": "TIMESTAMP_NTZ", + "precision": 0, + "scale": 9, + "nullable": true + }, + { + "name": "TOTAL", + "type_name": "FIXED", + "precision": 12, + "scale": 2, + "nullable": true + }, + { + "name": "DISTINCT_STATUSES", + "type_name": "FIXED", + "precision": 18, + "scale": 0, + "nullable": false + } + ] + }, + "U12": { + "sql": "select\n order_id,\n customer_id,\n ordered_at,\n total,\n conditional_true_event(datediff('minute', lag(ordered_at) over (partition by customer_id order by ordered_at), ordered_at) > 30) over (partition by customer_id order by ordered_at) as session_number\nfrom orders\n", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "ORDER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + }, + { + "name": "CUSTOMER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + }, + { + "name": "ORDERED_AT", + "type_name": "TIMESTAMP_NTZ", + "precision": 0, + "scale": 9, + "nullable": true + }, + { + "name": "TOTAL", + "type_name": "FIXED", + "precision": 12, + "scale": 2, + "nullable": true + }, + { + "name": "SESSION_NUMBER", + "type_name": "FIXED", + "precision": 18, + "scale": 0, + "nullable": true + } + ] + }, + "U13": { + "sql": "select\n order_id,\n customer_id,\n ordered_at,\n total,\n avg(total) over (partition by customer_id order by ordered_at range between interval '7 days' preceding and current row) as avg_7_days\nfrom orders\n", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "ORDER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + }, + { + "name": "CUSTOMER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + }, + { + "name": "ORDERED_AT", + "type_name": "TIMESTAMP_NTZ", + "precision": 0, + "scale": 9, + "nullable": true + }, + { + "name": "TOTAL", + "type_name": "FIXED", + "precision": 12, + "scale": 2, + "nullable": true + }, + { + "name": "AVG_7_DAYS", + "type_name": "FIXED", + "precision": 27, + "scale": 5, + "nullable": true + } + ] + }, + "U14": { + "sql": "select\n order_id,\n customer_id,\n ordered_at,\n total,\n lag(total) ignore nulls over (partition by customer_id order by ordered_at) as previous_non_null\nfrom orders\n", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "ORDER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + }, + { + "name": "CUSTOMER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + }, + { + "name": "ORDERED_AT", + "type_name": "TIMESTAMP_NTZ", + "precision": 0, + "scale": 9, + "nullable": true + }, + { + "name": "TOTAL", + "type_name": "FIXED", + "precision": 12, + "scale": 2, + "nullable": true + }, + { + "name": "PREVIOUS_NON_NULL", + "type_name": "FIXED", + "precision": 12, + "scale": 2, + "nullable": true + } + ] + }, + "U15": { + "sql": "select\n order_id,\n sum(total) over w as running_total,\n avg(total) over w as running_avg\nfrom orders\nwindow w as (partition by customer_id order by ordered_at)", + "compiles": false, + "errno": 1003, + "sqlstate": "42000", + "message": "SQL compilation error: syntax error line 3 at position 20 unexpected 'w'. syntax error line 3 at position 22 unexpected 'as'." + }, + "U16": { + "sql": "select *\nfrom (select customer_id, channel, total from orders)\npivot (sum(total) for channel in (any order by channel))", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "CUSTOMER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + } + ] + }, + "U17": { + "sql": "select *\nfrom (select customer_id, channel, total from orders)\npivot (sum(total) for channel in (select distinct channel from orders))", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "CUSTOMER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + } + ] + }, + "U18": { + "sql": "select *\nfrom (select customer_id, channel, total from orders)\npivot (sum(total) for channel in ('web', 'store') default on null (0))", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "CUSTOMER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + }, + { + "name": "'web'", + "type_name": "FIXED", + "precision": 24, + "scale": 2, + "nullable": false + }, + { + "name": "'store'", + "type_name": "FIXED", + "precision": 24, + "scale": 2, + "nullable": false + } + ] + }, + "U19": { + "sql": "select order_id, metric, value\nfrom (select order_id, total, discount from orders)\nunpivot include nulls (value for metric in (total, discount))", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "ORDER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + }, + { + "name": "METRIC", + "type_name": "TEXT", + "precision": null, + "scale": null, + "nullable": true + }, + { + "name": "VALUE", + "type_name": "FIXED", + "precision": 12, + "scale": 2, + "nullable": true + } + ] + }, + "U20": { + "sql": "select o.order_id, m.metric, m.value\nfrom orders o,\n lateral (\n select 'total' as metric, o.total as value\n union all\n select 'discount', o.discount\n ) m", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "ORDER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + }, + { + "name": "METRIC", + "type_name": "TEXT", + "precision": null, + "scale": null, + "nullable": false + }, + { + "name": "VALUE", + "type_name": "FIXED", + "precision": 12, + "scale": 2, + "nullable": true + } + ] + }, + "U21": { + "sql": "select customer_id, channel, total_web, total_store\nfrom (select customer_id, channel, total from orders)\npivot (sum(total) for channel in ('web' as total_web, 'store' as total_store))", + "compiles": false, + "errno": 904, + "sqlstate": "42000", + "message": "SQL compilation error: error line 1 at position 4,966 invalid identifier 'CHANNEL'" + }, + "U22": { + "sql": "select\n o.order_id,\n o.total,\n coalesce(sum(p.amount), 0) as paid,\n o.total - coalesce(sum(p.amount), 0) as outstanding\nfrom orders o\nleft join payments p on p.order_id = o.order_id\ngroup by o.order_id, o.total\nhaving outstanding <> 0", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "ORDER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + }, + { + "name": "TOTAL", + "type_name": "FIXED", + "precision": 12, + "scale": 2, + "nullable": true + }, + { + "name": "PAID", + "type_name": "FIXED", + "precision": 24, + "scale": 2, + "nullable": false + }, + { + "name": "OUTSTANDING", + "type_name": "FIXED", + "precision": 25, + "scale": 2, + "nullable": true + } + ] + }, + "U23": { + "sql": "select *\nfrom stg_customers\nat (timestamp => '2024-06-30 00:00:00'::timestamp_ltz)", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "name": "CUSTOMER_ID", + "type_name": "FIXED", + "precision": 38, + "scale": 0, + "nullable": true + }, + { + "name": "FIRST_NAME", + "type_name": "TEXT", + "precision": null, + "scale": null, + "nullable": true + }, + { + "name": "LAST_NAME", + "type_name": "TEXT", + "precision": null, + "scale": null, + "nullable": true + }, + { + "name": "EMAIL", + "type_name": "TEXT", + "precision": null, + "scale": null, + "nullable": true + }, + { + "name": "COUNTRY", + "type_name": "TEXT", + "precision": null, + "scale": null, + "nullable": true + }, + { + "name": "UPDATED_AT", + "type_name": "TIMESTAMP_NTZ", + "precision": 0, + "scale": 9, + "nullable": true + } + ] + }, + "U24": { + "sql": "select *\nfrom stg_customers\nchanges (information => default)\nat (offset => -3600)", + "compiles": false, + "errno": 91930, + "sqlstate": "2F003", + "message": "SQL compilation error: Change tracking is not enabled or has been missing for the time range requested on table 'SYS$_VIEW_914'." + } + } +} diff --git a/corpora/everyday/queries.toml b/corpora/everyday/queries.toml new file mode 100644 index 000000000..41384201a --- /dev/null +++ b/corpora/everyday/queries.toml @@ -0,0 +1,3869 @@ +# Everyday Snowflake queries, as a demo visitor or a dbt project writes them, over schema.json. +# `expect` is its outcome from SQLQuack under the built-in default policy, which the playground +# offers as "strict": "translated", "parse ", "check " or "refused ". +# `expect_repository` is the outcome under the repository's sqlquack.toml with a UTC session, the +# playground's default. The test fails when an outcome changes, except a refusal that now +# translates, which it only reports; `make corpus-rerecord` records every change, intended ones +# in the same commit. `snowflake` is Snowflake's own verdict where one was recorded, "compiles" or +# "rejects ", from snowflake-receipts.json; it decides whether a query counts as valid SQL in +# the translation rates, over its category. + +[[query]] +category = "literals" +sql = '''SELECT 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT 1 AS one''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT 'hello'''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT 'hello' AS greeting''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT 1, 2, 3''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT 1 + 1''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "literals" +sql = '''SELECT 1 + 1 AS two''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT 10 / 4 AS ratio''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT 10 % 3 AS remainder''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT -5 AS negative''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT 3.14 AS pi''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT 1e3 AS thousand''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT TRUE AS yes, FALSE AS no''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT NULL AS nothing''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT NULL''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT 'it''s' AS escaped''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT 'a' || 'b' AS joined''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT CURRENT_DATE''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT CURRENT_DATE AS today''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT CURRENT_TIMESTAMP AS now''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT CURRENT_DATE()''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT DATE '2024-01-15' AS d''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT TIMESTAMP '2024-01-15 10:30:00' AS ts''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT '2024-01-15'::DATE AS d''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT '42'::INT AS n''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT CAST('42' AS NUMBER) AS n''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT CAST(3.7 AS INTEGER) AS n''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT 1 AS a UNION ALL SELECT 2''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT * FROM (VALUES (1, 'a'), (2, 'b')) AS t(id, label)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT column1, column2 FROM VALUES (1, 'a'), (2, 'b')''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT 2 * (3 + 4) AS n''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT ROUND(2.567, 2) AS r''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT ABS(-3) AS a''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT UPPER('abc') AS u''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT LENGTH('hello') AS n''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT 1 WHERE 1 = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''select 1 as lower_case''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT 1 AS "Quoted Name"''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "select_star" +sql = '''SELECT * FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "select_star" +sql = '''SELECT * FROM ORDERS''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "select_star" +sql = '''SELECT * FROM orders LIMIT 10''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "select_star" +sql = '''SELECT * FROM orders o''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "select_star" +sql = '''SELECT o.* FROM orders o''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "select_star" +sql = '''SELECT * FROM orders WHERE status = 'shipped'''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "select_star" +sql = '''SELECT * FROM orders ORDER BY ordered_at DESC LIMIT 5''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "select_star" +sql = '''SELECT * EXCLUDE (discount) FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "select_star" +sql = '''SELECT * RENAME (total AS order_total) FROM orders''' +expect = "refused SQ0002 node:star at 0..50" +expect_repository = "refused SQ0002 node:star at 0..50" + +[[query]] +category = "select_star" +sql = '''SELECT * FROM customers WHERE country = 'DE'''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "select_star" +sql = '''SELECT DISTINCT * FROM products''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "select_star" +sql = '''SELECT * FROM orders SAMPLE (10 ROWS)''' +expect = "refused SQ0002 node:table at 14..20" +expect_repository = "refused SQ0002 node:table at 14..20" + +[[query]] +category = "select_star" +sql = '''SELECT * FROM orders TOP 5''' +expect = "parse SQ0001 at 21..24" +expect_repository = "parse SQ0001 at 21..24" +snowflake = "rejects 1003" + +[[query]] +category = "select_star" +sql = '''SELECT TOP 5 * FROM orders''' +expect = "refused SQ0002 node:select at 0..26" +expect_repository = "refused SQ0002 node:select at 0..26" + +[[query]] +category = "select_star" +sql = '''SELECT o.*, c.email FROM orders o JOIN customers c ON o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id, total FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id, customer_id, status, total FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT o.order_id, o.total FROM orders AS o''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT orders.order_id FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT ORDER_ID, TOTAL FROM ORDERS''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT "ORDER_ID" FROM "ORDERS"''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id AS id, total AS amount FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id id, total amount FROM orders''' +expect = "translated" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "columns" +sql = '''SELECT total * 1.2 AS gross FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT total - discount AS net FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT total - COALESCE(discount, 0) AS net FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT total / 2 AS half FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT total, total * 0.19 AS vat FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT first_name || ' ' || last_name AS full_name FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT DISTINCT status FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT DISTINCT country FROM customers ORDER BY country''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id FROM orders WHERE total > 100''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id FROM orders WHERE total BETWEEN 10 AND 100''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id FROM orders WHERE status IN ('shipped', 'delivered')''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id FROM orders WHERE status NOT IN ('cancelled')''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id FROM orders WHERE shipped_at IS NULL''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id FROM orders WHERE shipped_at IS NOT NULL AND total > 0''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id FROM orders WHERE status = 'shipped' OR status = 'delivered'''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id FROM orders WHERE NOT (status = 'cancelled')''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT email FROM customers WHERE email LIKE '%@example.com'''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT email FROM customers WHERE email ILIKE '%@EXAMPLE.COM'''' +expect = "refused SQ0008 node:i_like at 34..61" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT email FROM customers WHERE email NOT LIKE '%test%'''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT name FROM products WHERE name RLIKE '^[A-Z].*'''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT customer_id FROM customers WHERE is_active''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT customer_id FROM customers WHERE NOT is_active''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT customer_id FROM customers WHERE is_active = TRUE''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id, total FROM orders ORDER BY total DESC''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id, total FROM orders ORDER BY 2 DESC''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id, total FROM orders ORDER BY total DESC NULLS LAST''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id, total FROM orders ORDER BY total LIMIT 10 OFFSET 20''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id FROM orders LIMIT 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id FROM orders FETCH FIRST 10 ROWS ONLY''' +expect = "refused SQ0002 node:select at 0..52" +expect_repository = "refused SQ0002 node:select at 0..52" +snowflake = "compiles" + +[[query]] +category = "columns" +sql = '''SELECT order_id, total FROM orders WHERE total = (SELECT MAX(total) FROM orders)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id FROM orders WHERE customer_id IN (SELECT customer_id FROM customers WHERE country = 'US')''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT customer_id FROM customers c WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.customer_id)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT customer_id FROM customers c WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.customer_id)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "columns" +sql = '''SELECT order_id, (SELECT COUNT(*) FROM order_items i WHERE i.order_id = o.order_id) AS lines FROM orders o''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT COUNT(*) FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT COUNT(*) AS n FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT COUNT(1) AS n FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT COUNT(order_id) AS n FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT COUNT(DISTINCT customer_id) AS customers FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT SUM(total) AS revenue FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT AVG(total) AS average FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT MIN(total) AS smallest, MAX(total) AS largest FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT MIN(ordered_at) AS first_order, MAX(ordered_at) AS last_order FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT status, COUNT(*) FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT status, COUNT(*) AS n FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT status, COUNT(*) AS n FROM orders GROUP BY 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT status, COUNT(*) AS n FROM orders GROUP BY status ORDER BY n DESC''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT customer_id, SUM(total) AS revenue FROM orders GROUP BY customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT customer_id, SUM(total) AS revenue FROM orders GROUP BY customer_id HAVING SUM(total) > 1000''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT customer_id, COUNT(*) AS orders FROM orders GROUP BY customer_id HAVING COUNT(*) > 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT customer_id, SUM(total) AS revenue, COUNT(*) AS orders, AVG(total) AS aov FROM orders GROUP BY customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT channel, status, COUNT(*) AS n FROM orders GROUP BY channel, status''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT country, COUNT(*) AS customers FROM customers GROUP BY country ORDER BY customers DESC LIMIT 10''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT category, AVG(price) AS avg_price FROM products GROUP BY category''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT category, ROUND(AVG(price), 2) AS avg_price FROM products GROUP BY category''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT category, MEDIAN(price) AS median_price FROM products GROUP BY category''' +expect = "refused SQ0008 fn:MEDIAN at 17..30" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT SUM(quantity * unit_price) AS revenue FROM order_items''' +expect = "refused SQ0008 node:mul at 11..32" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT order_id, SUM(quantity) AS units FROM order_items GROUP BY order_id''' +expect = "refused SQ0008 fn:SUM at 17..30" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT COUNT_IF(status = 'cancelled') AS cancelled FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT SUM(IFF(status = 'cancelled', 1, 0)) AS cancelled FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT SUM(CASE WHEN status = 'cancelled' THEN 1 ELSE 0 END) AS cancelled FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT COUNT(*) FILTER (WHERE status = 'shipped') AS shipped FROM orders''' +expect = "refused SQ0002 fn:COUNT at 7..49" +expect_repository = "refused SQ0002 fn:COUNT at 7..49" +snowflake = "rejects 1003" + +[[query]] +category = "aggregates" +sql = '''SELECT ANY_VALUE(status) AS some_status FROM orders''' +expect = "refused SQ0008 fn:ANY_VALUE at 7..24" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT customer_id, LISTAGG(status, ', ') AS statuses FROM orders GROUP BY customer_id''' +expect = "refused SQ0002 fn:LISTAGG at 20..41" +expect_repository = "refused SQ0002 fn:LISTAGG at 20..41" + +[[query]] +category = "aggregates" +sql = '''SELECT customer_id, LISTAGG(DISTINCT status, ',') WITHIN GROUP (ORDER BY status) AS statuses FROM orders GROUP BY customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT customer_id, ARRAY_AGG(order_id) AS order_ids FROM orders GROUP BY customer_id''' +expect = "refused SQ0008 fn:ARRAY_AGG at 20..39" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT customer_id, ARRAY_AGG(order_id) WITHIN GROUP (ORDER BY ordered_at) AS order_ids FROM orders GROUP BY customer_id''' +expect = "refused SQ0008 fn:ARRAY_AGG at 30..73" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT STDDEV(total) AS sd, VARIANCE(total) AS var FROM orders''' +expect = "refused SQ0008 fn:STDDEV at 7..20" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT APPROX_COUNT_DISTINCT(customer_id) AS approx_customers FROM orders''' +expect = "refused SQ0002 fn:APPROX_COUNT_DISTINCT at 7..41" +expect_repository = "refused SQ0002 fn:APPROX_COUNT_DISTINCT at 7..41" + +[[query]] +category = "aggregates" +sql = '''SELECT BOOLOR_AGG(is_active) AS any_active FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT MAX_BY(order_id, total) AS biggest_order FROM orders''' +expect = "refused SQ0008 fn:MAX_BY at 7..30" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT MODE(status) AS common_status FROM orders''' +expect = "refused SQ0008 fn:MODE at 7..19" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT PERCENTILE_CONT(0.9) WITHIN GROUP (ORDER BY total) AS p90 FROM orders''' +expect = "refused SQ0008 fn:PERCENTILE_CONT at 51..56" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT channel, SUM(total) AS revenue FROM orders GROUP BY ROLLUP (channel)''' +expect = "refused SQ0002 fn:ROLLUP at 67..74" +expect_repository = "refused SQ0002 fn:ROLLUP at 67..74" + +[[query]] +category = "aggregates" +sql = '''SELECT channel, status, COUNT(*) AS n FROM orders GROUP BY GROUPING SETS ((channel), (status))''' +expect = "refused SQ0002 fn:GROUPING SETS at 75..92" +expect_repository = "refused SQ0002 fn:GROUPING SETS at 75..92" + +[[query]] +category = "aggregates" +sql = '''SELECT channel, COUNT(*) AS n FROM orders GROUP BY ALL''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT DATE_TRUNC('month', ordered_at) AS month, SUM(total) AS revenue FROM orders GROUP BY 1 ORDER BY 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT DATE_TRUNC('month', ordered_at) AS month, COUNT(DISTINCT customer_id) AS active_customers FROM orders GROUP BY month''' +expect = "refused SQ0003 node:group_by at 118..123" +expect_repository = "refused SQ0003 node:group_by at 118..123" + +[[query]] +category = "aggregates" +sql = '''SELECT YEAR(ordered_at) AS yr, SUM(total) AS revenue FROM orders GROUP BY yr ORDER BY yr''' +expect = "refused SQ0003 node:group_by at 74..76" +expect_repository = "refused SQ0003 node:group_by at 74..76" + +[[query]] +category = "aggregates" +sql = '''SELECT SUM(total) FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT MAX(total) FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT AVG(total) FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT status, SUM(total) FROM orders GROUP BY status''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT COUNT(*) AS n, SUM(total) / COUNT(*) AS aov FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT SUM(total) / NULLIF(COUNT(*), 0) AS aov FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT DIV0(SUM(total), COUNT(*)) AS aov FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, c.email FROM orders o JOIN customers c ON o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, c.email FROM orders o INNER JOIN customers c ON o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, c.email FROM orders o LEFT JOIN customers c ON o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, c.email FROM orders o LEFT OUTER JOIN customers c ON o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, c.email FROM orders o RIGHT JOIN customers c ON o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, c.email FROM orders o FULL OUTER JOIN customers c ON o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT c.customer_id, o.order_id FROM customers c CROSS JOIN orders o''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, c.email FROM orders o, customers c WHERE o.customer_id = c.customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, c.email FROM orders o JOIN customers c USING (customer_id)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT order_id, email FROM orders JOIN customers USING (customer_id)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, c.email FROM orders o NATURAL JOIN customers c''' +expect = "refused SQ0002 join:natural at 41..65" +expect_repository = "refused SQ0002 join:natural at 41..65" + +[[query]] +category = "joins" +sql = '''SELECT orders.order_id, customers.email FROM orders JOIN customers ON orders.customer_id = customers.customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, i.line_number, p.name FROM orders o JOIN order_items i ON o.order_id = i.order_id JOIN products p ON i.product_id = p.product_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT c.email, o.order_id, i.quantity, p.name, pay.method FROM customers c JOIN orders o ON o.customer_id = c.customer_id JOIN order_items i ON i.order_id = o.order_id JOIN products p ON p.product_id = i.product_id LEFT JOIN payments pay ON pay.order_id = o.order_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT c.customer_id, COUNT(o.order_id) AS orders FROM customers c LEFT JOIN orders o ON o.customer_id = c.customer_id GROUP BY c.customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT c.customer_id, COALESCE(SUM(o.total), 0) AS revenue FROM customers c LEFT JOIN orders o ON o.customer_id = c.customer_id GROUP BY c.customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT p.category, SUM(i.quantity * i.unit_price) AS revenue FROM order_items i JOIN products p ON p.product_id = i.product_id GROUP BY p.category ORDER BY revenue DESC''' +expect = "refused SQ0008 node:mul at 23..48" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT c.customer_id FROM customers c LEFT JOIN orders o ON o.customer_id = c.customer_id WHERE o.order_id IS NULL''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id FROM orders o JOIN payments p ON p.order_id = o.order_id AND p.amount = o.total''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, p.amount FROM orders o LEFT JOIN payments p ON p.order_id = o.order_id AND p.method = 'card'''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT a.order_id, b.order_id AS next_order FROM orders a JOIN orders b ON a.customer_id = b.customer_id AND b.ordered_at > a.ordered_at''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, c.country FROM orders o JOIN customers c ON o.customer_id = c.customer_id WHERE c.country IN ('US', 'CA') AND o.total > 50''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT t.ticket_id, c.email FROM tickets t JOIN customers c ON c.customer_id = t.customer_id WHERE t.closed_at IS NULL''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, c.email FROM orders o JOIN customers c ON o.customer_id = c.customer_id ORDER BY o.ordered_at DESC LIMIT 20''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, x.total_paid FROM orders o JOIN (SELECT order_id, SUM(amount) AS total_paid FROM payments GROUP BY order_id) x ON x.order_id = o.order_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, x.total_paid FROM orders o LEFT JOIN LATERAL (SELECT SUM(amount) AS total_paid FROM payments p WHERE p.order_id = o.order_id) x''' +expect = "refused SQ0002 node:subquery at 46..146" +expect_repository = "refused SQ0002 node:subquery at 46..146" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id FROM orders o ASOF JOIN payments p MATCH_CONDITION (o.ordered_at >= p.paid_at) ON o.order_id = p.order_id''' +expect = "translated" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "ctes" +sql = '''WITH t AS (SELECT 1 AS x) SELECT x FROM t''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "ctes" +sql = '''WITH t AS (SELECT 1 AS x) SELECT * FROM t''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "ctes" +sql = '''WITH recent AS (SELECT * FROM orders WHERE ordered_at >= '2024-01-01') SELECT COUNT(*) AS n FROM recent''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "ctes" +sql = '''WITH shipped AS (SELECT order_id, customer_id, total FROM orders WHERE status = 'shipped') SELECT customer_id, SUM(total) AS revenue FROM shipped GROUP BY customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "ctes" +sql = '''WITH revenue AS (SELECT customer_id, SUM(total) AS revenue FROM orders GROUP BY customer_id), ranked AS (SELECT customer_id, revenue, RANK() OVER (ORDER BY revenue DESC) AS rnk FROM revenue) SELECT * FROM ranked WHERE rnk <= 10''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "ctes" +sql = '''WITH a AS (SELECT customer_id FROM orders), b AS (SELECT customer_id FROM customers) SELECT COUNT(*) AS n FROM a JOIN b USING (customer_id)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "ctes" +sql = '''WITH totals AS (SELECT order_id, SUM(quantity * unit_price) AS items_total FROM order_items GROUP BY order_id) SELECT o.order_id, o.total, t.items_total, o.total - t.items_total AS diff FROM orders o JOIN totals t ON t.order_id = o.order_id''' +expect = "refused SQ0008 node:mul at 37..58" +expect_repository = "translated" + +[[query]] +category = "ctes" +sql = '''WITH firsts AS (SELECT customer_id, MIN(ordered_at) AS first_order_at FROM orders GROUP BY customer_id) SELECT DATE_TRUNC('month', first_order_at) AS cohort, COUNT(*) AS customers FROM firsts GROUP BY 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "ctes" +sql = '''WITH t (a, b) AS (SELECT 1, 2) SELECT a + b AS s FROM t''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "ctes" +sql = '''WITH RECURSIVE n AS (SELECT 1 AS i UNION ALL SELECT i + 1 FROM n WHERE i < 10) SELECT i FROM n''' +expect = "refused SQ0002 node:with at 0..94" +expect_repository = "refused SQ0002 node:with at 0..94" + +[[query]] +category = "ctes" +sql = '''WITH x AS (SELECT order_id, total FROM orders) SELECT order_id FROM x WHERE total > (SELECT AVG(total) FROM x)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "ctes" +sql = '''WITH paid AS (SELECT order_id, SUM(amount) AS paid FROM payments GROUP BY order_id) SELECT o.order_id, o.total, COALESCE(p.paid, 0) AS paid, o.total - COALESCE(p.paid, 0) AS outstanding FROM orders o LEFT JOIN paid p ON p.order_id = o.order_id WHERE o.total > COALESCE(p.paid, 0)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, ROW_NUMBER() OVER (ORDER BY ordered_at) AS rn FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, customer_id, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY ordered_at) AS order_number FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, RANK() OVER (ORDER BY total DESC) AS rnk FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, DENSE_RANK() OVER (ORDER BY total DESC) AS rnk FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, total, SUM(total) OVER (PARTITION BY customer_id) AS customer_total FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, total, SUM(total) OVER (PARTITION BY customer_id ORDER BY ordered_at) AS running_total FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, total, SUM(total) OVER (ORDER BY ordered_at ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_total FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, AVG(total) OVER (ORDER BY ordered_at ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_avg FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, LAG(total) OVER (PARTITION BY customer_id ORDER BY ordered_at) AS previous_total FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, LEAD(ordered_at) OVER (PARTITION BY customer_id ORDER BY ordered_at) AS next_order_at FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, LAG(total, 1, 0) OVER (ORDER BY ordered_at) AS prev FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, FIRST_VALUE(order_id) OVER (PARTITION BY customer_id ORDER BY ordered_at) AS first_order FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, LAST_VALUE(order_id) OVER (PARTITION BY customer_id ORDER BY ordered_at ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS last_order FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, NTILE(4) OVER (ORDER BY total) AS quartile FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, total / SUM(total) OVER () AS share FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, RATIO_TO_REPORT(total) OVER () AS share FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, COUNT(*) OVER (PARTITION BY customer_id) AS customer_orders FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, PERCENT_RANK() OVER (ORDER BY total) AS pr FROM orders''' +expect = "refused SQ0002 fn:PERCENT_RANK at 17..53" +expect_repository = "refused SQ0002 fn:PERCENT_RANK at 17..53" + +[[query]] +category = "windows" +sql = '''SELECT order_id, CUME_DIST() OVER (ORDER BY total) AS cd FROM orders''' +expect = "refused SQ0002 fn:CUME_DIST at 17..50" +expect_repository = "refused SQ0002 fn:CUME_DIST at 17..50" + +[[query]] +category = "windows" +sql = '''SELECT * FROM orders QUALIFY ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY ordered_at DESC) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, customer_id FROM orders QUALIFY ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY ordered_at DESC) = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, customer_id, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY ordered_at DESC) AS rn FROM orders QUALIFY rn = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT customer_id, order_id FROM orders QUALIFY RANK() OVER (PARTITION BY customer_id ORDER BY total DESC) <= 3''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id FROM (SELECT order_id, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY ordered_at DESC) AS rn FROM orders) WHERE rn = 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, DATEDIFF('day', LAG(ordered_at) OVER (PARTITION BY customer_id ORDER BY ordered_at), ordered_at) AS days_since_previous FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY ordered_at, order_id) AS seq FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT DATE_TRUNC('day', ordered_at) AS day, SUM(SUM(total)) OVER (ORDER BY DATE_TRUNC('day', ordered_at)) AS cumulative FROM orders GROUP BY 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, CONDITIONAL_TRUE_EVENT(status = 'cancelled') OVER (ORDER BY ordered_at) AS grp FROM orders''' +expect = "refused SQ0002 fn:CONDITIONAL_TRUE_EVENT at 17..88" +expect_repository = "refused SQ0002 fn:CONDITIONAL_TRUE_EVENT at 17..88" + +[[query]] +category = "dates" +sql = '''SELECT DATE_TRUNC('month', ordered_at) AS month FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT DATE_TRUNC('week', ordered_at) AS week FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT DATE_TRUNC('day', ordered_at) AS day FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT DATE_TRUNC(month, ordered_at) AS month FROM orders''' +expect = "translated" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "dates" +sql = '''SELECT ordered_at::DATE AS order_date FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT TO_DATE(ordered_at) AS order_date FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT CAST(ordered_at AS DATE) AS order_date FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT DATE(ordered_at) AS order_date FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT DATEADD(day, 7, ordered_at) AS due_at FROM orders''' +expect = "refused SQ0008 fn:DATEADD at 7..34" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT DATEADD('day', 7, ordered_at) AS due_at FROM orders''' +expect = "refused SQ0008 fn:DATEADD at 7..36" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT DATEADD(month, 1, signup_date) AS next_month FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT ordered_at + INTERVAL '1 day' AS tomorrow FROM orders''' +expect = "refused SQ0008 node:add at 7..36" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT signup_date + 30 AS trial_end FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT DATEDIFF(day, ordered_at, shipped_at) AS days_to_ship FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT DATEDIFF('hour', ordered_at, shipped_at) AS hours_to_ship FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT TIMESTAMPDIFF(minute, ordered_at, shipped_at) AS minutes FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT YEAR(ordered_at) AS y, MONTH(ordered_at) AS m, DAY(ordered_at) AS d FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT EXTRACT(year FROM ordered_at) AS y FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT DATE_PART('dow', ordered_at) AS dow FROM orders''' +expect = "translated" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "dates" +sql = '''SELECT DAYOFWEEK(ordered_at) AS dow FROM orders''' +expect = "refused SQ0002 fn:DAYOFWEEK at 7..28" +expect_repository = "refused SQ0002 fn:DAYOFWEEK at 7..28" + +[[query]] +category = "dates" +sql = '''SELECT DAYNAME(ordered_at) AS day_name FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT MONTHNAME(ordered_at) AS month_name FROM orders''' +expect = "refused SQ0002 fn:MONTHNAME at 7..28" +expect_repository = "refused SQ0002 fn:MONTHNAME at 7..28" + +[[query]] +category = "dates" +sql = '''SELECT QUARTER(ordered_at) AS q FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT WEEKOFYEAR(ordered_at) AS w FROM orders''' +expect = "refused SQ0002 fn:WEEKOFYEAR at 7..29" +expect_repository = "refused SQ0002 fn:WEEKOFYEAR at 7..29" + +[[query]] +category = "dates" +sql = '''SELECT LAST_DAY(signup_date) AS month_end FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT TO_CHAR(ordered_at, 'YYYY-MM-DD') AS day FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT TO_VARCHAR(ordered_at, 'YYYY-MM') AS month FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT TO_TIMESTAMP('2024-01-15 10:00:00') AS ts''' +expect = "refused SQ0008 fn:TO_TIMESTAMP at 7..42" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT TO_DATE('2024-01-15') AS d''' +expect = "refused SQ0008 fn:TO_DATE at 7..28" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT TO_DATE('15/01/2024', 'DD/MM/YYYY') AS d''' +expect = "refused SQ0008 fn:TO_DATE at 7..42" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT TRY_TO_DATE('not a date') AS d''' +expect = "refused SQ0008 fn:TRY_TO_DATE at 7..32" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id FROM orders WHERE ordered_at >= '2024-01-01'''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id FROM orders WHERE ordered_at >= DATEADD(day, -30, CURRENT_DATE)''' +expect = "refused SQ0003 node:gte at 34..79" +expect_repository = "refused SQ0003 node:gte at 34..79" + +[[query]] +category = "dates" +sql = '''SELECT order_id FROM orders WHERE ordered_at >= DATEADD(day, -30, CURRENT_TIMESTAMP())''' +expect = "refused SQ0003 fn:DATEADD at 48..86" +expect_repository = "refused SQ0003 fn:DATEADD at 48..86" + +[[query]] +category = "dates" +sql = '''SELECT order_id FROM orders WHERE ordered_at BETWEEN '2024-01-01' AND '2024-01-31'''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id FROM orders WHERE ordered_at::DATE = CURRENT_DATE - 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id FROM orders WHERE DATE_TRUNC('month', ordered_at) = DATE_TRUNC('month', CURRENT_DATE)''' +expect = "refused SQ0003 node:eq at 34..101" +expect_repository = "refused SQ0003 node:eq at 34..101" + +[[query]] +category = "dates" +sql = '''SELECT customer_id FROM customers WHERE signup_date > '2023-06-30'::DATE''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT DATEDIFF(year, signup_date, CURRENT_DATE) AS tenure_years FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT CONVERT_TIMEZONE('UTC', 'America/New_York', ordered_at) AS local_time FROM orders''' +expect = "refused SQ0008 fn:CONVERT_TIMEZONE at 7..62" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT DATE_FROM_PARTS(2024, 1, 15) AS d''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT TIME_SLICE(ordered_at, 15, 'MINUTE') AS slot FROM orders''' +expect = "refused SQ0002 fn:TIME_SLICE at 7..43" +expect_repository = "refused SQ0002 fn:TIME_SLICE at 7..43" + +[[query]] +category = "dates" +sql = '''SELECT SYSDATE() AS now''' +expect = "refused SQ0002 fn:SYSDATE at 7..16" +expect_repository = "refused SQ0002 fn:SYSDATE at 7..16" + +[[query]] +category = "dates" +sql = '''SELECT GETDATE() AS now''' +expect = "refused SQ0002 fn:GETDATE at 7..16" +expect_repository = "refused SQ0002 fn:GETDATE at 7..16" + +[[query]] +category = "dates" +sql = '''SELECT ADD_MONTHS(signup_date, 3) AS plus3 FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT MONTHS_BETWEEN(CURRENT_DATE, signup_date) AS months FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id, opened_at FROM tickets t JOIN orders o ON DATE_TRUNC('day', t.opened_at) = DATE_TRUNC('day', o.ordered_at)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, IFF(total > 100, 'large', 'small') AS size FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, CASE WHEN total > 100 THEN 'large' ELSE 'small' END AS size FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, CASE WHEN total > 500 THEN 'xl' WHEN total > 100 THEN 'l' WHEN total > 20 THEN 'm' ELSE 's' END AS size FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, CASE status WHEN 'shipped' THEN 1 WHEN 'delivered' THEN 2 ELSE 0 END AS stage FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, CASE WHEN discount IS NULL THEN 0 ELSE discount END AS discount FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, COALESCE(discount, 0) AS discount FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, NVL(discount, 0) AS discount FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, IFNULL(discount, 0) AS discount FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, ZEROIFNULL(discount) AS discount FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, NULLIF(discount, 0) AS discount FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, NVL2(shipped_at, 'shipped', 'pending') AS state FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, COALESCE(shipped_at, ordered_at) AS last_event_at FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, GREATEST(total, discount) AS g, LEAST(total, discount) AS l FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, DECODE(status, 'shipped', 1, 'delivered', 2, 0) AS stage FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, IFF(shipped_at IS NULL, NULL, DATEDIFF(day, ordered_at, shipped_at)) AS days FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT customer_id, IFF(is_active, 'active', 'inactive') AS state FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT customer_id, CASE WHEN country IN ('DE', 'FR', 'IT') THEN 'EU' WHEN country = 'US' THEN 'NA' ELSE 'Other' END AS region FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, total > 100 AS is_large FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, EQUAL_NULL(discount, NULL) AS no_discount FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, discount IS DISTINCT FROM 0 AS has_discount FROM orders''' +expect = "translated" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, IFF(total > 100, total * 0.9, total) AS charged FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, CASE WHEN total >= 100 AND channel = 'web' THEN 'promo' END AS promo FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT UPPER(email) AS e FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT LOWER(email) AS e FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT TRIM(first_name) AS f FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT LTRIM(first_name) AS f, RTRIM(last_name) AS l FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT LENGTH(email) AS n FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT LEN(email) AS n FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT SUBSTR(email, 1, 5) AS prefix FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT SUBSTRING(email, 1, 5) AS prefix FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT LEFT(sku, 3) AS family, RIGHT(sku, 4) AS suffix FROM products''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT SPLIT_PART(email, '@', 2) AS domain FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT SPLIT_PART(email, '@', 1) AS local_part FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT POSITION('@' IN email) AS at_pos FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT CHARINDEX('@', email) AS at_pos FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT REPLACE(sku, '-', '') AS clean_sku FROM products''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT REGEXP_REPLACE(sku, '[^A-Z0-9]', '') AS clean_sku FROM products''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT REGEXP_SUBSTR(email, '@(.*)$', 1, 1, 'e') AS domain FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT REGEXP_LIKE(email, '.*@example\\.com') AS is_example FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT INITCAP(first_name) AS f FROM customers''' +expect = "refused SQ0008 fn:INITCAP at 7..26" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT CONCAT_WS(' ', first_name, last_name) AS full_name FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT LPAD(CAST(order_id AS VARCHAR), 8, '0') AS padded FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT order_id::VARCHAR AS id_text FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT TO_VARCHAR(order_id) AS id_text FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT TO_VARCHAR(total, '999,999.00') AS formatted FROM orders''' +expect = "refused SQ0003 fn:TO_VARCHAR at 7..38" +expect_repository = "refused SQ0003 fn:TO_VARCHAR at 7..38" + +[[query]] +category = "strings" +sql = '''SELECT TO_NUMBER('123.45', 10, 2) AS n''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT TRY_TO_NUMBER('abc') AS n''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT TRY_CAST('abc' AS INTEGER) AS n''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT STARTSWITH(email, 'admin') AS is_admin FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT ENDSWITH(email, '.com') AS dot_com FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT CONTAINS(email, 'test') AS is_test FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT REVERSE(sku) AS r FROM products''' +expect = "refused SQ0002 fn:REVERSE at 7..19" +expect_repository = "refused SQ0002 fn:REVERSE at 7..19" + +[[query]] +category = "strings" +sql = '''SELECT REPEAT('-', 10) AS line''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT MD5(email) AS hashed FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT SHA2(email, 256) AS hashed FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT HASH(email) AS h FROM customers''' +expect = "refused SQ0008 fn:HASH at 7..18" +expect_repository = "refused SQ0008 fn:HASH at 7..18" + +[[query]] +category = "strings" +sql = '''SELECT SPLIT(email, '@') AS parts FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT STRTOK(email, '@', 1) AS local_part FROM customers''' +expect = "refused SQ0002 fn:STRTOK at 7..28" +expect_repository = "refused SQ0002 fn:STRTOK at 7..28" + +[[query]] +category = "strings" +sql = '''SELECT ASCII(first_name) AS code FROM customers''' +expect = "refused SQ0002 fn:ASCII at 7..24" +expect_repository = "refused SQ0002 fn:ASCII at 7..24" + +[[query]] +category = "strings" +sql = '''SELECT UUID_STRING() AS id''' +expect = "refused SQ0002 fn:UUID_STRING at 7..20" +expect_repository = "refused SQ0002 fn:UUID_STRING at 7..20" + +[[query]] +category = "strings" +sql = '''SELECT email FROM customers WHERE LOWER(email) = 'a@example.com'''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT email FROM customers WHERE TRIM(LOWER(email)) LIKE '%example%'''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT COLLATE(email, 'en-ci') AS e FROM customers''' +expect = "refused SQ0002 fn:COLLATE at 7..30" +expect_repository = "refused SQ0002 fn:COLLATE at 7..30" +snowflake = "compiles" + +[[query]] +category = "strings" +sql = '''SELECT EDITDISTANCE(first_name, last_name) AS d FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT ROUND(total) AS r FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT ROUND(total, 1) AS r FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT FLOOR(total) AS f, CEIL(total) AS c FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT TRUNC(total) AS t FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT TRUNCATE(total, 1) AS t FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT MOD(order_id, 10) AS bucket FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT order_id % 10 AS bucket FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT POWER(total, 2) AS sq FROM orders''' +expect = "refused SQ0003 fn:POWER at 7..22" +expect_repository = "refused SQ0003 fn:POWER at 7..22" + +[[query]] +category = "numeric" +sql = '''SELECT SQRT(total) AS root FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT LN(total) AS l FROM orders WHERE total > 0''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT LOG(10, total) AS l FROM orders WHERE total > 0''' +expect = "refused SQ0002 fn:LOG at 7..21" +expect_repository = "refused SQ0002 fn:LOG at 7..21" + +[[query]] +category = "numeric" +sql = '''SELECT EXP(1) AS e''' +expect = "refused SQ0008 fn:EXP at 7..13" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT SIGN(total - 100) AS s FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT total::FLOAT AS f FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT total::NUMBER(10,0) AS n FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT CAST(total AS DECIMAL(10, 1)) AS n FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT CAST(total AS INT) AS n FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT weight_kg * 1000 AS grams FROM products''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT ROUND(weight_kg, 2) AS w FROM products''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT price * 1.0 / 3 AS third FROM products''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT quantity * unit_price AS line_total FROM order_items''' +expect = "refused SQ0008 node:mul at 7..28" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT SUM(quantity) * 1.0 / COUNT(DISTINCT order_id) AS units_per_order FROM order_items''' +expect = "refused SQ0008 fn:SUM at 7..20" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT UNIFORM(1, 10, RANDOM()) AS r''' +expect = "refused SQ0002 fn:UNIFORM at 7..31" +expect_repository = "refused SQ0002 fn:UNIFORM at 7..31" + +[[query]] +category = "numeric" +sql = '''SELECT RANDOM() AS r''' +expect = "refused SQ0002 fn:RANDOM at 7..15" +expect_repository = "refused SQ0002 fn:RANDOM at 7..15" + +[[query]] +category = "numeric" +sql = '''SELECT order_id FROM orders WHERE total::INT = 100''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT BITAND(order_id, 1) AS odd FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT WIDTH_BUCKET(total, 0, 1000, 10) AS bucket FROM orders''' +expect = "refused SQ0002 fn:WIDTH_BUCKET at 7..39" +expect_repository = "refused SQ0002 fn:WIDTH_BUCKET at 7..39" + +[[query]] +category = "semi_structured" +sql = '''SELECT payload:page FROM events''' +expect = "refused SQ0008 node:column at 25..31" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..14" + +[[query]] +category = "semi_structured" +sql = '''SELECT payload:page AS page FROM events''' +expect = "refused SQ0008 node:column at 33..39" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT payload:page::STRING AS page FROM events''' +expect = "refused SQ0008 node:column at 41..47" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT payload:page::VARCHAR AS page FROM events''' +expect = "refused SQ0008 node:column at 42..48" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT payload:device.os::STRING AS os FROM events''' +expect = "refused SQ0008 node:column at 44..50" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT payload:items[0].sku::STRING AS first_sku FROM events''' +expect = "refused SQ0008 node:column at 54..60" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT payload['page']::STRING AS page FROM events''' +expect = "refused SQ0008 node:column at 44..50" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT payload:"page"::STRING AS page FROM events''' +expect = "refused SQ0008 node:column at 43..49" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT payload:amount::NUMBER(10,2) AS amount FROM events''' +expect = "refused SQ0008 node:column at 51..57" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT payload:amount::FLOAT AS amount FROM events''' +expect = "refused SQ0008 node:column at 44..50" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT event_id FROM events WHERE payload:page::STRING = '/checkout'''' +expect = "refused SQ0008 node:column at 21..27" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT payload:page::STRING AS page, COUNT(*) AS views FROM events WHERE event_type = 'page_view' GROUP BY 1 ORDER BY 2 DESC''' +expect = "refused SQ0008 node:column at 60..66" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT GET(payload, 'page') AS page FROM events''' +expect = "refused SQ0008 node:column at 41..47" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT GET_PATH(payload, 'device.os') AS os FROM events''' +expect = "refused SQ0008 node:column at 49..55" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT TRY_PARSE_JSON('{"a": 1}') AS j''' +expect = "refused SQ0008 fn:TRY_PARSE_JSON at 7..33" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT PARSE_JSON('{"a": 1}'):a::INT AS a''' +expect = "refused SQ0008 fn:PARSE_JSON at 7..29" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT OBJECT_CONSTRUCT('id', order_id, 'total', total) AS o FROM orders''' +expect = "refused SQ0008 fn:OBJECT_CONSTRUCT at 7..55" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT ARRAY_CONSTRUCT(1, 2, 3) AS arr''' +expect = "refused SQ0008 fn:ARRAY_CONSTRUCT at 7..31" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT ARRAY_SIZE(tags) AS n FROM tickets''' +expect = "refused SQ0008 node:column at 34..41" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT ARRAY_CONTAINS('urgent'::VARIANT, tags) AS urgent FROM tickets''' +expect = "refused SQ0008 node:column at 62..69" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "semi_structured" +sql = '''SELECT tags[0]::STRING AS first_tag FROM tickets''' +expect = "refused SQ0008 node:column at 41..48" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT ticket_id, f.value::STRING AS tag FROM tickets, LATERAL FLATTEN(input => tags) f''' +expect = "refused SQ0008 node:column at 46..53" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT ticket_id, f.value::STRING AS tag FROM tickets t, TABLE(FLATTEN(t.tags)) f''' +expect = "refused SQ0008 node:column at 46..55" +expect_repository = "refused SQ0002 fn:FLATTEN at 57..81" + +[[query]] +category = "semi_structured" +sql = '''SELECT e.event_id, i.value:sku::STRING AS sku, i.value:qty::INT AS qty FROM events e, LATERAL FLATTEN(input => e.payload:items) i''' +expect = "refused SQ0008 node:column at 76..84" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT e.event_id, i.index, i.value FROM events e, LATERAL FLATTEN(input => e.payload:items) i''' +expect = "refused SQ0008 node:column at 41..49" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT event_id, OBJECT_KEYS(payload) AS keys FROM events''' +expect = "refused SQ0008 node:column at 51..57" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT TYPEOF(payload) AS t FROM events''' +expect = "refused SQ0008 node:column at 33..39" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT IS_NULL_VALUE(payload:page) AS null_page FROM events''' +expect = "refused SQ0008 node:column at 53..59" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT payload:page IS NULL AS missing FROM events''' +expect = "refused SQ0008 node:column at 44..50" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT event_id FROM events WHERE payload:amount::NUMBER > 100''' +expect = "refused SQ0008 node:column at 21..27" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT TO_JSON(payload) AS txt FROM events''' +expect = "refused SQ0008 node:column at 36..42" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT payload FROM events LIMIT 10''' +expect = "refused SQ0008 node:column at 20..26" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT ARRAY_TO_STRING(tags, ',') AS tag_list FROM tickets''' +expect = "refused SQ0008 node:column at 51..58" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT customer_id, ARRAY_AGG(DISTINCT event_type) AS types FROM events GROUP BY customer_id''' +expect = "refused SQ0008 fn:ARRAY_AGG at 20..50" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT customer_id, OBJECT_AGG(event_type, payload) AS by_type FROM events GROUP BY customer_id''' +expect = "refused SQ0008 node:column at 68..74" +expect_repository = "translated" + +[[query]] +category = "dbt_models" +sql = '''with source as ( + select * from orders +), +renamed as ( + select + order_id, + customer_id, + status as order_status, + total as order_total, + ordered_at + from source +) +select * from renamed''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_models" +sql = '''with orders as ( + select * from orders +), +payments as ( + select order_id, sum(amount) as amount from payments group by 1 +), +final as ( + select + orders.order_id, + orders.customer_id, + orders.ordered_at, + coalesce(payments.amount, 0) as amount + from orders + left join payments on orders.order_id = payments.order_id +) +select * from final''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_models" +sql = '''with customer_orders as ( + select + customer_id, + min(ordered_at) as first_order_at, + max(ordered_at) as most_recent_order_at, + count(order_id) as number_of_orders, + sum(total) as lifetime_value + from orders + group by 1 +) +select + customers.customer_id, + customers.first_name, + customers.last_name, + customer_orders.first_order_at, + customer_orders.most_recent_order_at, + coalesce(customer_orders.number_of_orders, 0) as number_of_orders, + coalesce(customer_orders.lifetime_value, 0) as lifetime_value +from customers +left join customer_orders using (customer_id)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_models" +sql = '''select + date_trunc('day', ordered_at) as order_date, + channel, + count(*) as orders, + sum(total) as revenue, + sum(total) / nullif(count(*), 0) as average_order_value +from orders +where status != 'cancelled' +group by 1, 2''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_models" +sql = '''with events_ranked as ( + select + *, + row_number() over (partition by event_id order by occurred_at desc) as rn + from events +) +select * exclude (rn) from events_ranked where rn = 1''' +expect = "refused SQ0008 node:column at 137..143" +expect_repository = "translated" + +[[query]] +category = "dbt_models" +sql = '''select + order_id, + customer_id, + case + when status in ('returned', 'refunded') then 'returned' + when shipped_at is not null then 'fulfilled' + else 'open' + end as fulfillment_state, + datediff('day', ordered_at, coalesce(shipped_at, current_timestamp())) as age_days +from orders''' +expect = "refused SQ0003 fn:DATEDIFF at 218..288" +expect_repository = "refused SQ0003 fn:DATEDIFF at 218..288" + +[[query]] +category = "dbt_models" +sql = '''with daily as ( + select ordered_at::date as day, sum(total) as revenue + from orders + group by 1 +) +select + day, + revenue, + avg(revenue) over (order by day rows between 6 preceding and current row) as revenue_7d_avg +from daily''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_models" +sql = '''select + p.product_id, + p.name, + p.category, + sum(i.quantity) as units_sold, + sum(i.quantity * i.unit_price) as gross_revenue, + count(distinct i.order_id) as orders +from products p +left join order_items i on i.product_id = p.product_id +group by 1, 2, 3''' +expect = "refused SQ0008 fn:SUM at 57..72" +expect_repository = "translated" + +[[query]] +category = "dbt_models" +sql = '''with ticket_durations as ( + select + ticket_id, + priority, + datediff('minute', opened_at, closed_at) as minutes_open + from tickets + where closed_at is not null +) +select priority, avg(minutes_open) as avg_minutes, max(minutes_open) as max_minutes +from ticket_durations +group by priority''' +expect = "refused SQ0008 node:column at 149..156" +expect_repository = "translated" + +[[query]] +category = "dbt_models" +sql = '''select + customer_id, + count_if(event_type = 'page_view') as page_views, + count_if(event_type = 'add_to_cart') as add_to_carts, + count_if(event_type = 'purchase') as purchases +from events +group by customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_models" +sql = '''with monthly as ( + select customer_id, date_trunc('month', ordered_at) as month, sum(total) as revenue + from orders + group by 1, 2 +) +select + customer_id, + month, + revenue, + lag(revenue) over (partition by customer_id order by month) as previous_revenue, + revenue - lag(revenue) over (partition by customer_id order by month) as change +from monthly''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_models" +sql = '''select + {{ dbt_utils.generate_surrogate_key(['order_id', 'line_number']) }} as order_item_key, + order_id +from {{ ref('stg_order_items') }}''' +expect = "parse SQ0001 at 76..77" +expect_repository = "parse SQ0001 at 76..77" + +[[query]] +category = "dbt_models" +sql = '''select + md5(cast(order_id as varchar) || '-' || cast(line_number as varchar)) as order_item_key, + order_id, + line_number +from order_items''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_models" +sql = '''select * +from orders +where ordered_at > (select coalesce(max(ordered_at), '1900-01-01') from orders)''' +expect = "refused SQ0003 fn:COALESCE at 48..87" +expect_repository = "refused SQ0003 fn:COALESCE at 48..87" + +[[query]] +category = "dbt_models" +sql = '''with spine as ( + select dateadd(day, seq4(), '2024-01-01'::date) as day + from table(generator(rowcount => 31)) +) +select spine.day, count(o.order_id) as orders +from spine +left join orders o on o.ordered_at::date = spine.day +group by 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dbt_models" +sql = '''select + customer_id, + email, + country, + signup_date, + is_active, + created_at +from customers +where email is not null + and country is not null''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "set_operations" +sql = '''SELECT customer_id FROM orders UNION SELECT customer_id FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "set_operations" +sql = '''SELECT customer_id FROM orders UNION ALL SELECT customer_id FROM tickets''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "set_operations" +sql = '''SELECT customer_id FROM customers EXCEPT SELECT customer_id FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "set_operations" +sql = '''SELECT customer_id FROM customers MINUS SELECT customer_id FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "set_operations" +sql = '''SELECT customer_id FROM customers INTERSECT SELECT customer_id FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "set_operations" +sql = '''SELECT 'orders' AS source, COUNT(*) AS n FROM orders UNION ALL SELECT 'customers', COUNT(*) FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "set_operations" +sql = '''SELECT order_id, total FROM orders WHERE total > 100 UNION ALL SELECT order_id, total FROM orders WHERE total < 10 ORDER BY total''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "set_operations" +sql = '''SELECT customer_id, email FROM customers UNION ALL BY NAME SELECT email, customer_id FROM customers''' +expect = "translated" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "misc" +sql = '''SELECT order_id FROM orders WHERE order_id = 1;''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "misc" +sql = '''SELECT 1; SELECT 2''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "misc" +sql = '''SELECT order_id -- the id +FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "misc" +sql = '''/* comment */ SELECT order_id FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "misc" +sql = '''SELECT COUNT(*) AS n FROM orders WHERE status ILIKE ANY ('ship%', 'deliv%')''' +expect = "refused SQ0008 node:i_like at 39..75" +expect_repository = "translated" + +[[query]] +category = "misc" +sql = '''SELECT order_id FROM orders WHERE status LIKE ANY ('ship%', 'deliv%')''' +expect = "refused SQ0003 node:like at 34..69" +expect_repository = "refused SQ0003 node:like at 34..69" + +[[query]] +category = "misc" +sql = '''SELECT order_id FROM orders ORDER BY RANDOM() LIMIT 1''' +expect = "refused SQ0002 fn:RANDOM at 37..45" +expect_repository = "refused SQ0002 fn:RANDOM at 37..45" + +[[query]] +category = "misc" +sql = '''SELECT order_id FROM orders WHERE (customer_id, status) IN (SELECT customer_id, 'shipped' FROM customers)''' +expect = "refused SQ0002 node:tuple at 35..54" +expect_repository = "refused SQ0002 node:tuple at 35..54" +snowflake = "compiles" + +[[query]] +category = "misc" +sql = '''SELECT o.order_id FROM orders o WHERE o.total > ALL (SELECT amount FROM payments)''' +expect = "refused SQ0002 node:all at 38..80" +expect_repository = "refused SQ0002 node:all at 38..80" + +[[query]] +category = "misc" +sql = '''SELECT IDENTIFIER('orders') AS x''' +expect = "refused SQ0002 fn:IDENTIFIER at 7..27" +expect_repository = "refused SQ0002 fn:IDENTIFIER at 7..27" + +[[query]] +category = "misc" +sql = '''SELECT * FROM IDENTIFIER('orders')''' +expect = "refused SQ0002 node:table_function at 14..34" +expect_repository = "refused SQ0002 node:table_function at 14..34" + +[[query]] +category = "misc" +sql = '''SELECT CURRENT_USER() AS u''' +expect = "refused SQ0002 fn:CURRENT_USER at 7..21" +expect_repository = "refused SQ0002 fn:CURRENT_USER at 7..21" + +[[query]] +category = "misc" +sql = '''SELECT CURRENT_WAREHOUSE() AS w''' +expect = "refused SQ0002 fn:CURRENT_WAREHOUSE at 7..26" +expect_repository = "refused SQ0002 fn:CURRENT_WAREHOUSE at 7..26" + +[[query]] +category = "misc" +sql = '''SELECT $1 FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 0..21" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 0..21" + +[[query]] +category = "misc" +sql = '''SELECT order_id FROM orders AT(OFFSET => -60)''' +expect = "refused SQ0002 node:table at 21..44" +expect_repository = "refused SQ0002 node:table at 21..44" + +[[query]] +category = "misc" +sql = '''SELECT order_id FROM orders WHERE customer_id = :customer_id''' +expect = "refused SQ0002 node:parameter at 34..60" +expect_repository = "refused SQ0002 node:parameter at 34..60" + +[[query]] +category = "misc" +sql = '''SELECT order_id FROM orders WHERE customer_id = ?''' +expect = "refused SQ0002 node:placeholder at 34..49" +expect_repository = "refused SQ0002 node:placeholder at 34..49" + +[[query]] +category = "misc" +sql = '''SELECT SEQ4() AS n FROM TABLE(GENERATOR(ROWCOUNT => 5))''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "misc" +sql = '''SELECT order_id, total FROM orders PIVOT (SUM(total) FOR status IN ('shipped', 'pending')) AS p''' +expect = "refused SQ0003 node:pivot at 28..95" +expect_repository = "refused SQ0003 node:pivot at 28..95" +snowflake = "rejects 904" + +[[query]] +category = "misc" +sql = '''SELECT * FROM (SELECT channel, status, total FROM orders) PIVOT (SUM(total) FOR status IN ('shipped', 'pending'))''' +expect = "refused SQ0003 node:pivot at 22..86" +expect_repository = "refused SQ0003 node:pivot at 22..86" + +[[query]] +category = "misc" +sql = '''SELECT order_id, HASH_AGG(*) AS h FROM orders GROUP BY order_id''' +expect = "refused SQ0002 fn:HASH_AGG at 17..28" +expect_repository = "refused SQ0002 fn:HASH_AGG at 17..28" +snowflake = "compiles" + +[[query]] +category = "misc" +sql = '''SELECT CURRENT_ACCOUNT() AS a''' +expect = "refused SQ0002 fn:CURRENT_ACCOUNT at 7..24" +expect_repository = "refused SQ0002 fn:CURRENT_ACCOUNT at 7..24" + +[[query]] +category = "ddl_dml" +sql = '''CREATE TABLE big_orders AS SELECT * FROM orders WHERE total > 1000''' +expect = "refused SQ0002 node:create_table at 13..66" +expect_repository = "refused SQ0002 node:create_table at 13..66" + +[[query]] +category = "ddl_dml" +sql = '''CREATE OR REPLACE TABLE big_orders AS SELECT order_id, total FROM orders WHERE total > 1000''' +expect = "refused SQ0002 node:create_table at 24..91" +expect_repository = "refused SQ0002 node:create_table at 24..91" + +[[query]] +category = "ddl_dml" +sql = '''CREATE VIEW v_orders AS SELECT order_id, total FROM orders''' +expect = "refused SQ0002 node:create_view at 12..58" +expect_repository = "refused SQ0002 node:create_view at 12..58" + +[[query]] +category = "ddl_dml" +sql = '''CREATE TEMPORARY TABLE t AS SELECT 1 AS x''' +expect = "refused SQ0002 node:create_table at 23..41" +expect_repository = "refused SQ0002 node:create_table at 23..41" + +[[query]] +category = "ddl_dml" +sql = '''INSERT INTO orders (order_id, customer_id, status, total) VALUES (1, 1, 'new', 10.00)''' +expect = "refused SQ0002 node:insert at 12..56" +expect_repository = "refused SQ0002 node:insert at 12..56" + +[[query]] +category = "ddl_dml" +sql = '''INSERT INTO orders SELECT * FROM orders WHERE order_id = 1''' +expect = "refused SQ0002 node:insert at 12..58" +expect_repository = "refused SQ0002 node:insert at 12..58" + +[[query]] +category = "ddl_dml" +sql = '''UPDATE orders SET status = 'cancelled' WHERE order_id = 1''' +expect = "refused SQ0002 node:update at 7..57" +expect_repository = "refused SQ0002 node:update at 7..57" + +[[query]] +category = "ddl_dml" +sql = '''DELETE FROM orders WHERE status = 'cancelled'''' +expect = "refused SQ0002 node:delete at 12..45" +expect_repository = "refused SQ0002 node:delete at 12..45" + +[[query]] +category = "ddl_dml" +sql = '''MERGE INTO orders t USING orders s ON t.order_id = s.order_id WHEN MATCHED THEN UPDATE SET t.status = s.status WHEN NOT MATCHED THEN INSERT (order_id, status) VALUES (s.order_id, s.status)''' +expect = "refused SQ0002 node:merge at 11..187" +expect_repository = "refused SQ0002 node:merge at 11..187" + +[[query]] +category = "ddl_dml" +sql = '''TRUNCATE TABLE orders''' +expect = "refused SQ0002 node:truncate at 15..21" +expect_repository = "refused SQ0002 node:truncate at 15..21" + +[[query]] +category = "ddl_dml" +sql = '''DROP TABLE IF EXISTS big_orders''' +expect = "refused SQ0002 node:drop_table at 21..31" +expect_repository = "refused SQ0002 node:drop_table at 21..31" + +[[query]] +category = "ddl_dml" +sql = '''CREATE TABLE t (id INT, name VARCHAR)''' +expect = "refused SQ0002 node:create_table at 13..28" +expect_repository = "refused SQ0002 node:create_table at 13..28" + +[[query]] +category = "ddl_dml" +sql = '''ALTER TABLE orders ADD COLUMN note VARCHAR''' +expect = "refused SQ0002 node:alter_table at 12..34" +expect_repository = "refused SQ0002 node:alter_table at 12..34" + +[[query]] +category = "ddl_dml" +sql = '''SHOW TABLES''' +expect = "refused SQ0002 node:show at 0..11" +expect_repository = "refused SQ0002 node:show at 0..11" + +[[query]] +category = "ddl_dml" +sql = '''DESCRIBE TABLE orders''' +expect = "refused SQ0002 node:describe at 15..21" +expect_repository = "refused SQ0002 node:describe at 15..21" + +[[query]] +category = "ddl_dml" +sql = '''USE WAREHOUSE compute_wh''' +expect = "refused SQ0002 node:use at 14..24" +expect_repository = "refused SQ0002 node:use at 14..24" + +[[query]] +category = "invalid_syntax" +sql = '''SELEC 1''' +expect = "parse SQ0001 at 0..5" +expect_repository = "parse SQ0001 at 0..5" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT * FORM orders''' +expect = "parse SQ0001 at 9..13" +expect_repository = "parse SQ0001 at 9..13" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT * FROM''' +expect = "parse SQ0001 at 9..13" +expect_repository = "parse SQ0001 at 9..13" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id total FROM orders WHERE''' +expect = "parse SQ0001 at 34..39" +expect_repository = "parse SQ0001 at 34..39" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id, FROM orders''' +expect = "translated" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id,, total FROM orders''' +expect = "parse SQ0001 at 16..17" +expect_repository = "parse SQ0001 at 16..17" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders WHERE total >''' +expect = "parse SQ0001 at 40..41" +expect_repository = "parse SQ0001 at 40..41" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders WHERE status = 'shipped''' +expect = "parse SQ0001 at 43..51" +expect_repository = "parse SQ0001 at 43..51" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders WHERE (total > 10''' +expect = "parse SQ0001 at 43..45" +expect_repository = "parse SQ0001 at 43..45" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders WHERE total > 10)''' +expect = "parse SQ0001 at 44..45" +expect_repository = "parse SQ0001 at 44..45" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders GROUP status''' +expect = "parse SQ0001 at 28..33" +expect_repository = "parse SQ0001 at 28..33" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders ORDER total''' +expect = "parse SQ0001 at 28..33" +expect_repository = "parse SQ0001 at 28..33" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders LIMIT''' +expect = "refused SQ0003 node:limit at 0..33" +expect_repository = "refused SQ0003 node:limit at 0..33" +snowflake = "compiles" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT COUNT(* FROM orders''' +expect = "parse SQ0001 at 15..19" +expect_repository = "parse SQ0001 at 15..19" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT SUM(total)) FROM orders''' +expect = "parse SQ0001 at 17..18" +expect_repository = "parse SQ0001 at 17..18" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders o JOIN customers c''' +expect = "refused SQ0002 join:inner at 30..46" +expect_repository = "refused SQ0002 join:inner at 30..46" +snowflake = "compiles" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders o JOIN customers c ON''' +expect = "parse SQ0001 at 47..49" +expect_repository = "parse SQ0001 at 47..49" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders WHERE status == 'shipped'''' +expect = "translated" +expect_repository = "translated" +snowflake = "rejects 2139" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders WHERE status = "shipped"''' +expect = "refused SQ0004 statement at 43..52" +expect_repository = "refused SQ0004 statement at 43..52" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT CASE WHEN total > 1 THEN 'a' FROM orders''' +expect = "parse SQ0001 at 36..40" +expect_repository = "parse SQ0001 at 36..40" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT CASE total > 1 THEN 'a' END FROM orders''' +expect = "parse SQ0001 at 22..26" +expect_repository = "parse SQ0001 at 22..26" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders WHERE total BETWEEN 1''' +expect = "parse SQ0001 at 48..49" +expect_repository = "parse SQ0001 at 48..49" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders WHERE status IN 'shipped'''' +expect = "refused SQ0002 node:in at 34..53" +expect_repository = "refused SQ0002 node:in at 34..53" +snowflake = "rejects 1003" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders WHERE status IN ()''' +expect = "parse SQ0001 at 45..46" +expect_repository = "parse SQ0001 at 45..46" + +[[query]] +category = "invalid_syntax" +sql = '''WITH t AS SELECT 1 SELECT * FROM t''' +expect = "parse SQ0001 at 10..16" +expect_repository = "parse SQ0001 at 10..16" + +[[query]] +category = "invalid_syntax" +sql = '''WITH t AS (SELECT 1) SELECT * FROM''' +expect = "parse SQ0001 at 30..34" +expect_repository = "parse SQ0001 at 30..34" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders UNION''' +expect = "parse SQ0001 at 28..33" +expect_repository = "parse SQ0001 at 28..33" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT * FROM orders WHERE''' +expect = "parse SQ0001 at 21..26" +expect_repository = "parse SQ0001 at 21..26" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders HAVING''' +expect = "parse SQ0001 at 28..34" +expect_repository = "parse SQ0001 at 28..34" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT DISTINCT FROM orders''' +expect = "parse SQ0001 at 16..20" +expect_repository = "parse SQ0001 at 16..20" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT 1 +''' +expect = "parse SQ0001 at 9..10" +expect_repository = "parse SQ0001 at 9..10" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT 'unterminated''' +expect = "parse SQ0001 at 7..20" +expect_repository = "parse SQ0001 at 7..20" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders;;''' +expect = "translated" +expect_repository = "translated" +snowflake = "compiles" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id AS FROM orders''' +expect = "parse SQ0001 at 24..30" +expect_repository = "parse SQ0001 at 24..30" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders WHERE total >> 10''' +expect = "refused SQ0002 node:bitwise_right_shift at 34..45" +expect_repository = "refused SQ0002 node:bitwise_right_shift at 34..45" +snowflake = "rejects 1003" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders o LEFT orders c ON 1 = 1''' +expect = "parse SQ0001 at 35..41" +expect_repository = "parse SQ0001 at 35..41" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT row_number() OVER (PARTITION customer_id) FROM orders''' +expect = "parse SQ0001 at 26..35" +expect_repository = "parse SQ0001 at 26..35" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders QUALIFY''' +expect = "parse SQ0001 at 28..35" +expect_repository = "parse SQ0001 at 28..35" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT IFF(total > 10, 'a') AS x FROM orders''' +expect = "refused SQ0002 fn:IFF at 7..27" +expect_repository = "refused SQ0002 fn:IFF at 7..27" + +[[query]] +category = "invalid_syntax" +sql = '''SELECT order_id FROM orders WHERE order_id IN (1, 2,)''' +expect = "parse SQ0001 at 52..53" +expect_repository = "parse SQ0001 at 52..53" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT discount_code FROM orders''' +expect = "refused SQ0004 statement at 7..20" +expect_repository = "refused SQ0004 statement at 7..20" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT order_id FROM order''' +expect = "refused SQ0004 statement at 21..26" +expect_repository = "refused SQ0004 statement at 21..26" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT order_id FROM orderz''' +expect = "refused SQ0004 statement at 21..27" +expect_repository = "refused SQ0004 statement at 21..27" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT o.order_id FROM orders''' +expect = "refused SQ0004 statement at 7..17" +expect_repository = "refused SQ0004 statement at 7..17" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT x.order_id FROM orders o''' +expect = "refused SQ0004 statement at 7..17" +expect_repository = "refused SQ0004 statement at 7..17" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT custmer_id FROM customers''' +expect = "refused SQ0004 statement at 7..17" +expect_repository = "refused SQ0004 statement at 7..17" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT order_id, status FROM orders GROUP BY status''' +expect = "refused SQ0002 node:statement at 0..51" +expect_repository = "refused SQ0002 node:statement at 0..51" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT status, total FROM orders GROUP BY status''' +expect = "refused SQ0002 node:statement at 0..48" +expect_repository = "refused SQ0002 node:statement at 0..48" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT customer_id FROM orders o JOIN customers c ON o.customer_id = c.customer_id''' +expect = "refused SQ0004 statement at 7..18" +expect_repository = "refused SQ0004 statement at 7..18" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT order_id FROM orders WHERE SUM(total) > 10''' +expect = "refused SQ0003 fn:SUM at 34..44" +expect_repository = "refused SQ0003 fn:SUM at 34..44" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT COUNT(*) AS n FROM orders WHERE n > 1''' +expect = "refused SQ0002 node:statement at 0..44" +expect_repository = "refused SQ0002 node:statement at 0..44" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT SUM(SUM(total)) AS s FROM orders''' +expect = "refused SQ0003 fn:SUM at 11..21" +expect_repository = "refused SQ0003 fn:SUM at 11..21" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT order_id FROM orders ORDER BY 5''' +expect = "refused SQ0004 statement at 0..38" +expect_repository = "refused SQ0004 statement at 0..38" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT order_id FROM orders GROUP BY 3''' +expect = "refused SQ0004 statement at 0..38" +expect_repository = "refused SQ0004 statement at 0..38" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT order_id FROM orders WHERE ROW_NUMBER() OVER (ORDER BY total) = 1''' +expect = "refused SQ0003 node:window_function at 34..68" +expect_repository = "refused SQ0003 node:window_function at 34..68" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT order_id, total + 'abc' AS x FROM orders''' +expect = "refused SQ0003 node:add at 17..30" +expect_repository = "refused SQ0003 node:add at 17..30" +snowflake = "compiles" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT DATEADD(day, 'x', ordered_at) AS x FROM orders''' +expect = "refused SQ0003 fn:DATEADD at 7..36" +expect_repository = "refused SQ0003 fn:DATEADD at 7..36" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT order_id FROM orders WHERE ordered_at > 5''' +expect = "refused SQ0003 node:gt at 34..48" +expect_repository = "refused SQ0003 node:gt at 34..48" +snowflake = "rejects 1038" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT LENGTH(order_id, 2) AS x FROM orders''' +expect = "refused SQ0002 fn:LENGTH at 7..26" +expect_repository = "refused SQ0002 fn:LENGTH at 7..26" +snowflake = "rejects 939" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT NOSUCHFUNCTION(order_id) AS x FROM orders''' +expect = "refused SQ0002 fn:NOSUCHFUNCTION at 7..31" +expect_repository = "refused SQ0002 fn:NOSUCHFUNCTION at 7..31" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT 1 QUALIFY TRUE''' +expect = "check SQ0203 at 9..16" +expect_repository = "check SQ0203 at 9..16" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT customer_id, SUM(total) AS revenue FROM orders GROUP BY customer_id QUALIFY revenue > 100''' +expect = "check SQ0203 at 75..96" +expect_repository = "check SQ0203 at 75..96" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT payload:page FROM orders''' +expect = "refused SQ0004 statement at 7..14" +expect_repository = "refused SQ0004 statement at 7..14" + +[[query]] +category = "invalid_semantics" +sql = '''SELECT order_id FROM orders o, orders o''' +expect = "refused SQ0004 statement at 0..39" +expect_repository = "refused SQ0004 statement at 0..39" +snowflake = "rejects 2027" + +# Unaliased output names over columns and expressions, recorded before #99. + +[[query]] +category = "literals" +sql = '''SELECT ROUND(total, 1) FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT COUNT(*) FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT SUM(total) FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT customer_id, COUNT(*) FROM orders GROUP BY 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT MAX(ordered_at) FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT COUNT(DISTINCT customer_id) FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT UPPER(email) FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT total * 2 FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT CURRENT_DATE()''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT total::VARCHAR FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..21" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..21" + +[[query]] +category = "literals" +sql = '''SELECT CAST(total AS INTEGER) FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT COALESCE(discount, 0) FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT IFF(total > 100, 'big', 'small') FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..39" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..39" + +[[query]] +category = "literals" +sql = '''SELECT DATE_TRUNC('month', ordered_at) FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..38" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..38" + +[[query]] +category = "literals" +sql = '''SELECT 1 + 1''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..12" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..12" + +[[query]] +category = "literals" +sql = '''SELECT 'a' || 'b'''' +expect = "refused SQ0009 syntax:unaliased_output_name at 7..17" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 7..17" + +[[query]] +category = "literals" +sql = '''SELECT NULL''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT TRUE''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT o.total FROM orders o''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "literals" +sql = '''SELECT order_id, total - discount FROM orders''' +expect = "refused SQ0009 syntax:unaliased_output_name at 17..33" +expect_repository = "refused SQ0009 syntax:unaliased_output_name at 17..33" + +# Round 4: analyst aggregates and statistics, numeric and string helpers, month arithmetic, array +# and object functions, NVL2/DECODE, NATURAL and FULL joins, and window idioms. + +[[query]] +category = "aggregates" +sql = '''SELECT channel, status, SUM(total) AS revenue FROM orders GROUP BY CUBE (channel, status)''' +expect = "refused SQ0002 fn:CUBE at 73..88" +expect_repository = "refused SQ0002 fn:CUBE at 73..88" + +[[query]] +category = "aggregates" +sql = '''SELECT customer_id, BOOLAND_AGG(total > 0) AS all_positive, BOOLOR_AGG(discount > 0) AS any_discount FROM orders GROUP BY customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT CORR(total, discount) AS c, COVAR_SAMP(total, discount) AS cv FROM orders''' +expect = "refused SQ0002 fn:CORR at 7..28" +expect_repository = "refused SQ0002 fn:CORR at 7..28" + +[[query]] +category = "aggregates" +sql = '''SELECT KURTOSIS(total) AS k, SKEW(total) AS s FROM orders''' +expect = "refused SQ0002 fn:KURTOSIS at 7..22" +expect_repository = "refused SQ0002 fn:KURTOSIS at 7..22" + +[[query]] +category = "aggregates" +sql = '''SELECT VARIANCE(total) AS v, STDDEV_SAMP(total) AS sd FROM orders''' +expect = "refused SQ0008 fn:VARIANCE at 7..22" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT channel, MEDIAN(total) AS median_total FROM orders GROUP BY channel''' +expect = "refused SQ0008 fn:MEDIAN at 16..29" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT channel, PERCENTILE_DISC(0.9) WITHIN GROUP (ORDER BY total) AS p90 FROM orders GROUP BY channel''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT channel, MODE(status) AS common_status FROM orders GROUP BY channel''' +expect = "refused SQ0008 fn:MODE at 16..28" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT COUNT_IF(status = 'shipped') AS shipped, COUNT_IF(status = 'returned') AS returned FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT customer_id, MIN_BY(order_id, ordered_at) AS first_order, MAX_BY(order_id, ordered_at) AS last_order FROM orders GROUP BY customer_id''' +expect = "refused SQ0008 fn:MIN_BY at 20..48" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT customer_id, ARRAY_UNIQUE_AGG(channel) AS channels FROM orders GROUP BY customer_id''' +expect = "refused SQ0002 fn:ARRAY_UNIQUE_AGG at 20..45" +expect_repository = "refused SQ0002 fn:ARRAY_UNIQUE_AGG at 20..45" + +[[query]] +category = "aggregates" +sql = '''SELECT customer_id, SUM(total) AS revenue FROM orders GROUP BY ALL''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "aggregates" +sql = '''SELECT status, COUNT(*) AS n FROM orders GROUP BY status HAVING COUNT(*) > 10 ORDER BY n DESC''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT order_id, NULLIFZERO(discount) AS discount FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT order_id, DIV0NULL(discount, total) AS discount_rate FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT order_id, ROUND(total, 0) AS whole, TRUNC(total, 1) AS tenth FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT order_id, CEIL(total / 10) * 10 AS bucket FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT order_id, MOD(order_id, 10) AS shard FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT product_id, ROUND(weight_kg * 2.20462, 2) AS weight_lb FROM products''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT order_id, ABS(total - discount) AS net, SIGN(discount) AS has_discount FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT order_id, TO_NUMBER('12.5', 10, 2) AS n FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT order_id, total::NUMBER(10,0) AS whole_total FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "numeric" +sql = '''SELECT order_id, TRY_TO_NUMBER(channel) AS channel_code FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT customer_id, TRANSLATE(email, '.@', '__') AS slug FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT customer_id, REGEXP_COUNT(email, '\\.') AS dots FROM customers''' +expect = "refused SQ0008 fn:REGEXP_COUNT at 20..46" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT customer_id, REGEXP_INSTR(email, '@') AS at_pos FROM customers''' +expect = "refused SQ0008 fn:REGEXP_INSTR at 20..44" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT customer_id, REGEXP_SUBSTR(email, '@(.*)$', 1, 1, 'e', 1) AS domain FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT customer_id, SOUNDEX(last_name) AS sx FROM customers''' +expect = "refused SQ0002 fn:SOUNDEX at 20..38" +expect_repository = "refused SQ0002 fn:SOUNDEX at 20..38" + +[[query]] +category = "strings" +sql = '''SELECT customer_id, LPAD(customer_id::VARCHAR, 8, '0') AS padded FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT customer_id, RTRIM(LTRIM(first_name)) AS first_name FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT customer_id, CONCAT_WS(' ', first_name, last_name) AS full_name FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT customer_id, SPLIT(email, '@')[1]::VARCHAR AS domain FROM customers''' +expect = "refused SQ0008 node:cast at 20..49" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT customer_id, SUBSTRING(email, 1, POSITION('@' IN email) - 1) AS local_part FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT customer_id FROM customers WHERE email LIKE ANY ('%@gmail.com', '%@yahoo.com')''' +expect = "refused SQ0003 node:like at 40..85" +expect_repository = "refused SQ0003 node:like at 40..85" + +[[query]] +category = "strings" +sql = '''SELECT customer_id FROM customers WHERE REGEXP_LIKE(email, '.*@example\\.(com|org)')''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT customer_id, MD5(LOWER(TRIM(email))) AS email_hash FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT customer_id, SHA2(email, 256) AS email_sha FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "strings" +sql = '''SELECT customer_id, UPPER(LEFT(country, 2)) AS cc FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id, YEAROFWEEK(ordered_at) AS iso_year, WEEKOFYEAR(ordered_at) AS week FROM orders''' +expect = "refused SQ0002 fn:YEAROFWEEK at 17..39" +expect_repository = "refused SQ0002 fn:YEAROFWEEK at 17..39" + +[[query]] +category = "dates" +sql = '''SELECT order_id, DATE_FROM_PARTS(YEAR(ordered_at), MONTH(ordered_at), 1) AS month_start FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id, ADD_MONTHS(ordered_at::DATE, 1) AS next_month FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id, MONTHS_BETWEEN(shipped_at, ordered_at) AS months FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id, DATEDIFF('hour', ordered_at, shipped_at) AS hours_to_ship FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id, DATEDIFF('minute', ordered_at, shipped_at) AS minutes_to_ship FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT DATE_TRUNC('quarter', ordered_at) AS q, SUM(total) AS revenue FROM orders GROUP BY 1 ORDER BY 1''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id, TO_CHAR(ordered_at, 'YYYY-MM-DD HH24:MI') AS ts FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id, TO_DATE('2026-11-06') AS d FROM orders''' +expect = "refused SQ0008 fn:TO_DATE at 17..38" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id, TRY_TO_TIMESTAMP(channel) AS t FROM orders''' +expect = "refused SQ0008 fn:TRY_TO_TIMESTAMP at 17..42" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id, EXTRACT(dow FROM ordered_at) AS dow, EXTRACT(hour FROM ordered_at) AS hr FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id FROM orders WHERE ordered_at::DATE BETWEEN '2026-01-01' AND '2026-03-31'''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id FROM orders WHERE ordered_at >= DATEADD(month, -3, DATE_TRUNC('month', CURRENT_DATE()))''' +expect = "refused SQ0003 node:gte at 34..103" +expect_repository = "refused SQ0003 node:gte at 34..103" + +[[query]] +category = "dates" +sql = '''SELECT customer_id, DATEDIFF('day', signup_date, CURRENT_DATE()) AS tenure_days FROM customers''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "dates" +sql = '''SELECT order_id, TIME_SLICE(ordered_at, 15, 'MINUTE') AS slot FROM orders''' +expect = "refused SQ0002 fn:TIME_SLICE at 17..53" +expect_repository = "refused SQ0002 fn:TIME_SLICE at 17..53" + +[[query]] +category = "dates" +sql = '''SELECT order_id, LAST_DAY(ordered_at::DATE, 'week') AS week_end FROM orders''' +expect = "refused SQ0003 fn:LAST_DAY at 17..51" +expect_repository = "refused SQ0003 fn:LAST_DAY at 17..51" + +[[query]] +category = "semi_structured" +sql = '''SELECT ticket_id, ARRAY_SLICE(tags, 0, 2) AS first_tags FROM tickets''' +expect = "refused SQ0008 node:column at 61..68" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT ticket_id, ARRAY_DISTINCT(tags) AS tags FROM tickets''' +expect = "refused SQ0008 node:column at 52..59" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT ticket_id, ARRAY_APPEND(tags, 'triaged') AS tags FROM tickets''' +expect = "refused SQ0008 node:column at 61..68" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT ticket_id, ARRAY_CAT(tags, ARRAY_CONSTRUCT('x')) AS tags FROM tickets''' +expect = "refused SQ0008 node:column at 69..76" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT ticket_id FROM tickets WHERE ARRAYS_OVERLAP(tags, ARRAY_CONSTRUCT('urgent', 'vip'))''' +expect = "refused SQ0008 node:column at 22..29" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT event_id, OBJECT_INSERT(payload, 'seen', TRUE) AS payload FROM events''' +expect = "refused SQ0008 node:column at 70..76" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT event_id, OBJECT_DELETE(payload, 'debug') AS payload FROM events''' +expect = "refused SQ0008 node:column at 65..71" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT event_id, STRIP_NULL_VALUE(payload:coupon) AS coupon FROM events''' +expect = "refused SQ0008 node:column at 65..71" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT event_id, IS_NULL_VALUE(payload:coupon) AS coupon_is_json_null FROM events''' +expect = "refused SQ0008 node:column at 75..81" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT event_id, payload:amount::FLOAT AS amount FROM events WHERE IS_DECIMAL(payload:amount) OR IS_INTEGER(payload:amount)''' +expect = "refused SQ0008 node:column at 54..60" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT event_id, TO_JSON(payload) AS payload_text FROM events''' +expect = "refused SQ0008 node:column at 55..61" +expect_repository = "translated" + +[[query]] +category = "semi_structured" +sql = '''SELECT customer_id, ARRAY_AGG(DISTINCT event_type) WITHIN GROUP (ORDER BY event_type) AS types FROM events GROUP BY customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, NVL2(shipped_at, 'shipped', 'open') AS state FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, DECODE(channel, 'web', 1, 'store', 2, 0) AS channel_code FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id, CASE WHEN total >= 1000 THEN 'large' WHEN total >= 100 THEN 'medium' ELSE 'small' END AS size FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "conditionals" +sql = '''SELECT order_id FROM orders WHERE EQUAL_NULL(discount, 0)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT c.customer_id, COUNT(o.order_id) AS orders FROM customers c LEFT JOIN orders o USING (customer_id) GROUP BY c.customer_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT c.customer_id FROM customers c WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.customer_id)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, p.amount FROM orders o FULL OUTER JOIN payments p ON p.order_id = o.order_id''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "joins" +sql = '''SELECT o.order_id, i.product_id FROM orders o NATURAL JOIN order_items i''' +expect = "refused SQ0002 join:natural at 46..72" +expect_repository = "refused SQ0002 join:natural at 46..72" + +[[query]] +category = "set_operations" +sql = '''SELECT customer_id FROM orders MINUS SELECT customer_id FROM payments p JOIN orders o USING (order_id)''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "set_operations" +sql = '''SELECT email FROM customers UNION SELECT 'ops@example.com' AS email''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, SUM(total) OVER (PARTITION BY customer_id ORDER BY ordered_at ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) / NULLIF(SUM(total) OVER (PARTITION BY customer_id), 0) AS cumulative_share FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, NTILE(10) OVER (ORDER BY total DESC) AS decile FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, ROW_NUMBER() OVER (ORDER BY ordered_at) - ROW_NUMBER() OVER (PARTITION BY status ORDER BY ordered_at) AS island FROM orders''' +expect = "translated" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, LISTAGG(status, ',') WITHIN GROUP (ORDER BY ordered_at) OVER (PARTITION BY customer_id) AS history FROM orders''' +expect = "refused SQ0008 fn:LISTAGG at 17..104" +expect_repository = "translated" + +[[query]] +category = "windows" +sql = '''SELECT order_id, COUNT(*) OVER (PARTITION BY DATE_TRUNC('day', ordered_at)) AS orders_that_day FROM orders''' +expect = "translated" +expect_repository = "translated" diff --git a/corpora/everyday/schema.json b/corpora/everyday/schema.json new file mode 100644 index 000000000..ecaf57019 --- /dev/null +++ b/corpora/everyday/schema.json @@ -0,0 +1,196 @@ +{ + "CUSTOMERS": [ + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "FIRST_NAME", + "VARCHAR" + ], + [ + "LAST_NAME", + "VARCHAR" + ], + [ + "EMAIL", + "VARCHAR" + ], + [ + "COUNTRY", + "VARCHAR" + ], + [ + "SIGNUP_DATE", + "DATE" + ], + [ + "IS_ACTIVE", + "BOOLEAN" + ], + [ + "CREATED_AT", + "TIMESTAMP_NTZ" + ] + ], + "ORDERS": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "STATUS", + "VARCHAR" + ], + [ + "TOTAL", + "NUMBER(12,2)" + ], + [ + "DISCOUNT", + "NUMBER(12,2)" + ], + [ + "ORDERED_AT", + "TIMESTAMP_NTZ" + ], + [ + "SHIPPED_AT", + "TIMESTAMP_NTZ" + ], + [ + "CHANNEL", + "VARCHAR" + ] + ], + "ORDER_ITEMS": [ + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "LINE_NUMBER", + "NUMBER(38,0)" + ], + [ + "PRODUCT_ID", + "NUMBER(38,0)" + ], + [ + "QUANTITY", + "NUMBER(38,0)" + ], + [ + "UNIT_PRICE", + "NUMBER(10,2)" + ] + ], + "PRODUCTS": [ + [ + "PRODUCT_ID", + "NUMBER(38,0)" + ], + [ + "SKU", + "VARCHAR" + ], + [ + "NAME", + "VARCHAR" + ], + [ + "CATEGORY", + "VARCHAR" + ], + [ + "PRICE", + "NUMBER(10,2)" + ], + [ + "WEIGHT_KG", + "FLOAT" + ], + [ + "LAUNCHED_ON", + "DATE" + ] + ], + "PAYMENTS": [ + [ + "PAYMENT_ID", + "NUMBER(38,0)" + ], + [ + "ORDER_ID", + "NUMBER(38,0)" + ], + [ + "METHOD", + "VARCHAR" + ], + [ + "AMOUNT", + "NUMBER(12,2)" + ], + [ + "PAID_AT", + "TIMESTAMP_NTZ" + ] + ], + "EVENTS": [ + [ + "EVENT_ID", + "VARCHAR" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "EVENT_TYPE", + "VARCHAR" + ], + [ + "PAYLOAD", + "VARIANT" + ], + [ + "OCCURRED_AT", + "TIMESTAMP_NTZ" + ] + ], + "TICKETS": [ + [ + "TICKET_ID", + "NUMBER(38,0)" + ], + [ + "CUSTOMER_ID", + "NUMBER(38,0)" + ], + [ + "PRIORITY", + "VARCHAR" + ], + [ + "SUBJECT", + "VARCHAR" + ], + [ + "OPENED_AT", + "TIMESTAMP_NTZ" + ], + [ + "CLOSED_AT", + "TIMESTAMP_NTZ" + ], + [ + "TAGS", + "ARRAY" + ] + ] +} diff --git a/corpora/everyday/snowflake-receipts.json b/corpora/everyday/snowflake-receipts.json new file mode 100644 index 000000000..aa726009f --- /dev/null +++ b/corpora/everyday/snowflake-receipts.json @@ -0,0 +1,411 @@ +{ + "schema": "corpora/everyday/schema.json as empty CTEs (WITH AS (SELECT CAST(NULL AS ) AS , ... WHERE FALSE)) before each query", + "screen": "EXPLAIN USING TEXT per query; compiling queries then executed on the empty inputs", + "results": [ + { + "query": 1, + "sql": "SELECT order_id, FROM orders", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": null, + "name": "ORDER_ID", + "nullable": true, + "precision": 38, + "scale": 0, + "type_code": 0, + "type_name": "FIXED" + } + ] + }, + { + "query": 2, + "sql": "SELECT order_id FROM orders WHERE status == 'shipped'", + "compiles": false, + "errno": 2139, + "sqlstate": "02000", + "message": "SQL compilation error: Unknown function \"==\"." + }, + { + "query": 3, + "sql": "SELECT order_id FROM orders;;", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": null, + "name": "ORDER_ID", + "nullable": true, + "precision": 38, + "scale": 0, + "type_code": 0, + "type_name": "FIXED" + } + ] + }, + { + "query": 4, + "sql": "SELECT order_id FROM orders LIMIT", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": null, + "name": "ORDER_ID", + "nullable": true, + "precision": 38, + "scale": 0, + "type_code": 0, + "type_name": "FIXED" + } + ] + }, + { + "query": 5, + "sql": "SELECT order_id FROM orders o JOIN customers c", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": null, + "name": "ORDER_ID", + "nullable": true, + "precision": 38, + "scale": 0, + "type_code": 0, + "type_name": "FIXED" + } + ] + }, + { + "query": 6, + "sql": "SELECT order_id FROM orders WHERE status IN 'shipped'", + "compiles": false, + "errno": 1003, + "sqlstate": "42000", + "message": "SQL compilation error: syntax error line 1 at position 2,023 unexpected ''shipped''." + }, + { + "query": 7, + "sql": "SELECT order_id FROM orders WHERE total >> 10", + "compiles": false, + "errno": 1003, + "sqlstate": "42000", + "message": "SQL compilation error: syntax error line 1 at position 2,019 unexpected '>>'." + }, + { + "query": 8, + "sql": "SELECT * FROM orders TOP 5", + "compiles": false, + "errno": 1003, + "sqlstate": "42000", + "message": "SQL compilation error: syntax error line 1 at position 2,004 unexpected '5'." + }, + { + "query": 9, + "sql": "SELECT ARRAY_CONTAINS('urgent'::VARIANT, tags) AS urgent FROM tickets", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": null, + "name": "URGENT", + "nullable": true, + "precision": null, + "scale": null, + "type_code": 13, + "type_name": "BOOLEAN" + } + ] + }, + { + "query": 10, + "sql": "SELECT COLLATE(email, 'en-ci') AS e FROM customers", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": 134217728, + "name": "E", + "nullable": true, + "precision": null, + "scale": null, + "type_code": 2, + "type_name": "TEXT" + } + ] + }, + { + "query": 11, + "sql": "SELECT COUNT(*) FILTER (WHERE status = 'shipped') AS shipped FROM orders", + "compiles": false, + "errno": 1003, + "sqlstate": "42000", + "message": "SQL compilation error: syntax error line 1 at position 2,002 unexpected '('." + }, + { + "query": 12, + "sql": "SELECT DATE_PART('dow', ordered_at) AS dow FROM orders", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": null, + "name": "DOW", + "nullable": true, + "precision": 2, + "scale": 0, + "type_code": 0, + "type_name": "FIXED" + } + ] + }, + { + "query": 13, + "sql": "SELECT DATE_TRUNC(month, ordered_at) AS month FROM orders", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": null, + "name": "MONTH", + "nullable": true, + "precision": 0, + "scale": 9, + "type_code": 8, + "type_name": "TIMESTAMP_NTZ" + } + ] + }, + { + "query": 14, + "sql": "SELECT LENGTH(order_id, 2) AS x FROM orders", + "compiles": false, + "errno": 939, + "sqlstate": "22023", + "message": "SQL compilation error: error line 1 at position 1,986 too many arguments for function [LENGTH(ORDERS.ORDER_ID, 2)] expected 1, got 2" + }, + { + "query": 15, + "sql": "SELECT customer_id, email FROM customers UNION ALL BY NAME SELECT email, customer_id FROM customers", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": null, + "name": "CUSTOMER_ID", + "nullable": true, + "precision": 38, + "scale": 0, + "type_code": 0, + "type_name": "FIXED" + }, + { + "internal_size": 134217728, + "name": "EMAIL", + "nullable": true, + "precision": null, + "scale": null, + "type_code": 2, + "type_name": "TEXT" + } + ] + }, + { + "query": 16, + "sql": "SELECT o.order_id FROM orders o ASOF JOIN payments p MATCH_CONDITION (o.ordered_at >= p.paid_at) ON o.order_id = p.order_id", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": null, + "name": "ORDER_ID", + "nullable": true, + "precision": 38, + "scale": 0, + "type_code": 0, + "type_name": "FIXED" + } + ] + }, + { + "query": 17, + "sql": "SELECT order_id FROM orders FETCH FIRST 10 ROWS ONLY", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": null, + "name": "ORDER_ID", + "nullable": true, + "precision": 38, + "scale": 0, + "type_code": 0, + "type_name": "FIXED" + } + ] + }, + { + "query": 18, + "sql": "SELECT order_id FROM orders WHERE (customer_id, status) IN (SELECT customer_id, 'shipped' FROM customers)", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": null, + "name": "ORDER_ID", + "nullable": true, + "precision": 38, + "scale": 0, + "type_code": 0, + "type_name": "FIXED" + } + ] + }, + { + "query": 19, + "sql": "SELECT order_id FROM orders WHERE ordered_at > 5", + "compiles": false, + "errno": 1038, + "sqlstate": "22023", + "message": "SQL compilation error: Can not convert parameter '5' of type [NUMBER(1,0)] into expected type [TIMESTAMP_NTZ(9)]" + }, + { + "query": 20, + "sql": "SELECT order_id FROM orders o, orders o", + "compiles": false, + "errno": 2027, + "sqlstate": "42601", + "message": "SQL compilation error: duplicate alias 'O'" + }, + { + "query": 21, + "sql": "SELECT order_id id, total amount FROM orders", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": null, + "name": "ID", + "nullable": true, + "precision": 38, + "scale": 0, + "type_code": 0, + "type_name": "FIXED" + }, + { + "internal_size": null, + "name": "AMOUNT", + "nullable": true, + "precision": 12, + "scale": 2, + "type_code": 0, + "type_name": "FIXED" + } + ] + }, + { + "query": 22, + "sql": "SELECT order_id, HASH_AGG(*) AS h FROM orders GROUP BY order_id", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": null, + "name": "ORDER_ID", + "nullable": true, + "precision": 38, + "scale": 0, + "type_code": 0, + "type_name": "FIXED" + }, + { + "internal_size": null, + "name": "H", + "nullable": false, + "precision": 19, + "scale": 0, + "type_code": 0, + "type_name": "FIXED" + } + ] + }, + { + "query": 23, + "sql": "SELECT order_id, discount IS DISTINCT FROM 0 AS has_discount FROM orders", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": null, + "name": "ORDER_ID", + "nullable": true, + "precision": 38, + "scale": 0, + "type_code": 0, + "type_name": "FIXED" + }, + { + "internal_size": null, + "name": "HAS_DISCOUNT", + "nullable": true, + "precision": null, + "scale": null, + "type_code": 13, + "type_name": "BOOLEAN" + } + ] + }, + { + "query": 24, + "sql": "SELECT order_id, total + 'abc' AS x FROM orders", + "compiles": true, + "outcome": "rows", + "error": null, + "columns": [ + { + "internal_size": null, + "name": "ORDER_ID", + "nullable": true, + "precision": 38, + "scale": 0, + "type_code": 0, + "type_name": "FIXED" + }, + { + "internal_size": null, + "name": "X", + "nullable": true, + "precision": 19, + "scale": 5, + "type_code": 0, + "type_name": "FIXED" + } + ] + }, + { + "query": 25, + "sql": "SELECT order_id, total FROM orders PIVOT (SUM(total) FOR status IN ('shipped', 'pending')) AS p", + "compiles": false, + "errno": 904, + "sqlstate": "42000", + "message": "SQL compilation error: error line 1 at position 1,996 invalid identifier 'TOTAL'" + } + ] +} \ No newline at end of file diff --git a/crates/sqlquack/Cargo.toml b/crates/sqlquack/Cargo.toml index 6089ff83f..a7fc14d61 100644 --- a/crates/sqlquack/Cargo.toml +++ b/crates/sqlquack/Cargo.toml @@ -37,6 +37,7 @@ walkdir.workspace = true arrow.workspace = true duckdb.workspace = true tempfile.workspace = true +toml.workspace = true [lints] workspace = true diff --git a/crates/sqlquack/src/analysis/tests.rs b/crates/sqlquack/src/analysis/tests.rs index df2746a0e..3a9753493 100644 --- a/crates/sqlquack/src/analysis/tests.rs +++ b/crates/sqlquack/src/analysis/tests.rs @@ -24,6 +24,8 @@ mod test_divergence_modes; mod test_emitted_growth; #[path = "tests/test_equivalence_cases.rs"] mod test_equivalence_cases; +#[path = "tests/test_everyday_corpus.rs"] +mod test_everyday_corpus; #[path = "tests/test_float_text.rs"] mod test_float_text; #[path = "tests/test_guarded_conditions.rs"] diff --git a/crates/sqlquack/src/analysis/tests/helpers.rs b/crates/sqlquack/src/analysis/tests/helpers.rs index 67647481c..546b23f23 100644 --- a/crates/sqlquack/src/analysis/tests/helpers.rs +++ b/crates/sqlquack/src/analysis/tests/helpers.rs @@ -1,5 +1,8 @@ use std::collections::BTreeSet; +use sha2::{Digest, Sha256}; +use sqlquack_core::diagnostics::models::DiagnosticSpan; +use sqlquack_core::failures::main::duckdb_failure::duckdb_failure; use sqlquack_core::parsing::models::{SourceDialect, SourceLocation}; use sqlquack_core::provenance::main::merge_provenance::merge_provenance; use sqlquack_core::refusals::models::{Refusal, RefusalCategory}; @@ -22,13 +25,16 @@ use sqlquack_snowflake::typing::models::SnowflakeType; use crate::analysis::main::analyze::analyze; use crate::analysis::main::analyze_function::analyze_function; use crate::analysis::main::check_equivalence_cases::check_equivalence_cases; +use crate::analysis::main::check_source::check_source; use crate::analysis::main::collect_all_refusals::collect_all_refusals; use crate::analysis::main::confirm_assumption::confirm_assumption; use crate::analysis::main::refused_construct::refused_construct; use crate::analysis::models::PipelineConverter; use crate::analysis::tests::test_types::{ - AnalysisSummary, CollectedSummary, DivergenceModeOutcome, + AnalysisSummary, CollectedSummary, DivergenceModeOutcome, EverydayCorpus, EverydayQuery, }; +use crate::cli::main::convert_report::convert_report; +use crate::cli::models::{ConvertArguments, OutputArguments, OutputFormat, PolicyArguments}; use sqlquack_rules::session::main::confirm_utc_session::confirm_utc_session; use sqlquack_rules::session::main::conversion_options::conversion_options; @@ -694,3 +700,374 @@ pub(crate) fn relying_on_utc_session(constructs: &[&str]) -> DivergenceModeOutco categories: vec![], } } + +/// A corpus's regressions against its recorded outcomes; improvements and rates are printed. +pub(crate) fn everyday_changes(directory: &str, description: &str) -> Vec { + let (root, corpus) = everyday_corpus(directory); + let strict = everyday_arguments(&root, true); + let repository = everyday_arguments(&root, false); + let fixture = std::fs::read_to_string(root.join(EVERYDAY_FIXTURE)).ok(); + let mut regressions = Vec::new(); + let mut improvements = Vec::new(); + let recorded: Vec = corpus + .query + .iter() + .map(|query| { + let policies = [ + (STRICT, &strict, &query.expect, &query.result), + ( + REPOSITORY, + &repository, + &query.expect_repository, + &query.result_repository, + ), + ]; + let [ + (strict_outcome, strict_result), + (repository_outcome, repository_result), + ] = policies.map(|(policy, arguments, expected, expected_result)| { + let (outcome, translated) = everyday_outcome(&query.sql, arguments); + let result = fixture + .as_deref() + .zip(translated.as_deref()) + .map(|(rows, sql)| fixture_result(rows, sql)); + let place = format!("{} under {policy}", query.sql); + let changed = (outcome != *expected) + .then(|| format!("{place}: expected {expected}, got {outcome}")); + // Only a refusal that now translates improves; a parse or check diagnostic that + // disappears means SQL Snowflake may reject now converts, so it fails. + let improved = expected == UNRECORDED + || (outcome == TRANSLATED && expected.starts_with(REFUSED)); + improvements.extend(changed.clone().filter(|_| improved)); + regressions.extend(changed.filter(|_| !improved)); + regressions.extend((outcome == *expected && result != *expected_result).then( + || { + format!( + "{place}: the result on the fixture rows was {}, is now {}", + expected_result.as_deref().unwrap_or("none"), + result.as_deref().unwrap_or("none") + ) + }, + )); + (outcome, result) + }); + EverydayQuery { + expect: strict_outcome, + result: strict_result, + expect_repository: repository_outcome, + result_repository: repository_result, + ..query.clone() + } + }) + .collect(); + let rerecording = std::env::var_os(RERECORD_VARIABLE).is_some(); + rerecording.then(|| rerecord(&root, &recorded)); + eprintln!( + "{description}: {} refused statements now translate; run `{RERECORD_COMMAND}` to record them:\n{}", + improvements.len(), + improvements.join("\n") + ); + eprintln!("{description}: {}", everyday_translation_rates(directory)); + regressions.into_iter().filter(|_| !rerecording).collect() +} + +/// The rates of valid queries, not DDL, recorded as translated: strict, and repository policy. +pub(crate) fn everyday_translation_rates(directory: &str) -> String { + let (_, corpus) = everyday_corpus(directory); + let valid: Vec<&EverydayQuery> = corpus + .query + .iter() + .filter(|query| !EVERYDAY_NOT_TRANSLATABLE.contains(&query.category.as_str())) + .filter(|query| { + query.snowflake.as_deref().map_or_else( + || !query.category.starts_with(EVERYDAY_INVALID_PREFIX), + |verdict| verdict == SNOWFLAKE_COMPILES, + ) + }) + .collect(); + let strict = valid + .iter() + .filter(|query| query.expect == TRANSLATED) + .count(); + let repository = valid + .iter() + .filter(|query| query.expect_repository == TRANSLATED) + .count(); + format!( + "{strict} of {} strict, {repository} of {} repository", + valid.len(), + valid.len() + ) +} + +/// Queries Snowflake rejects that pass SQLQuack's parse and checks, once every receipt matches. +pub(crate) fn everyday_snowflake_rejections_not_caught(directory: &str) -> Vec { + let (root, corpus) = everyday_corpus(directory); + let Ok(text) = std::fs::read_to_string(root.join("snowflake-receipts.json")) else { + return Vec::new(); + }; + let receipts: serde_json::Value = serde_json::from_str(&text).expect("receipts parse"); + // Results are a list, or an object keyed by query id; a receipt without a verdict is skipped. + let results: Vec<&serde_json::Value> = receipts["results"].as_array().map_or_else( + || { + receipts["results"] + .as_object() + .into_iter() + .flat_map(|by_id| by_id.values()) + .collect() + }, + |list| list.iter().collect(), + ); + for receipt in results + .into_iter() + .filter(|receipt| receipt["compiles"].is_boolean()) + { + let sql = receipt["sql"] + .as_str() + .expect("a receipt names its SQL") + .trim(); + let verdict = receipt["compiles"] + .as_bool() + .filter(|compiles| *compiles) + .map_or_else( + || format!("rejects {}", receipt["errno"]), + |_| SNOWFLAKE_COMPILES.to_owned(), + ); + let query = corpus.query.iter().find(|query| query.sql.trim() == sql); + assert_eq!( + query.and_then(|query| query.snowflake.clone()), + Some(verdict), + "{sql}" + ); + } + let strict = everyday_arguments(&root, true); + corpus + .query + .iter() + .filter(|query| { + query + .snowflake + .as_deref() + .is_some_and(|verdict| verdict != SNOWFLAKE_COMPILES) + }) + .filter(|query| { + let (outcome, _) = everyday_outcome(&query.sql, &strict); + !outcome.starts_with("parse ") && !outcome.starts_with("check ") + }) + .map(|query| query.sql.clone()) + .collect() +} + +/// The everyday corpus directory and its queries. +fn everyday_corpus(directory: &str) -> (std::path::PathBuf, EverydayCorpus) { + let root = repository_root().join(directory); + let text = std::fs::read_to_string(root.join(EVERYDAY_QUERIES)).expect("the corpus reads"); + let corpus: EverydayCorpus = toml::from_str(&text).expect("the corpus parses"); + assert!(corpus.query.len() > 300, "{} queries", corpus.query.len()); + (root, corpus) +} + +/// Rewrites the corpus file with `queries`' outcomes, keeping its comments. +fn rerecord(root: &std::path::Path, queries: &[EverydayQuery]) { + let path = root.join(EVERYDAY_QUERIES); + let text = std::fs::read_to_string(&path).expect("the corpus reads"); + let mut chunks = text.split("[[query]]"); + let header = chunks.next().unwrap_or_default(); + // Comment lines between queries end the previous chunk; keep them before the next query. + let separators: Vec = chunks + .map(|chunk| { + let lines: Vec<&str> = chunk.lines().collect(); + let kept = lines + .iter() + .rev() + .take_while(|line| line.is_empty() || line.starts_with('#')) + .count(); + lines[lines.len() - kept..] + .iter() + .map(|line| format!("{line}\n")) + .collect() + }) + .collect(); + let blocks: String = queries + .iter() + .enumerate() + .map(|(index, query)| { + let optional: String = [ + ("snowflake", &query.snowflake), + ("result", &query.result), + ("result_repository", &query.result_repository), + ] + .into_iter() + .filter_map(|(key, value)| value.as_ref().map(|value| format!("{key} = {value:?}\n"))) + .collect(); + let uncertain = query.uncertain.then_some("uncertain = true\n"); + let separator = separators + .get(index) + .filter(|separator| !separator.is_empty()) + .cloned() + .unwrap_or_else(|| "\n".repeat(usize::from(index + 1 < queries.len()))); + format!( + "[[query]]\ncategory = {:?}\nsql = '''{}'''\nexpect = {:?}\nexpect_repository = {:?}\n{optional}{}{separator}", + query.category, + query.sql, + query.expect, + query.expect_repository, + uncertain.unwrap_or_default() + ) + }) + .collect(); + std::fs::write(path, format!("{header}{blocks}")).expect("the corpus writes"); +} + +/// `convert`'s arguments: the built-in policy, or the repository's under a UTC session. +fn everyday_arguments(root: &std::path::Path, builtin_policy: bool) -> ConvertArguments { + ConvertArguments { + path: None, + schema: Some(root.join("schema.json")), + overrides: None, + verified_overrides: Vec::new(), + session: Vec::new(), + compact: true, + output: OutputArguments { + format: OutputFormat::Json, + json: false, + }, + conversion: PolicyArguments { + policy: Some(repository_root().join(POLICY_FILE_NAME)), + builtin_policy, + strict: false, + utc_session: !builtin_policy, + confirm_declared_offsets: false, + python_runtime: false, + loud_divergences_only: false, + }, + } +} + +/// What SQLQuack does with `sql`: its first diagnostic or refusal, with span, or `translated`. +fn everyday_outcome(sql: &str, arguments: &ConvertArguments) -> (String, Option) { + let diagnostics = check_source(sql).expect("the query holds a statement"); + diagnostics.first().map_or_else( + || converted_outcome(sql, arguments), + |found| { + let stage = (found.code == PARSE_FAILURE_CODE).then_some("parse"); + let outcome = format!("{} {}", stage.unwrap_or("check"), found.code); + (with_span(outcome, found.span.as_ref()), None) + }, + ) +} + +/// The conversion's first refusal with its span, or `translated` with the converted SQL. +fn converted_outcome(sql: &str, arguments: &ConvertArguments) -> (String, Option) { + let report = convert_report(arguments, sql).expect("the query converts or refuses"); + report.refusals.first().map_or_else( + || (TRANSLATED.to_owned(), Some(report.sql.clone())), + |refusal| { + let found = refusal.diagnostic.as_ref(); + let code = found.map_or("", |found| found.code); + let outcome = format!("refused {code} {}", refusal.construct); + ( + with_span(outcome, found.and_then(|found| found.span.as_ref())), + None, + ) + }, + ) +} + +/// `outcome` with the characters its diagnostic underlines, when it has a span. +fn with_span(outcome: String, span: Option<&DiagnosticSpan>) -> String { + span.map_or_else( + || outcome.clone(), + |span| format!("{outcome} at {}..{}", span.start, span.end), + ) +} + +/// The fixture rows `sql` returns, sorted and hashed, or the Snowflake error it raises. +fn fixture_result(fixture: &str, sql: &str) -> String { + let connection = duckdb::Connection::open_in_memory().expect("DuckDB opens"); + connection + .execute_batch(fixture) + .expect("the fixture loads"); + let query = format!("SELECT COLUMNS(*)::VARCHAR FROM ({sql}) AS result"); + let rows = connection.prepare(&query).and_then(|mut statement| { + statement + .query_map([], |row| { + let width = row.as_ref().column_count(); + (0..width) + .map(|index| { + row.get::<_, Option>(index) + .map(|value| value.unwrap_or_else(|| "NULL".to_owned())) + }) + .collect::, _>>() + .map(|values| values.join("\t")) + })? + .collect::, _>>() + }); + rows.map_or_else( + |error| { + duckdb_failure(&error.to_string()) + .and_then(|failure| failure.snowflake) + .map_or_else( + || "raises a DuckDB error".to_owned(), + |code| format!("raises {}", code.errno), + ) + }, + |mut rows| { + rows.sort(); + let digest = Sha256::digest(rows.join("\n").as_bytes()); + let hex: String = digest[..8] + .iter() + .map(|byte| format!("{byte:02x}")) + .collect(); + format!("{} rows {hex}", rows.len()) + }, + ) +} + +/// The command that rewrites every corpus's recorded outcomes. +pub(crate) const RERECORD_COMMAND: &str = "make corpus-rerecord"; + +/// Set to rewrite the recorded outcomes instead of comparing with them. +const RERECORD_VARIABLE: &str = "SQLQUACK_RERECORD"; + +/// Each corpus directory's queries and their recorded outcomes. +const EVERYDAY_QUERIES: &str = "queries.toml"; + +/// DuckDB SQL creating and filling a corpus's relations, where it has one. +const EVERYDAY_FIXTURE: &str = "fixture.sql"; + +/// How a recorded refusal's outcome begins. +const REFUSED: &str = "refused "; + +/// The outcome the basics generator writes, for `make corpus-rerecord` to fill in. +const UNRECORDED: &str = "unrecorded"; + +/// The policy each query is converted under: the built-in one. +const STRICT: &str = "strict"; + +/// The policy each query is converted under: the repository's, in a UTC session. +const REPOSITORY: &str = "repository"; + +/// The everyday corpus directory, under the repository root. +pub(crate) const EVERYDAY_CORPUS: &str = "corpora/everyday"; + +/// The generated corpus of basic statements, laid out as the everyday corpus. +pub(crate) const BASICS_CORPUS: &str = "corpora/basics"; + +/// The dbt-style model corpus directory, laid out as the everyday corpus. +pub(crate) const EVERYDAY_MODELS_CORPUS: &str = "corpora/everyday-models"; + +/// Corpus categories of statements no rule translates: DDL and DML. +const EVERYDAY_NOT_TRANSLATABLE: [&str; 1] = ["ddl_dml"]; + +/// The prefix of corpus categories of SQL Snowflake rejects. +const EVERYDAY_INVALID_PREFIX: &str = "invalid"; + +/// Snowflake's verdict on a query it compiles. +const SNOWFLAKE_COMPILES: &str = "compiles"; + +/// The outcome of a query that converts. +const TRANSLATED: &str = "translated"; + +/// The diagnostic code of SQL that does not parse. +const PARSE_FAILURE_CODE: &str = "SQ0001"; diff --git a/crates/sqlquack/src/analysis/tests/test_everyday_corpus.rs b/crates/sqlquack/src/analysis/tests/test_everyday_corpus.rs new file mode 100644 index 000000000..56e6fd707 --- /dev/null +++ b/crates/sqlquack/src/analysis/tests/test_everyday_corpus.rs @@ -0,0 +1,102 @@ +//! Each corpus keeps its outcomes; regressions fail and new translations are only reported. + +use crate::analysis::tests::helpers::{ + BASICS_CORPUS, EVERYDAY_CORPUS, EVERYDAY_MODELS_CORPUS, RERECORD_COMMAND, everyday_changes, + everyday_snowflake_rejections_not_caught, +}; +use crate::analysis::tests::test_types::EverydayCorpusTestCase; + +#[test] +fn given_everyday_snowflake_queries_when_checked_and_converted_then_none_regresses() { + let test_cases = [EverydayCorpusTestCase { + description: "corpora/everyday: hand-written analyst queries", + directory: EVERYDAY_CORPUS, + // SQL Snowflake rejects (snowflake-receipts.json) that SQLQuack neither fails to parse nor + // flags in its checks; each should become a parse or check error. + expected_rejections_not_caught: vec![ + "SELECT COUNT(*) FILTER (WHERE status = 'shipped') AS shipped FROM orders", + "SELECT order_id, total FROM orders PIVOT (SUM(total) FOR status IN ('shipped', 'pending')) AS p", + "SELECT order_id FROM orders WHERE status == 'shipped'", + "SELECT order_id FROM orders WHERE status IN 'shipped'", + "SELECT order_id FROM orders WHERE total >> 10", + "SELECT order_id FROM orders WHERE ordered_at > 5", + "SELECT LENGTH(order_id, 2) AS x FROM orders", + "SELECT order_id FROM orders o, orders o", + ], + expected_regressions: Vec::new(), + }]; + + for test_case in test_cases { + assert_eq!( + everyday_changes(test_case.directory, test_case.description), + test_case.expected_regressions, + "{}: regressions. If a change is intended, run `{RERECORD_COMMAND}` and commit the corpus with it", + test_case.description + ); + assert_eq!( + everyday_snowflake_rejections_not_caught(test_case.directory), + test_case.expected_rejections_not_caught, + "{}", + test_case.description + ); + } +} + +#[test] +fn given_dbt_style_snowflake_models_when_checked_and_converted_then_none_regresses() { + let test_cases = [EverydayCorpusTestCase { + description: "corpora/everyday-models: dbt-style models", + directory: EVERYDAY_MODELS_CORPUS, + // SQL Snowflake rejects that SQLQuack neither fails to parse nor flags in its checks: + // an ambiguous column, ON after LATERAL FLATTEN, a WINDOW clause, a pivoted-away + // column, and CHANGES without change tracking. + expected_rejections_not_caught: vec![ + "with customers as (\n select * from stg_customers\n),\norders as (\n select * from stg_orders\n),\npayments as (\n select * from stg_payments\n),\ncustomer_orders as (\n select\n customer_id,\n min(order_date) as first_order,\n max(order_date) as most_recent_order,\n count(order_id) as number_of_orders\n from orders\n group by customer_id\n),\ncustomer_payments as (\n select\n orders.customer_id,\n sum(amount) as total_amount\n from payments\n left join orders on payments.order_id = orders.order_id\n group by orders.customer_id\n),\nfinal as (\n select\n customers.customer_id,\n customers.first_name,\n customers.last_name,\n customer_orders.first_order,\n customer_orders.most_recent_order,\n customer_orders.number_of_orders,\n customer_payments.total_amount as customer_lifetime_value\n from customers\n left join customer_orders on customers.customer_id = customer_orders.customer_id\n left join customer_payments on customers.customer_id = customer_payments.customer_id\n)\nselect * from final", + "select\n e.event_id,\n f.value:sku::varchar as sku\nfrom events e\ninner join lateral flatten(input => e.payload:items) f on true", + "select\n order_id,\n sum(total) over w as running_total,\n avg(total) over w as running_avg\nfrom orders\nwindow w as (partition by customer_id order by ordered_at)", + "select customer_id, channel, total_web, total_store\nfrom (select customer_id, channel, total from orders)\npivot (sum(total) for channel in ('web' as total_web, 'store' as total_store))", + "select *\nfrom stg_customers\nchanges (information => default)\nat (offset => -3600)", + ], + expected_regressions: Vec::new(), + }]; + + for test_case in test_cases { + assert_eq!( + everyday_changes(test_case.directory, test_case.description), + test_case.expected_regressions, + "{}: regressions. If a change is intended, run `{RERECORD_COMMAND}` and commit the corpus with it", + test_case.description + ); + assert_eq!( + everyday_snowflake_rejections_not_caught(test_case.directory), + test_case.expected_rejections_not_caught, + "{}", + test_case.description + ); + } +} + +#[test] +fn given_generated_basic_statements_in_several_spellings_when_converted_then_none_regresses() { + let test_cases = [EverydayCorpusTestCase { + description: "corpora/basics: generated basics, from scripts/generate_basics_corpus.py", + directory: BASICS_CORPUS, + expected_regressions: Vec::new(), + expected_rejections_not_caught: Vec::new(), + }]; + + for test_case in test_cases { + assert_eq!( + everyday_changes(test_case.directory, test_case.description), + test_case.expected_regressions, + "{}: regressions. If a change is intended, run `{RERECORD_COMMAND}` and commit the corpus with it", + test_case.description + ); + assert_eq!( + everyday_snowflake_rejections_not_caught(test_case.directory), + test_case.expected_rejections_not_caught, + "{}", + test_case.description + ); + } +} diff --git a/crates/sqlquack/src/analysis/tests/test_types.rs b/crates/sqlquack/src/analysis/tests/test_types.rs index a4bd3cc7b..9c10a0268 100644 --- a/crates/sqlquack/src/analysis/tests/test_types.rs +++ b/crates/sqlquack/src/analysis/tests/test_types.rs @@ -206,3 +206,39 @@ pub(crate) struct OverrideCallsTestCase { pub(crate) emitted: &'static str, pub(crate) expected_refused: bool, } + +pub(crate) struct EverydayCorpusTestCase { + pub(crate) description: &'static str, + pub(crate) directory: &'static str, + pub(crate) expected_regressions: Vec, + pub(crate) expected_rejections_not_caught: Vec<&'static str>, +} + +/// The everyday corpus file. +#[derive(serde::Deserialize)] +#[serde(deny_unknown_fields)] +pub(crate) struct EverydayCorpus { + pub(crate) query: Vec, +} + +/// One everyday query and the outcome recorded for it. +#[derive(Clone, serde::Deserialize)] +#[serde(deny_unknown_fields)] +pub(crate) struct EverydayQuery { + pub(crate) category: String, + pub(crate) sql: String, + pub(crate) expect: String, + pub(crate) expect_repository: String, + /// Snowflake's recorded verdict, `compiles` or `rejects `, where one was recorded. + #[serde(default)] + pub(crate) snowflake: Option, + /// The strict translation's result on the corpus's fixture rows, where it has them. + #[serde(default)] + pub(crate) result: Option, + /// The repository-policy translation's result on the fixture rows. + #[serde(default)] + pub(crate) result_repository: Option, + /// Set where Snowflake's verdict on the query is not recorded yet. + #[serde(default)] + pub(crate) uncertain: bool, +} diff --git a/scripts/basics_corpus/__init__.py b/scripts/basics_corpus/__init__.py new file mode 100644 index 000000000..ecd09b4f1 --- /dev/null +++ b/scripts/basics_corpus/__init__.py @@ -0,0 +1 @@ +"""A generated corpus of basic Snowflake statements, each in several spellings.""" diff --git a/scripts/basics_corpus/_helpers/__init__.py b/scripts/basics_corpus/_helpers/__init__.py new file mode 100644 index 000000000..db368dd94 --- /dev/null +++ b/scripts/basics_corpus/_helpers/__init__.py @@ -0,0 +1 @@ +"""Helpers of the basics corpus generator.""" diff --git a/scripts/basics_corpus/_helpers/spellings.py b/scripts/basics_corpus/_helpers/spellings.py new file mode 100644 index 000000000..a5d35402d --- /dev/null +++ b/scripts/basics_corpus/_helpers/spellings.py @@ -0,0 +1,86 @@ +"""Other spellings of one statement: case, whitespace, a final semicolon, comments, quoting.""" + +from __future__ import annotations + +import random +import re +from collections.abc import Callable + +from scripts.basics_corpus.constants import ( + BLOCK, + BLOCK_COMMENT, + CASINGS, + CLAUSES, + COMMENTS, + ENDING_SHARE, + ENDINGS, + HALF, + KEYWORDS, + LEADING, + LEADING_COMMENT, + LOWER_CASE, + MIXED_CASE, + QUOTE, + QUOTED_TABLE, + QUOTED_TABLE_SHARE, + SPACINGS, + TRAILING, + TRAILING_COMMENT, + UNSPACED, + UPPER_CASE, +) + +_KEYWORD_PATTERN: re.Pattern[str] = re.compile( + r"\b(" + "|".join(keyword.replace(" ", r"\s+") for keyword in KEYWORDS) + r")\b" +) +_TABLE_PATTERN: re.Pattern[str] = re.compile(r"\borders\b", re.IGNORECASE) + + +def respelled(*, sql: str, rng: random.Random) -> str: + """`sql` spelled another way that means the same statement in Snowflake.""" + casing: str = rng.choice(CASINGS) + out: str = _outside_strings( + sql=sql, change=lambda text: _cased(text=text, casing=casing, rng=rng) + ) + spacing: str = rng.choice([*SPACINGS, UNSPACED]) + if spacing in SPACINGS: + out = _outside_strings( + sql=out, change=lambda text: _spaced(text=text, space=SPACINGS[spacing]) + ) + if rng.random() < ENDING_SHARE: + out += rng.choice(ENDINGS) + comment: str | None = rng.choice(COMMENTS) + if comment == LEADING: + out = LEADING_COMMENT + out + elif comment == TRAILING: + out = out.rstrip(";\n ") + TRAILING_COMMENT + elif comment == BLOCK: + out = out.replace(" ", BLOCK_COMMENT, 1) + if rng.random() < QUOTED_TABLE_SHARE: + out = _outside_strings(sql=out, change=lambda text: _TABLE_PATTERN.sub(QUOTED_TABLE, text)) + return out + + +def _cased(*, text: str, casing: str, rng: random.Random) -> str: + if casing == LOWER_CASE: + return text.lower() + if casing == UPPER_CASE: + return text.upper() + if casing == MIXED_CASE: + return "".join(c.upper() if rng.random() < HALF else c.lower() for c in text) + return _KEYWORD_PATTERN.sub(lambda match: match.group(0).lower(), text) + + +def _spaced(*, text: str, space: str) -> str: + for clause in CLAUSES: + pattern: re.Pattern[str] = re.compile( + r" (" + clause.replace(" ", r"\s+") + r")\b", re.IGNORECASE + ) + text = pattern.sub(lambda match: space + match.group(1), text) + return text + + +def _outside_strings(*, sql: str, change: Callable[[str], str]) -> str: + """`change` applied to the text outside single-quoted literals.""" + parts: list[str] = sql.split(QUOTE) + return QUOTE.join(change(part) if index % 2 == 0 else part for index, part in enumerate(parts)) diff --git a/scripts/basics_corpus/_helpers/statements.py b/scripts/basics_corpus/_helpers/statements.py new file mode 100644 index 000000000..6276617d9 --- /dev/null +++ b/scripts/basics_corpus/_helpers/statements.py @@ -0,0 +1,110 @@ +"""The basic statements, each written once in plain upper-case keywords.""" + +from __future__ import annotations + +from collections.abc import Iterator + +from scripts.basics_corpus.constants import ( + AGGREGATES, + CAST_SUBJECTS, + CASTS, + COLUMNS, + DERIVED, + FIXED, + FUNCTIONS, + JOINS, + LITERALS, + OPERANDS_LEFT, + OPERANDS_RIGHT, + OPERATORS, + PREDICATES, + TRY_CAST, + TRY_CAST_ONLY_SUBJECT, + UNION_PAIRS, + UNIONS, + WINDOWS, +) +from scripts.basics_corpus.models import Basic + + +def basics() -> Iterator[Basic]: + """Every basic statement: select items with and without an alias, then whole-query shapes.""" + for shape, expression in _expressions(): + reads: bool = any(column in expression for column in COLUMNS) + source: str = " FROM orders" if reads else "" + yield Basic(f"select_{shape}", f"SELECT {expression} AS v{source}", True) + yield Basic(f"select_{shape}", f"SELECT {expression}{source}", False) + if not reads: + yield Basic(f"select_{shape}_from", f"SELECT {expression} AS v FROM orders", True) + yield Basic(f"select_{shape}_from", f"SELECT {expression} FROM orders", False) + for aggregate in AGGREGATES: + yield Basic("aggregate", f"SELECT {aggregate} AS n FROM orders", True) + yield Basic("aggregate", f"SELECT {aggregate} FROM orders", False) + yield Basic( + "group_by", f"SELECT status, {aggregate} AS n FROM orders GROUP BY status", True + ) + yield Basic("group_by", f"SELECT status, {aggregate} FROM orders GROUP BY status", False) + yield Basic( + "group_by", f"SELECT status, {aggregate} AS n FROM orders GROUP BY 1 ORDER BY 1", True + ) + for predicate in PREDICATES: + yield Basic("where", f"SELECT order_id FROM orders WHERE {predicate}", True) + for column in COLUMNS: + yield Basic( + "order_limit", + f"SELECT order_id, {column} FROM orders ORDER BY {column} DESC LIMIT 3", + True, + ) + yield Basic( + "order_limit", + f"SELECT order_id FROM orders ORDER BY {column} NULLS LAST LIMIT 2 OFFSET 1", + True, + ) + for expression in DERIVED: + yield Basic( + "cte", f"WITH x AS (SELECT {expression} AS v FROM orders) SELECT v FROM x", True + ) + yield Basic( + "cte", + f"WITH x AS (SELECT order_id, {expression} AS v FROM orders), " + "y AS (SELECT * FROM x WHERE order_id > 1) SELECT v FROM y", + True, + ) + yield Basic("subquery", f"SELECT v FROM (SELECT {expression} AS v FROM orders) AS s", True) + for join in JOINS: + yield Basic( + "join", + f"SELECT o.order_id, c.email FROM orders o {join} customers c " + "ON o.customer_id = c.customer_id", + True, + ) + for left, right in UNION_PAIRS: + source = " FROM orders" if left[0].isalpha() else "" + for union in UNIONS: + yield Basic( + "union", f"SELECT {left} AS v{source} {union} SELECT {right} AS v{source}", True + ) + for window in WINDOWS: + yield Basic("window", f"SELECT order_id, {window} AS w FROM orders", True) + for shape, sql in FIXED: + yield Basic(shape, sql, True) + + +def _expressions() -> Iterator[tuple[str, str]]: + """Select-list expressions by shape: literals, columns, arithmetic, casts and functions.""" + for literal in LITERALS: + yield "literal", literal + for column in COLUMNS: + yield "column", column + for left in OPERANDS_LEFT: + for operator in OPERATORS: + for right in OPERANDS_RIGHT: + yield "arithmetic", f"{left} {operator} {right}" + yield "concat", "'a' || 'b'" + yield "concat", "status || '!'" + for cast in CASTS: + for subject in CAST_SUBJECTS: + if not cast.startswith(TRY_CAST) or subject == TRY_CAST_ONLY_SUBJECT: + yield "cast", cast.format(x=subject) + for function in FUNCTIONS: + yield "function", function diff --git a/scripts/basics_corpus/constants.py b/scripts/basics_corpus/constants.py new file mode 100644 index 000000000..1cc16d343 --- /dev/null +++ b/scripts/basics_corpus/constants.py @@ -0,0 +1,234 @@ +"""The basics corpus: where it lives, and the vocabulary its statements are built from.""" + +from __future__ import annotations + +from pathlib import Path + +REPOSITORY: Path = Path(__file__).resolve().parents[2] +CORPUS_FILE: str = "corpora/basics/queries.toml" +SEED: int = 320 +SPELLINGS: int = 4 +UNRECORDED: str = "unrecorded" + +LITERALS: tuple[str, ...] = ( + "1", + "0", + "42", + "1.", + ".5", + "1.5", + "1e3", + "1E-2", + "-1", + "+1", + "-0.25", + "TRUE", + "FALSE", + "NULL", + "'x'", + "'it''s'", + "''", + "'café'", + "DATE '2024-01-15'", + "TIMESTAMP '2024-01-15 10:00:00'", +) +COLUMNS: tuple[str, ...] = ("order_id", "total", "status", "ordered_at", "customer_id") +OPERATORS: tuple[str, ...] = ("+", "-", "*", "/") +OPERANDS_LEFT: tuple[str, ...] = ("1", "total", "order_id") +OPERANDS_RIGHT: tuple[str, ...] = ("1", "2", "total") +CAST_SUBJECTS: tuple[str, ...] = ("total", "1", "status") +TRY_CAST_ONLY_SUBJECT: str = "status" +TRY_CAST: str = "TRY_CAST(" +CASTS: tuple[str, ...] = ( + "CAST({x} AS VARCHAR)", + "{x}::VARCHAR", + "CAST({x} AS NUMBER(10,2))", + "{x}::INT", + "TRY_CAST({x} AS VARCHAR)", + "TO_VARCHAR({x})", +) +FUNCTIONS: tuple[str, ...] = ( + "UPPER(status)", + "LOWER(status)", + "LENGTH(status)", + "TRIM(status)", + "SUBSTR(status, 1, 3)", + "CONCAT(status, '!')", + "ROUND(total, 1)", + "ROUND(total)", + "ABS(total)", + "FLOOR(total)", + "CEIL(total)", + "COALESCE(status, 'none')", + "NVL(status, 'none')", + "NULLIF(status, 'shipped')", + "IFF(total > 100, 'big', 'small')", + "DATE_TRUNC('month', ordered_at)", + "DATEADD(day, 1, ordered_at)", + "TO_DATE(ordered_at)", + "YEAR(ordered_at)", + "MONTH(ordered_at)", + "ordered_at::DATE", + "CASE WHEN total > 100 THEN 'big' ELSE 'small' END", + "CASE status WHEN 'shipped' THEN 1 ELSE 0 END", +) +AGGREGATES: tuple[str, ...] = ( + "COUNT(*)", + "COUNT(order_id)", + "COUNT(DISTINCT customer_id)", + "SUM(total)", + "AVG(total)", + "MIN(total)", + "MAX(ordered_at)", +) +PREDICATES: tuple[str, ...] = ( + "total > 100", + "status = 'shipped'", + "status IN ('shipped', 'pending')", + "total BETWEEN 10 AND 100", + "status IS NULL", + "status IS NOT NULL", + "status LIKE 'sh%'", + "NOT (total > 100)", + "total > 10 AND status = 'shipped'", + "total < 10 OR status IS NULL", + "order_id IN (1, 2, 3)", + "ordered_at >= '2026-10-03'", + "ordered_at >= DATE '2026-10-03'", +) +DERIVED: tuple[str, ...] = ("total", "total * 2", "UPPER(status)", "1") +JOINS: tuple[str, ...] = ( + "JOIN", + "INNER JOIN", + "LEFT JOIN", + "LEFT OUTER JOIN", + "RIGHT JOIN", + "FULL OUTER JOIN", +) +UNION_PAIRS: tuple[tuple[str, str], ...] = ( + ("1", "2"), + ("'a'", "'b'"), + ("total", "total * 2"), + ("order_id", "customer_id"), +) +UNIONS: tuple[str, ...] = ("UNION ALL", "UNION") +WINDOWS: tuple[str, ...] = ( + "ROW_NUMBER() OVER (ORDER BY total)", + "ROW_NUMBER() OVER (PARTITION BY status ORDER BY total DESC)", + "RANK() OVER (ORDER BY total)", + "SUM(total) OVER (PARTITION BY customer_id)", + "LAG(total) OVER (ORDER BY ordered_at)", + "COUNT(*) OVER ()", +) +FIXED: tuple[tuple[str, str], ...] = ( + ("star", "SELECT * FROM orders"), + ("star", "SELECT o.* FROM orders o"), + ("star", "SELECT * FROM orders WHERE total > 50 ORDER BY order_id"), + ( + "join", + "SELECT o.order_id, i.quantity, p.name FROM orders o " + "JOIN order_items i ON i.order_id = o.order_id " + "JOIN products p ON p.product_id = i.product_id", + ), + ("join", "SELECT o.order_id, c.email FROM orders o JOIN customers c USING (customer_id)"), + ( + "join", + "SELECT o.order_id, c.email FROM orders o, customers c WHERE o.customer_id = c.customer_id", + ), + ( + "join", + "SELECT c.email, COUNT(*) AS n FROM customers c " + "LEFT JOIN orders o ON o.customer_id = c.customer_id GROUP BY c.email", + ), + ("distinct", "SELECT DISTINCT status FROM orders"), + ("having", "SELECT status, COUNT(*) AS n FROM orders GROUP BY status HAVING COUNT(*) > 1"), + ( + "qualify", + "SELECT order_id, status FROM orders " + "QUALIFY ROW_NUMBER() OVER (PARTITION BY status ORDER BY total DESC) = 1", + ), + ( + "last_days", + "SELECT order_id FROM orders WHERE ordered_at >= DATEADD(day, -30, CURRENT_DATE)", + ), + ( + "last_days", + "SELECT order_id FROM orders WHERE ordered_at >= DATEADD(day, -30, CURRENT_TIMESTAMP())", + ), +) + +KEYWORDS: tuple[str, ...] = ( + "SELECT", + "FROM", + "WHERE", + "GROUP BY", + "ORDER BY", + "LIMIT", + "OFFSET", + "AS", + "WITH", + "JOIN", + "ON", + "UNION ALL", + "UNION", + "HAVING", + "QUALIFY", + "DISTINCT", + "OVER", + "PARTITION BY", + "AND", + "OR", + "NOT", + "IN", + "IS", + "NULL", + "CASE", + "WHEN", + "THEN", + "ELSE", + "END", + "CAST", + "DESC", + "NULLS LAST", + "LEFT", + "INNER", +) +CLAUSES: tuple[str, ...] = ( + "FROM", + "WHERE", + "GROUP BY", + "ORDER BY", + "LIMIT", + "HAVING", + "QUALIFY", + "UNION ALL", + "JOIN", +) +LOWER_CASE: str = "lower" +UPPER_CASE: str = "upper" +MIXED_CASE: str = "mixed" +LOWER_KEYWORDS: str = "keywords" +CASINGS: tuple[str, ...] = (LOWER_CASE, UPPER_CASE, MIXED_CASE, LOWER_KEYWORDS) +UNSPACED: str = "none" +LEADING: str = "lead" +TRAILING: str = "trail" +BLOCK: str = "block" +COMMENTS: tuple[str | None, ...] = (None, None, LEADING, TRAILING, BLOCK) +HALF: float = 0.5 +ENDING_SHARE: float = 0.4 +QUOTED_TABLE_SHARE: float = 0.25 +QUOTE: str = "'" +SPACINGS: dict[str, str] = {"spaces": " ", "tabs": "\t", "newlines": "\n "} +ENDINGS: tuple[str, ...] = (";", " ;", ";\n", "\n") +LEADING_COMMENT: str = "-- a comment\n" +TRAILING_COMMENT: str = " -- trailing comment" +BLOCK_COMMENT: str = " /* c */ " +QUOTED_TABLE: str = '"ORDERS"' + +HEADER: str = """# Generated by scripts/generate_basics_corpus.py, then `make corpus-rerecord`. +# Do not edit. Basic Snowflake statements a first-time user types, each in its plain spelling +# and others that mean the same statement (case, whitespace, a final semicolon, comments, a +# quoted table name), with the outcome SQLQuack gives each under the built-in policy (`expect`) +# and under the repository policy in a UTC session (`expect_repository`), and the translation's +# result on fixture.sql. The everyday corpus test checks them. +""" diff --git a/scripts/basics_corpus/main/__init__.py b/scripts/basics_corpus/main/__init__.py new file mode 100644 index 000000000..7fd4ca784 --- /dev/null +++ b/scripts/basics_corpus/main/__init__.py @@ -0,0 +1 @@ +"""The basics corpus generator entry point.""" diff --git a/scripts/basics_corpus/main/generate.py b/scripts/basics_corpus/main/generate.py new file mode 100644 index 000000000..d2dcccfd6 --- /dev/null +++ b/scripts/basics_corpus/main/generate.py @@ -0,0 +1,36 @@ +"""Writes corpora/basics/queries.toml with unrecorded outcomes for `make corpus-rerecord`.""" + +from __future__ import annotations + +import argparse +import random + +from scripts.basics_corpus._helpers.spellings import respelled +from scripts.basics_corpus._helpers.statements import basics +from scripts.basics_corpus.constants import ( + CORPUS_FILE, + HEADER, + REPOSITORY, + SEED, + SPELLINGS, + UNRECORDED, +) + + +def run_generate(argv: list[str] | None = None) -> int: + """Generate the statements, each with an unrecorded outcome.""" + argparse.ArgumentParser(description=__doc__).parse_args(argv) + rng: random.Random = random.Random(SEED) + blocks: list[str] = [] + for basic in basics(): + spellings: list[str] = [basic.sql] + [ + respelled(sql=basic.sql, rng=rng) for _ in range(SPELLINGS) + ] + for sql in dict.fromkeys(spellings): + blocks.append( + f'[[query]]\ncategory = "{basic.shape}"\n' + f"sql = '''{sql}'''\n" + f'expect = "{UNRECORDED}"\nexpect_repository = "{UNRECORDED}"\n' + ) + (REPOSITORY / CORPUS_FILE).write_text(HEADER + "\n" + "\n".join(blocks)) + return 0 diff --git a/scripts/basics_corpus/models.py b/scripts/basics_corpus/models.py new file mode 100644 index 000000000..3ee9c42d5 --- /dev/null +++ b/scripts/basics_corpus/models.py @@ -0,0 +1,14 @@ +"""The basics corpus's statements.""" + +from __future__ import annotations + +from dataclasses import dataclass + + +@dataclass(frozen=True) +class Basic: + """One basic statement: its shape, and its SQL with an alias on each item, or without.""" + + shape: str + sql: str + aliased: bool diff --git a/scripts/generate_basics_corpus.py b/scripts/generate_basics_corpus.py new file mode 100644 index 000000000..aa9bd0ff6 --- /dev/null +++ b/scripts/generate_basics_corpus.py @@ -0,0 +1,14 @@ +"""Direct wrapper for the basics corpus generator.""" + +from __future__ import annotations + +from scripts.basics_corpus.main.generate import run_generate + + +def main(argv: list[str] | None = None) -> int: + """Write corpora/basics/queries.toml with outcomes left for `make corpus-rerecord`.""" + return run_generate(argv) + + +if __name__ == "__main__": + raise SystemExit(main())