Files
email-tracker/external/duckdb/test/sql/explain/test_explain_analyze.test
2025-10-24 19:21:19 -05:00

99 lines
2.5 KiB
SQL

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