Merging upstream version 11.4.5.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
0a06643852
commit
88f99e1c27
131 changed files with 53004 additions and 37079 deletions
28
tests/fixtures/identity.sql
vendored
28
tests/fixtures/identity.sql
vendored
|
@ -74,6 +74,7 @@ a.b.INT(1.234)
|
|||
INT(x / 100)
|
||||
time * 100
|
||||
int * 100
|
||||
dec + 1
|
||||
x IN (-1, 1)
|
||||
x IN ('a', 'a''a')
|
||||
x IN ((1))
|
||||
|
@ -114,7 +115,6 @@ SPLIT(SPLIT(referrer, 'utm_source=')[OFFSET(1)], "&")[OFFSET(0)]
|
|||
x[ORDINAL(1)][SAFE_OFFSET(2)]
|
||||
x GLOB '??-*'
|
||||
x GLOB y
|
||||
LIKE(x, 'z')
|
||||
ILIKE(x, 'z')
|
||||
x LIKE SUBSTR('abc', 1, 1)
|
||||
x LIKE y
|
||||
|
@ -272,6 +272,7 @@ SELECT a FROM test WHERE TRUE OR NOT EXISTS(SELECT * FROM x)
|
|||
SELECT a AS any, b AS some, c AS all, d AS exists FROM test WHERE a = ANY (SELECT 1)
|
||||
SELECT a FROM test WHERE a > ALL (SELECT 1)
|
||||
SELECT a FROM test WHERE (a, b) IN (SELECT 1, 2)
|
||||
SELECT X((SELECT 1) UNION (SELECT 2))
|
||||
SELECT a FROM test ORDER BY a
|
||||
SELECT a FROM test ORDER BY a, b
|
||||
SELECT x FROM tests ORDER BY a DESC, b DESC, c
|
||||
|
@ -646,6 +647,7 @@ DROP TABLE a.b
|
|||
DROP TABLE IF EXISTS a
|
||||
DROP TABLE IF EXISTS a.b
|
||||
DROP TABLE a CASCADE
|
||||
DROP TABLE s_hajo CASCADE CONSTRAINTS
|
||||
DROP VIEW a
|
||||
DROP VIEW a.b
|
||||
DROP VIEW IF EXISTS a
|
||||
|
@ -697,7 +699,7 @@ WITH a AS (SELECT * FROM b) DELETE FROM a
|
|||
WITH a AS (SELECT * FROM b) CACHE TABLE a
|
||||
SELECT ? AS ? FROM x WHERE b BETWEEN ? AND ? GROUP BY ?, 1 LIMIT ?
|
||||
SELECT :hello, ? FROM x LIMIT :my_limit
|
||||
SELECT * FROM x FETCH NEXT @take ROWS ONLY OFFSET @skip
|
||||
SELECT * FROM x OFFSET @skip FETCH NEXT @take ROWS ONLY
|
||||
WITH a AS ((SELECT b.foo AS foo, b.bar AS bar FROM b) UNION ALL (SELECT c.foo AS foo, c.bar AS bar FROM c)) SELECT * FROM a
|
||||
WITH a AS ((SELECT 1 AS b) UNION ALL (SELECT 1 AS b)) SELECT * FROM a
|
||||
SELECT (WITH x AS (SELECT 1 AS y) SELECT * FROM x) AS z
|
||||
|
@ -762,11 +764,13 @@ ALTER TABLE pets ADD CONSTRAINT pets_persons_fk FOREIGN KEY (owner_first_name, o
|
|||
ALTER TABLE pets ADD CONSTRAINT pets_name_not_cute_chk CHECK (LENGTH(name) < 20)
|
||||
ALTER TABLE people10m ADD CONSTRAINT dateWithinRange CHECK (birthDate > '1900-01-01')
|
||||
ALTER TABLE people10m ADD CONSTRAINT validIds CHECK (id > 1 AND id < 99999999) ENFORCED
|
||||
ALTER TABLE s_ut ADD CONSTRAINT s_ut_uq UNIQUE hajo
|
||||
ALTER TABLE baa ADD CONSTRAINT boo PRIMARY KEY (x, y) NOT ENFORCED DEFERRABLE INITIALLY DEFERRED NORELY
|
||||
ALTER TABLE baa ADD CONSTRAINT boo PRIMARY KEY (x, y) NOT ENFORCED DEFERRABLE INITIALLY DEFERRED NORELY
|
||||
ALTER TABLE baa ADD CONSTRAINT boo FOREIGN KEY (x, y) REFERENCES persons ON UPDATE NO ACTION ON DELETE NO ACTION MATCH FULL
|
||||
ALTER TABLE a ADD PRIMARY KEY (x, y) NOT ENFORCED
|
||||
ALTER TABLE a ADD FOREIGN KEY (x, y) REFERENCES bla
|
||||
SELECT partition FROM a
|
||||
SELECT end FROM a
|
||||
SELECT id FROM b.a AS a QUALIFY ROW_NUMBER() OVER (PARTITION BY br ORDER BY sadf DESC) = 1
|
||||
SELECT LEFT.FOO FROM BLA AS LEFT
|
||||
|
@ -776,3 +780,23 @@ SELECT * FROM x WHERE name ILIKE ANY XXX('a', 'b')
|
|||
SELECT * FROM x WHERE name LIKE ANY XXX('a', 'b')
|
||||
a OVERLAPS b
|
||||
GRANT INSERT ON foo TO bla
|
||||
PRAGMA quick_check
|
||||
PRAGMA QUICK_CHECK(0)
|
||||
PRAGMA QUICK_CHECK('sqlite_master')
|
||||
PRAGMA schema.quick_check
|
||||
PRAGMA schema.QUICK_CHECK(0)
|
||||
PRAGMA schema.QUICK_CHECK('sqlite_master')
|
||||
PRAGMA synchronous = 2
|
||||
PRAGMA synchronous = FULL
|
||||
PRAGMA memory_limit = '1GB'
|
||||
PRAGMA schema.synchronous = 2
|
||||
PRAGMA schema.synchronous = FULL
|
||||
PRAGMA schema.memory_limit = '1GB'
|
||||
JSON_OBJECT()
|
||||
JSON_OBJECT('key1': 1, 'key2': TRUE)
|
||||
JSON_OBJECT('id': '5', 'fld1': 'bla', 'fld2': 'bar')
|
||||
JSON_OBJECT('x': NULL, 'y': 1 NULL ON NULL)
|
||||
JSON_OBJECT('x': NULL, 'y': 1 WITH UNIQUE KEYS)
|
||||
JSON_OBJECT('x': NULL, 'y': 1 ABSENT ON NULL WITH UNIQUE KEYS)
|
||||
JSON_OBJECT('x': 1 RETURNING VARCHAR(100))
|
||||
JSON_OBJECT('x': 1 RETURNING VARBINARY FORMAT JSON ENCODING UTF8)
|
||||
|
|
3
tests/fixtures/optimizer/canonicalize.sql
vendored
3
tests/fixtures/optimizer/canonicalize.sql
vendored
|
@ -10,6 +10,9 @@ SELECT CAST(1 AS VARCHAR) AS "a" FROM "w" AS "w";
|
|||
SELECT CAST(1 + 3.2 AS DOUBLE) AS a FROM w AS w;
|
||||
SELECT 1 + 3.2 AS "a" FROM "w" AS "w";
|
||||
|
||||
SELECT CAST("2022-01-01" AS DATE) + INTERVAL '1' day;
|
||||
SELECT CAST("2022-01-01" AS DATE) + INTERVAL '1' "day" AS "_col_0";
|
||||
|
||||
--------------------------------------
|
||||
-- Ensure boolean predicates
|
||||
--------------------------------------
|
||||
|
|
40
tests/fixtures/optimizer/optimizer.sql
vendored
40
tests/fixtures/optimizer/optimizer.sql
vendored
|
@ -461,3 +461,43 @@ SELECT
|
|||
*
|
||||
FROM "db1"."tbl" AS "tbl"
|
||||
CROSS JOIN "db2"."tbl" AS "tbl_2";
|
||||
|
||||
SELECT
|
||||
*,
|
||||
IFF(
|
||||
IFF(
|
||||
uploaded_at >= '2022-06-16',
|
||||
'workday',
|
||||
'bamboohr'
|
||||
) = source_system,
|
||||
1,
|
||||
0
|
||||
) AS sort_order
|
||||
FROM
|
||||
unioned
|
||||
WHERE
|
||||
(
|
||||
source_system = 'workday'
|
||||
AND '9999-01-01' >= '2022-06-16'
|
||||
)
|
||||
OR (
|
||||
source_system = 'bamboohr'
|
||||
AND '0001-01-01' < '2022-06-16'
|
||||
) QUALIFY ROW_NUMBER() OVER (
|
||||
PARTITION BY unique_filter_key
|
||||
ORDER BY
|
||||
sort_order DESC,
|
||||
1
|
||||
) = 1;
|
||||
SELECT
|
||||
*,
|
||||
IFF(
|
||||
IFF("unioned"."uploaded_at" >= '2022-06-16', 'workday', 'bamboohr') = "unioned"."source_system",
|
||||
1,
|
||||
0
|
||||
) AS "sort_order"
|
||||
FROM "unioned" AS "unioned"
|
||||
WHERE
|
||||
"unioned"."source_system" = 'bamboohr' OR "unioned"."source_system" = 'workday'
|
||||
QUALIFY
|
||||
ROW_NUMBER() OVER (PARTITION BY "unioned"."unique_filter_key" ORDER BY "unioned"."sort_order" DESC, 1) = 1;
|
||||
|
|
30
tests/fixtures/optimizer/qualify_columns.sql
vendored
30
tests/fixtures/optimizer/qualify_columns.sql
vendored
|
@ -92,6 +92,12 @@ SELECT SUM(x.a) AS c FROM x AS x JOIN y AS y ON x.b = y.b GROUP BY y.c;
|
|||
SELECT COALESCE(x.a) AS d FROM x JOIN y ON x.b = y.b GROUP BY d;
|
||||
SELECT COALESCE(x.a) AS d FROM x AS x JOIN y AS y ON x.b = y.b GROUP BY COALESCE(x.a);
|
||||
|
||||
SELECT a + 1 AS d FROM x WHERE d > 1;
|
||||
SELECT x.a + 1 AS d FROM x AS x WHERE x.a + 1 > 1;
|
||||
|
||||
SELECT a + 1 AS d, d + 2 FROM x;
|
||||
SELECT x.a + 1 AS d, x.a + 1 + 2 AS _col_1 FROM x AS x;
|
||||
|
||||
SELECT a AS a, b FROM x ORDER BY a;
|
||||
SELECT x.a AS a, x.b AS b FROM x AS x ORDER BY a;
|
||||
|
||||
|
@ -282,6 +288,30 @@ SELECT COALESCE(x.b, y.b) AS b FROM x AS x JOIN y AS y ON x.b = y.b WHERE COALES
|
|||
SELECT b FROM x JOIN y USING (b) JOIN z USING (b);
|
||||
SELECT COALESCE(x.b, y.b, z.b) AS b FROM x AS x JOIN y AS y ON x.b = y.b JOIN z AS z ON x.b = z.b;
|
||||
|
||||
SELECT * FROM x JOIN y USING(b);
|
||||
SELECT x.a AS a, COALESCE(x.b, y.b) AS b, y.c AS c FROM x AS x JOIN y AS y ON x.b = y.b;
|
||||
|
||||
SELECT x.* FROM x JOIN y USING(b);
|
||||
SELECT x.a AS a, COALESCE(x.b, y.b) AS b FROM x AS x JOIN y AS y ON x.b = y.b;
|
||||
|
||||
SELECT * FROM x LEFT JOIN y USING(b);
|
||||
SELECT x.a AS a, COALESCE(x.b, y.b) AS b, y.c AS c FROM x AS x LEFT JOIN y AS y ON x.b = y.b;
|
||||
|
||||
SELECT b FROM x JOIN y USING(b);
|
||||
SELECT COALESCE(x.b, y.b) AS b FROM x AS x JOIN y AS y ON x.b = y.b;
|
||||
|
||||
SELECT b, c FROM x JOIN y USING(b);
|
||||
SELECT COALESCE(x.b, y.b) AS b, y.c AS c FROM x AS x JOIN y AS y ON x.b = y.b;
|
||||
|
||||
SELECT b, c FROM y JOIN z USING(b, c);
|
||||
SELECT COALESCE(y.b, z.b) AS b, COALESCE(y.c, z.c) AS c FROM y AS y JOIN z AS z ON y.b = z.b AND y.c = z.c;
|
||||
|
||||
SELECT * FROM y JOIN z USING(b, c);
|
||||
SELECT COALESCE(y.b, z.b) AS b, COALESCE(y.c, z.c) AS c FROM y AS y JOIN z AS z ON y.b = z.b AND y.c = z.c;
|
||||
|
||||
SELECT * FROM y JOIN z USING(b, c) WHERE b = 2 AND c = 3;
|
||||
SELECT COALESCE(y.b, z.b) AS b, COALESCE(y.c, z.c) AS c FROM y AS y JOIN z AS z ON y.b = z.b AND y.c = z.c WHERE COALESCE(y.b, z.b) = 2 AND COALESCE(y.c, z.c) = 3;
|
||||
|
||||
--------------------------------------
|
||||
-- Hint with table reference
|
||||
--------------------------------------
|
||||
|
|
16
tests/fixtures/optimizer/simplify.sql
vendored
16
tests/fixtures/optimizer/simplify.sql
vendored
|
@ -141,6 +141,9 @@ A OR C;
|
|||
(A OR C) AND (A OR B OR C);
|
||||
A OR C;
|
||||
|
||||
A AND (B AND C) AND (D AND E);
|
||||
A AND B AND C AND D AND E;
|
||||
|
||||
--------------------------------------
|
||||
-- Elimination
|
||||
--------------------------------------
|
||||
|
@ -249,6 +252,12 @@ x = x;
|
|||
(('a' = 'a') AND TRUE and NOT FALSE);
|
||||
TRUE;
|
||||
|
||||
(x = y) and z;
|
||||
x = y AND z;
|
||||
|
||||
x * (1 - y);
|
||||
x * (1 - y);
|
||||
|
||||
--------------------------------------
|
||||
-- Literals
|
||||
--------------------------------------
|
||||
|
@ -310,7 +319,7 @@ TRUE;
|
|||
8.0;
|
||||
|
||||
6 - 2 + 4 * 2 + a;
|
||||
12 + a;
|
||||
a + 12;
|
||||
|
||||
a + 1 + 1 + 2;
|
||||
a + 4;
|
||||
|
@ -367,7 +376,7 @@ interval '1' year + date '1998-01-01';
|
|||
CAST('1999-01-01' AS DATE);
|
||||
|
||||
interval '1' year + date '1998-01-01' + 3 * 7 * 4;
|
||||
CAST('1999-01-01' AS DATE) + 84;
|
||||
84 + CAST('1999-01-01' AS DATE);
|
||||
|
||||
date '1998-12-01' - interval '90' foo;
|
||||
CAST('1998-12-01' AS DATE) - INTERVAL '90' foo;
|
||||
|
@ -554,3 +563,6 @@ x <= 10 AND x >= 9;
|
|||
|
||||
1 < x AND 3 < x;
|
||||
x > 3;
|
||||
|
||||
'a' < 'b';
|
||||
TRUE;
|
||||
|
|
12613
tests/fixtures/optimizer/tpc-ds/tpc-ds.sql
vendored
Normal file
12613
tests/fixtures/optimizer/tpc-ds/tpc-ds.sql
vendored
Normal file
File diff suppressed because it is too large
Load diff
36
tests/fixtures/optimizer/tpc-h/tpc-h.sql
vendored
36
tests/fixtures/optimizer/tpc-h/tpc-h.sql
vendored
|
@ -390,9 +390,9 @@ SELECT
|
|||
)) AS "revenue"
|
||||
FROM "supplier" AS "supplier"
|
||||
JOIN "lineitem" AS "lineitem"
|
||||
ON CAST("lineitem"."l_shipdate" AS DATE) <= CAST('1996-12-31' AS DATE)
|
||||
ON "supplier"."s_suppkey" = "lineitem"."l_suppkey"
|
||||
AND CAST("lineitem"."l_shipdate" AS DATE) <= CAST('1996-12-31' AS DATE)
|
||||
AND CAST("lineitem"."l_shipdate" AS DATE) >= CAST('1995-01-01' AS DATE)
|
||||
AND "supplier"."s_suppkey" = "lineitem"."l_suppkey"
|
||||
JOIN "orders" AS "orders"
|
||||
ON "orders"."o_orderkey" = "lineitem"."l_orderkey"
|
||||
JOIN "customer" AS "customer"
|
||||
|
@ -743,11 +743,11 @@ SELECT
|
|||
FROM "orders" AS "orders"
|
||||
JOIN "lineitem" AS "lineitem"
|
||||
ON "lineitem"."l_commitdate" < "lineitem"."l_receiptdate"
|
||||
AND CAST("lineitem"."l_receiptdate" AS DATE) < CAST('1995-01-01' AS DATE)
|
||||
AND CAST("lineitem"."l_receiptdate" AS DATE) >= CAST('1994-01-01' AS DATE)
|
||||
AND "lineitem"."l_shipdate" < "lineitem"."l_commitdate"
|
||||
AND "lineitem"."l_shipmode" IN ('MAIL', 'SHIP')
|
||||
AND "orders"."o_orderkey" = "lineitem"."l_orderkey"
|
||||
AND CAST("lineitem"."l_receiptdate" AS DATE) < CAST('1995-01-01' AS DATE)
|
||||
AND CAST("lineitem"."l_receiptdate" AS DATE) >= CAST('1994-01-01' AS DATE)
|
||||
GROUP BY
|
||||
"lineitem"."l_shipmode"
|
||||
ORDER BY
|
||||
|
@ -1224,10 +1224,18 @@ where
|
|||
order by
|
||||
s_name;
|
||||
WITH "_u_0" AS (
|
||||
SELECT
|
||||
"part"."p_partkey" AS "p_partkey"
|
||||
FROM "part" AS "part"
|
||||
WHERE
|
||||
"part"."p_name" LIKE 'forest%'
|
||||
GROUP BY
|
||||
"part"."p_partkey"
|
||||
), "_u_1" AS (
|
||||
SELECT
|
||||
0.5 * SUM("lineitem"."l_quantity") AS "_col_0",
|
||||
"lineitem"."l_partkey" AS "_u_1",
|
||||
"lineitem"."l_suppkey" AS "_u_2"
|
||||
"lineitem"."l_partkey" AS "_u_2",
|
||||
"lineitem"."l_suppkey" AS "_u_3"
|
||||
FROM "lineitem" AS "lineitem"
|
||||
WHERE
|
||||
CAST("lineitem"."l_shipdate" AS DATE) < CAST('1995-01-01' AS DATE)
|
||||
|
@ -1235,24 +1243,16 @@ WITH "_u_0" AS (
|
|||
GROUP BY
|
||||
"lineitem"."l_partkey",
|
||||
"lineitem"."l_suppkey"
|
||||
), "_u_3" AS (
|
||||
SELECT
|
||||
"part"."p_partkey" AS "p_partkey"
|
||||
FROM "part" AS "part"
|
||||
WHERE
|
||||
"part"."p_name" LIKE 'forest%'
|
||||
GROUP BY
|
||||
"part"."p_partkey"
|
||||
), "_u_4" AS (
|
||||
SELECT
|
||||
"partsupp"."ps_suppkey" AS "ps_suppkey"
|
||||
FROM "partsupp" AS "partsupp"
|
||||
LEFT JOIN "_u_0" AS "_u_0"
|
||||
ON "_u_0"."_u_1" = "partsupp"."ps_partkey" AND "_u_0"."_u_2" = "partsupp"."ps_suppkey"
|
||||
LEFT JOIN "_u_3" AS "_u_3"
|
||||
ON "partsupp"."ps_partkey" = "_u_3"."p_partkey"
|
||||
ON "partsupp"."ps_partkey" = "_u_0"."p_partkey"
|
||||
LEFT JOIN "_u_1" AS "_u_1"
|
||||
ON "_u_1"."_u_2" = "partsupp"."ps_partkey" AND "_u_1"."_u_3" = "partsupp"."ps_suppkey"
|
||||
WHERE
|
||||
"partsupp"."ps_availqty" > "_u_0"."_col_0" AND NOT "_u_3"."p_partkey" IS NULL
|
||||
"partsupp"."ps_availqty" > "_u_1"."_col_0" AND NOT "_u_0"."p_partkey" IS NULL
|
||||
GROUP BY
|
||||
"partsupp"."ps_suppkey"
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue