Adding upstream version 11.4.5.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
36706608dc
commit
3e1362a879
131 changed files with 53004 additions and 37079 deletions
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