should be it
This commit is contained in:
109
external/duckdb/test/sql/explain/explain_all_statements.test
vendored
Normal file
109
external/duckdb/test/sql/explain/explain_all_statements.test
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
# name: test/sql/explain/explain_all_statements.test
|
||||
# description: Test explain on various statements
|
||||
# group: [explain]
|
||||
|
||||
statement ok
|
||||
pragma enable_verification
|
||||
|
||||
statement ok
|
||||
explain PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
explain CREATE TABLE integers(i INTEGER);
|
||||
|
||||
# oops we didn't actually create it
|
||||
statement error
|
||||
explain SELECT * FROM integers;
|
||||
----
|
||||
|
||||
statement error
|
||||
explain INSERT INTO integers VALUES (1);
|
||||
----
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i INTEGER);
|
||||
|
||||
statement ok
|
||||
explain SELECT * FROM integers;
|
||||
|
||||
statement ok
|
||||
explain INSERT INTO integers VALUES (1);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1);
|
||||
|
||||
statement ok
|
||||
explain DELETE FROM integers WHERE i=1
|
||||
|
||||
statement ok
|
||||
explain UPDATE integers SET i=i+1
|
||||
|
||||
statement ok
|
||||
explain CREATE INDEX i_index ON integers(i)
|
||||
|
||||
statement ok
|
||||
explain ALTER TABLE integers RENAME TO integers2
|
||||
|
||||
statement ok
|
||||
explain ALTER TABLE integers ADD COLUMN j INTEGER
|
||||
|
||||
statement ok
|
||||
explain ALTER TABLE integers RENAME i TO k
|
||||
|
||||
query I
|
||||
SELECT * FROM integers
|
||||
----
|
||||
1
|
||||
|
||||
statement ok
|
||||
explain PREPARE v1 AS SELECT * FROM integers WHERE i=?
|
||||
|
||||
statement ok
|
||||
PREPARE v1 AS SELECT * FROM integers WHERE i=?
|
||||
|
||||
statement ok
|
||||
explain EXECUTE v1(1);
|
||||
|
||||
statement ok
|
||||
explain DEALLOCATE v1
|
||||
|
||||
query I
|
||||
EXECUTE v1(1)
|
||||
----
|
||||
1
|
||||
|
||||
statement ok
|
||||
explain VACUUM
|
||||
|
||||
statement ok
|
||||
explain CREATE SEQUENCE seq
|
||||
|
||||
statement ok
|
||||
explain CREATE VIEW v1 AS SELECT * FROM integers
|
||||
|
||||
statement ok
|
||||
explain DROP TABLE integers
|
||||
|
||||
statement ok
|
||||
explain CHECKPOINT
|
||||
|
||||
statement ok
|
||||
explain BEGIN TRANSACTION
|
||||
|
||||
statement ok
|
||||
explain SET memory_limit='1GB'
|
||||
|
||||
statement ok
|
||||
explain CREATE MACRO f(x) AS x+1
|
||||
|
||||
statement error
|
||||
SELECT f(1)
|
||||
----
|
||||
|
||||
statement ok
|
||||
CREATE MACRO f(x) AS x+1
|
||||
|
||||
query I
|
||||
SELECT f(1)
|
||||
----
|
||||
2
|
||||
20
external/duckdb/test/sql/explain/explain_execute.test
vendored
Normal file
20
external/duckdb/test/sql/explain/explain_execute.test
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
# name: test/sql/explain/explain_execute.test
|
||||
# description: Test explain
|
||||
# group: [explain]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i INTEGER, j INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1, 1), (2, 2), (3, 3), (NULL, NULL)
|
||||
|
||||
statement ok
|
||||
PREPARE query AS SELECT * FROM integers
|
||||
|
||||
query II
|
||||
EXPLAIN EXECUTE query
|
||||
----
|
||||
physical_plan <REGEX>:.*SEQ_SCAN.*
|
||||
47
external/duckdb/test/sql/explain/test_explain.test
vendored
Normal file
47
external/duckdb/test/sql/explain/test_explain.test
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
# name: test/sql/explain/test_explain.test
|
||||
# description: Test explain
|
||||
# group: [explain]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i INTEGER, j INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1, 1), (2, 2), (3, 3), (NULL, NULL)
|
||||
|
||||
statement ok
|
||||
EXPLAIN SELECT * FROM integers
|
||||
|
||||
statement ok
|
||||
EXPLAIN select sum(i), j, sum(i), j from integers group by j having j < 10;
|
||||
|
||||
statement ok
|
||||
EXPLAIN update integers set i=i+1;
|
||||
|
||||
statement ok
|
||||
EXPLAIN delete from integers where i=1;
|
||||
|
||||
statement ok
|
||||
pragma explain_output='optimized_only'
|
||||
|
||||
query II
|
||||
EXPLAIN (FORMAT JSON) SELECT SUM(i) FROM (SELECT * FROM integers i1, integers i2 UNION ALL SELECT * FROM integers i1, integers i2);
|
||||
----
|
||||
logical_opt <REGEX>:.*"name": "CROSS_PRODUCT".*
|
||||
|
||||
query II
|
||||
EXPLAIN (FORMAT HTML) SELECT SUM(i) FROM (SELECT * FROM integers i1, integers i2 UNION ALL SELECT * FROM integers i1, integers i2);
|
||||
----
|
||||
logical_opt <REGEX>:.*<div class="title">CROSS_PRODUCT</div>.*
|
||||
|
||||
query II
|
||||
EXPLAIN (FORMAT GRAPHVIZ) SELECT SUM(i) FROM (SELECT * FROM integers i1, integers i2 UNION ALL SELECT * FROM integers i1, integers i2);
|
||||
----
|
||||
logical_opt <REGEX>:.*node_0_0 -> node_0_1;.*
|
||||
|
||||
query II
|
||||
EXPLAIN (FORMAT YAML) SELECT SUM(i) FROM (SELECT * FROM integers i1, integers i2 UNION ALL SELECT * FROM integers i1, integers i2);
|
||||
----
|
||||
logical_opt <REGEX>:.*- name: "CROSS_PRODUCT".*
|
||||
98
external/duckdb/test/sql/explain/test_explain_analyze.test
vendored
Normal file
98
external/duckdb/test/sql/explain/test_explain_analyze.test
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
# name: test/sql/explain/test_explain_analyze.test
|
||||
# description: Test explain analyze
|
||||
# group: [explain]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers AS SELECT * FROM range(100) tbl(i);
|
||||
|
||||
query II
|
||||
EXPLAIN ANALYZE SELECT SUM(i) FROM integers
|
||||
----
|
||||
analyzed_plan <REGEX>:.*integers.*
|
||||
|
||||
query II
|
||||
EXPLAIN (ANALYZE) SELECT SUM(i) FROM (SELECT * FROM integers i1, integers i2 UNION ALL SELECT * FROM integers i1, integers i2);
|
||||
----
|
||||
analyzed_plan <REGEX>:.*CROSS_PRODUCT.*
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_profiling
|
||||
|
||||
query II
|
||||
EXPLAIN ANALYZE SELECT SUM(i) FROM (SELECT * FROM integers i1, integers i2 UNION ALL SELECT * FROM integers i1, integers i2);
|
||||
----
|
||||
analyzed_plan <REGEX>:.*CROSS_PRODUCT.*
|
||||
|
||||
statement ok
|
||||
PRAGMA disable_profiling
|
||||
|
||||
query II
|
||||
EXPLAIN ANALYZE SELECT SUM(i) FROM (SELECT * FROM integers i1, integers i2 UNION ALL SELECT * FROM integers i1, integers i2);
|
||||
----
|
||||
analyzed_plan <REGEX>:.*CROSS_PRODUCT.*
|
||||
|
||||
query II
|
||||
EXPLAIN (ANALYZE, FORMAT JSON) SELECT SUM(i) FROM (SELECT * FROM integers i1, integers i2 UNION ALL SELECT * FROM integers i1, integers i2);
|
||||
----
|
||||
analyzed_plan <REGEX>:.*"operator_type": "CROSS_PRODUCT".*
|
||||
|
||||
query II
|
||||
EXPLAIN (ANALYZE, FORMAT JSON) SELECT SUM(i) FROM (SELECT * FROM integers i1, integers i2 UNION ALL SELECT * FROM integers i1, integers i2);
|
||||
----
|
||||
analyzed_plan <REGEX>:.*"operator_name": "CROSS_PRODUCT".*
|
||||
|
||||
statement ok
|
||||
PRAGMA profiling_output='__TEST_DIR__/test.json'
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_profiling='json'
|
||||
|
||||
statement ok
|
||||
SELECT 42
|
||||
|
||||
statement ok
|
||||
PRAGMA disable_profiling
|
||||
|
||||
query I nosort json_output
|
||||
SELECT * FROM read_csv('__TEST_DIR__/test.json', columns={'json': 'VARCHAR'}, sep='🦆');
|
||||
----
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_profiling='json'
|
||||
|
||||
query II
|
||||
EXPLAIN ANALYZE SELECT SUM(i) FROM integers
|
||||
----
|
||||
analyzed_plan <REGEX>:.*"extra_info".*integers.*:.*
|
||||
|
||||
statement ok
|
||||
PRAGMA disable_profiling
|
||||
|
||||
statement ok
|
||||
PRAGMA profiling_output='__TEST_DIR__/test_2.json'
|
||||
|
||||
query I nosort json_output
|
||||
SELECT * FROM read_csv('__TEST_DIR__/test.json', columns={'json': 'VARCHAR'}, sep='🦆');
|
||||
----
|
||||
|
||||
query II
|
||||
EXPLAIN (ANALYZE, FORMAT graphviz) SELECT SUM(i) FROM integers
|
||||
----
|
||||
analyzed_plan <REGEX>:.+EXPLAIN_ANALYZE.*
|
||||
|
||||
query II
|
||||
EXPLAIN (ANALYZE, FORMAT html) SELECT SUM(i) FROM integers
|
||||
----
|
||||
analyzed_plan <REGEX>:.+<div class="title">EXPLAIN_ANALYZE</div>.*
|
||||
|
||||
# Make sure that EXPLAIN ANALYZE still works when no output is specified
|
||||
statement ok
|
||||
PRAGMA enable_profiling = 'no_output';
|
||||
|
||||
query II
|
||||
EXPLAIN ANALYZE SELECT 42;
|
||||
----
|
||||
analyzed_plan <REGEX>:.+EXPLAIN_ANALYZE.*
|
||||
43
external/duckdb/test/sql/explain/test_explain_analyze_tpch.test_slow
vendored
Normal file
43
external/duckdb/test/sql/explain/test_explain_analyze_tpch.test_slow
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
# name: test/sql/explain/test_explain_analyze_tpch.test_slow
|
||||
# description: Test explain analyze TPC-H
|
||||
# group: [explain]
|
||||
|
||||
require tpch
|
||||
|
||||
statement ok
|
||||
CALL dbgen(sf=0.01);
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_profiling
|
||||
|
||||
loop i 0 2
|
||||
|
||||
query II
|
||||
EXPLAIN ANALYZE SELECT
|
||||
l_returnflag,
|
||||
l_linestatus,
|
||||
sum(l_quantity) AS sum_qty,
|
||||
sum(l_extendedprice) AS sum_base_price,
|
||||
sum(l_extendedprice * (1 - l_discount)) AS sum_disc_price,
|
||||
sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) AS sum_charge,
|
||||
avg(l_quantity) AS avg_qty,
|
||||
avg(l_extendedprice) AS avg_price,
|
||||
avg(l_discount) AS avg_disc,
|
||||
count(*) AS count_order
|
||||
FROM
|
||||
lineitem
|
||||
WHERE
|
||||
l_shipdate <= CAST('1998-09-02' AS date)
|
||||
GROUP BY
|
||||
l_returnflag,
|
||||
l_linestatus
|
||||
ORDER BY
|
||||
l_returnflag,
|
||||
l_linestatus;
|
||||
----
|
||||
analyzed_plan <REGEX>:.*lineitem.*
|
||||
|
||||
statement ok
|
||||
PRAGMA disable_profiling
|
||||
|
||||
endloop
|
||||
17
external/duckdb/test/sql/explain/test_explain_table_scan.test
vendored
Normal file
17
external/duckdb/test/sql/explain/test_explain_table_scan.test
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
# name: test/sql/explain/test_explain_table_scan.test
|
||||
# description: Test explain of table scans
|
||||
# group: [explain]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i INTEGER, j INTEGER)
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1, 1), (2, 2), (3, 3), (NULL, NULL)
|
||||
|
||||
query II
|
||||
EXPLAIN SELECT * FROM integers
|
||||
----
|
||||
physical_plan <REGEX>:.*Table: integers.*
|
||||
Reference in New Issue
Block a user