should be it

This commit is contained in:
2025-10-24 19:21:19 -05:00
parent a4b23fc57c
commit f09560c7b1
14047 changed files with 3161551 additions and 1 deletions

View 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

View 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.*

View 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".*

View 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.*

View 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

View 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.*