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,26 @@
# name: test/sql/show_select/describe_rowid.test
# group: [show_select]
statement ok
create table sometable (
column1 varchar
);
statement ok
insert into sometable values
('abc');
statement ok
create view someview as select
rowid as table_rowid,
*
from sometable;
statement ok
select * from someview;
query II
select column_name, column_type from (describe someview);
----
table_rowid BIGINT
column1 VARCHAR

View File

@@ -0,0 +1,43 @@
# name: test/sql/show_select/describe_subquery.test
# description: Test describe in subquery
# group: [show_select]
statement ok
PRAGMA enable_verification
query I
SELECT column_name FROM (DESCRIBE SELECT 42 AS a)
----
a
query I
SELECT t.column_name FROM (DESCRIBE SELECT 42 AS a) t
----
a
statement ok
(DESCRIBE SELECT 42 AS a)
statement ok
CREATE TABLE t AS SELECT 42 AS a
query I
SELECT t.column_name FROM (DESCRIBE t) t
----
a
statement ok
FROM (SHOW databases) t
query I
SELECT column_name FROM (DESCRIBE ( DESCRIBE SELECT * FROM (SELECT 32 as a)));
----
column_name
column_type
null
key
default
extra
statement ok
(DESCRIBE (values(42))) UNION ALL (DESCRIBE (values(42)));

View File

@@ -0,0 +1,14 @@
# name: test/sql/show_select/show_quote_identifier.test
# description: Test show with a quote in an identifier
# group: [show_select]
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE "s1"".tbl"(i INT);
query II
SELECT column_name, column_type FROM (DESCRIBE "s1"".tbl")
----
i INTEGER

View File

@@ -0,0 +1,123 @@
# name: test/sql/show_select/show_select_constraints.test
# description: Test show select constraints
# group: [show_select]
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE integers(c1 INTEGER PRIMARY KEY, c2 INT NOT NULL, c3 INT DEFAULT 42, c4 INT UNIQUE, c5 INT);
statement ok
INSERT INTO integers VALUES (42, 42, 42, 42, 42)
statement ok
INSERT INTO integers VALUES (84, 84, 84, 84, 84)
# show on the table directly vs show is identical
query IIIIII nosort describe_result
DESCRIBE SELECT * FROM integers
----
query IIIIII nosort describe_result
DESCRIBE integers
----
# projection
query II
SELECT column_name, key FROM (DESCRIBE SELECT c4, c1 FROM integers)
----
c4 UNI
c1 PRI
# filter
query II
SELECT column_name, key FROM (DESCRIBE SELECT c4 FROM integers WHERE c1=42)
----
c4 UNI
# limit
query II
SELECT column_name, key FROM (DESCRIBE SELECT c4 FROM integers LIMIT 5)
----
c4 UNI
# top n
query II
SELECT column_name, key FROM (DESCRIBE SELECT c4 FROM integers ORDER BY c1 LIMIT 5)
----
c4 UNI
# sample
query II
SELECT column_name, key FROM (DESCRIBE SELECT c4 FROM integers USING SAMPLE 5)
----
c4 UNI
# cross product
query II
SELECT column_name, key FROM (DESCRIBE SELECT c4 FROM integers, (SELECT 84))
----
c4 UNI
# join
query II
SELECT column_name, key FROM (DESCRIBE SELECT t.c1, integers.c1 FROM integers JOIN (SELECT 84 c1) t USING (c1))
----
c1 NULL
c1 PRI
# views
statement ok
CREATE VIEW my_view AS SELECT * FROM integers
query II
SELECT column_name, key FROM (DESCRIBE SELECT c4, c1 FROM my_view)
----
c4 UNI
c1 PRI
# constraint information does not persist through expressions
query II
SELECT column_name, key FROM (DESCRIBE SELECT c4 + 1 AS expr FROM integers LIMIT 5)
----
expr NULL
# Alias and Actual column name
statement ok
CREATE TABLE base_table(base_name int);
# base without alias
# column_name | column_type | null | key | default | extra
query TTTITI
DESCRIBE base_table
----
base_name INTEGER YES NULL NULL NULL
# With Alias
# column_name | column_type | null | key | default | extra
query TTTITI
DESCRIBE SELECT base_name AS alias_name FROM base_table
----
alias_name INTEGER YES NULL NULL NULL
# With Alias 2 Deep
# column_name | column_type | null | key | default | extra
query TTTITI
DESCRIBE SELECT alias_name as alias_alias_name FROM (SELECT base_name AS alias_name FROM base_table)
----
alias_alias_name INTEGER YES NULL NULL NULL
# Alias inline
# column_name | column_type | null | key | default | extra
query TTTITI
DESCRIBE SELECT base_name AS alias_name FROM VALUES (1) AS base_table(base_name)
----
alias_name INTEGER YES NULL NULL NULL
# Alias CTE
# column_name | column_type | null | key | default | extra
query TTTITI
DESCRIBE WITH cte_rel AS (SELECT 1 as base_name) SELECT base_name as alias_name FROM cte_rel;
----
alias_name INTEGER YES NULL NULL NULL

View File

@@ -0,0 +1,18 @@
# name: test/sql/show_select/summarize_subquery.test
# group: [show_select]
statement ok
pragma enable_verification;
query II
SELECT column_name, min FROM (SUMMARIZE SELECT 42 AS a);
----
a 42
statement ok
CREATE TABLE tbl AS SELECT 42 AS a
query II
SELECT column_name, min FROM (SUMMARIZE tbl);
----
a 42

View File

@@ -0,0 +1,30 @@
# name: test/sql/show_select/test_describe_all.test
# description: Test describe all
# group: [show_select]
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE integers(i INTEGER, j INTEGER, a INTEGER);
statement ok
DESCRIBE;
query TTTTTT
DESCRIBE
----
memory main integers [i, j, a] [INTEGER, INTEGER, INTEGER] false
# Issue 6393
statement ok
DROP TABLE integers
statement ok
CREATE TABLE t(plant TEXT, dt DATE, mwh BIGINT);
query TTTTTT
DESCRIBE;
----
memory main t [plant, dt, mwh] [VARCHAR, DATE, BIGINT] false

View File

@@ -0,0 +1,71 @@
# name: test/sql/show_select/test_describe_quoted.test
# group: [show_select]
statement ok
pragma enable_verification;
# Quoted table name, no schema name
statement ok
create table "a.b.c" (x int);
query IIIIII
describe "a.b.c";
----
x INTEGER YES NULL NULL NULL
statement ok
create schema defg;
statement ok
drop table "a.b.c";
statement ok
create table defg."a.b.c" (x int);
# Non-quoted schema name, quoted table name
query IIIIII
describe defg."a.b.c";
----
x INTEGER YES NULL NULL NULL
statement ok
drop table defg."a.b.c";
statement ok
create table defg.abc (x int);
# Non-quoted schema name, non-quoted table name
query IIIIII
describe defg.abc;
----
x INTEGER YES NULL NULL NULL
statement ok
drop table defg.abc;
statement ok
drop schema defg;
statement ok
create schema "d.e.f.g";
statement ok
create table "d.e.f.g"."a.b.c" (x int);
# Quoted schema name, quoted table name
query IIIIII
describe "d.e.f.g"."a.b.c";
----
x INTEGER YES NULL NULL NULL
statement ok
drop table "d.e.f.g"."a.b.c"
statement ok
create table "d.e.f.g".abc (x int);
# Quoted schema name, non-quoted table name
query IIIIII
describe "d.e.f.g".abc;
----
x INTEGER YES NULL NULL NULL

View File

@@ -0,0 +1,53 @@
# name: test/sql/show_select/test_show_select.test
# description: Test show select
# group: [show_select]
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE integers(i INTEGER, j INTEGER)
statement ok
CREATE TABLE integers2 (i INTEGER, j INTEGER, st VARCHAR, d DATE)
statement ok
INSERT INTO integers VALUES (1, 1), (2, 2), (3, 3), (NULL, NULL)
statement ok
INSERT INTO integers2 VALUES (1, 30, 'a', '1992-01-01'), (8, 12, 'b', '1992-01-01'), (3, 24, 'c', '1992-01-01'), (9, 16, 'd', '1992-01-01'), (10, NULL, 'e', '1992-01-01')
# column_name | column_type | null | key | default | extra
query TTTTTT
SHOW SELECT * FROM integers
----
i INTEGER YES NULL NULL NULL
j INTEGER YES NULL NULL NULL
# column_name | column_type | null | key | default | extra
query TTTTTT
DESCRIBE SELECT * FROM integers
----
i INTEGER YES NULL NULL NULL
j INTEGER YES NULL NULL NULL
# column_name | column_type | null | key | default | extra
query TTTTTT
SHOW SELECT i FROM integers
----
i INTEGER YES NULL NULL NULL
# column_name | column_type | null | key | default | extra
query TTTTTT
SHOW SELECT integers.i, integers2.st, integers2.d FROM integers, integers2 WHERE integers.i=integers2.i
----
i INTEGER YES NULL NULL NULL
st VARCHAR YES NULL NULL NULL
d DATE YES NULL NULL NULL
# column_name | column_type | null | key | default | extra
query TTTTTT
SHOW SELECT SUM(i) AS sum1, j FROM integers GROUP BY j HAVING j < 10
----
sum1 HUGEINT YES NULL NULL NULL
j INTEGER YES NULL NULL NULL

View File

@@ -0,0 +1,85 @@
# name: test/sql/show_select/test_summarize.test
# description: Test summarize command
# group: [show_select]
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE types(i INTEGER, j VARCHAR, k HUGEINT, d DOUBLE, e BLOB);
statement ok
INSERT INTO types VALUES
(1, 'hello', 12, 0.5, BLOB 'a\x00b\x00c'),
(2, 'world', -12, -0.5, BLOB ''),
(3, NULL, NULL, NULL, NULL);
query IIII
SELECT UNNEST(['i', 'j', 'k', 'd', 'e']) column_names,
UNNEST(['INTEGER', 'VARCHAR', 'HUGEINT', 'DOUBLE', 'BLOB']) column_types,
UNNEST([MIN(i)::VARCHAR, MIN(j)::VARCHAR, MIN(k)::VARCHAR, MIN(d)::VARCHAR, MIN(e)::VARCHAR]) min,
UNNEST([MAX(i)::VARCHAR, MAX(j)::VARCHAR, MAX(k)::VARCHAR, MAX(d)::VARCHAR, MAX(e)::VARCHAR]) max
FROM (SELECT * FROM types) tbl
----
i INTEGER 1 3
j VARCHAR hello world
k HUGEINT -12 12
d DOUBLE -0.5 0.5
e BLOB (empty) a\x00b\x00c
query IIIIIIIIIIII
SUMMARIZE types;
----
i INTEGER 1 3 3 2.0 1.0 1 2 3 3 0.0
j VARCHAR hello world 2 NULL NULL NULL NULL NULL 3 33.33
k HUGEINT -12 12 2 0.0 16.97056274847714 -12 0 12 3 33.33
d DOUBLE -0.5 0.5 2 0.0 0.7071067811865476 -0.5 0.0 0.5 3 33.33
e BLOB (empty) a\x00b\x00c 2 NULL NULL NULL NULL NULL 3 33.33
query IIIIIIIIIIII
SUMMARIZE SELECT * FROM types;
----
i INTEGER 1 3 3 2.0 1.0 1 2 3 3 0.0
j VARCHAR hello world 2 NULL NULL NULL NULL NULL 3 33.33
k HUGEINT -12 12 2 0.0 16.97056274847714 -12 0 12 3 33.33
d DOUBLE -0.5 0.5 2 0.0 0.7071067811865476 -0.5 0.0 0.5 3 33.33
e BLOB (empty) a\x00b\x00c 2 NULL NULL NULL NULL NULL 3 33.33
# Temporal types
query IIIIIIIIIIII
summarize
from range('2024-01-01'::TIMESTAMP, '2024-04-10'::TIMESTAMP, INTERVAL 1 DAY);
----
range TIMESTAMP 2024-01-01 00:00:00 2024-04-09 00:00:00 99 2024-02-19 12:00:00 NULL 2024-01-25 12:00:00 2024-02-19 12:00:00 2024-03-15 12:00:00 100 0.00
query IIIIIIIIIIII
summarize
SELECT range::DATE AS range from range('2024-01-01'::DATE, '2024-04-10'::DATE, INTERVAL 1 DAY);
----
range DATE 2024-01-01 2024-04-09 98 2024-02-19 12:00:00 NULL 2024-01-26 2024-02-19 2024-03-16 100 0.00
query IIIIIIIIIIII
summarize
SELECT range::TIME AS range from range('2024-01-01'::DATE, '2024-04-10'::DATE, INTERVAL 1 HOUR);
----
range TIME 00:00:00 23:00:00 28 11:30:00 NULL 05:24:35.480769 11:28:55.400975 17:30:41.666667 2400 0.00
# TIMETZ quantiles. Note these are fuzzy because we use DOUBLEs in the sketch.
query IIIIIIIIIIII
SUMMARIZE (SELECT '1:02:03.000000+05:30'::TIMETZ AS ttz);
----
ttz TIME WITH TIME ZONE 01:02:03+05:30 01:02:03+05:30 1 19:32:03+00 NULL 01:02:42+05:30:39 01:02:42+05:30:39 01:02:42+05:30:39 1 0.00
statement ok
SUMMARIZE VALUES (1.0),(6754950520);
# Various overflows
statement ok
SUMMARIZE SELECT 9223372036854775296;
statement ok
summarize select bigint from test_all_types();
statement ok
summarize select 9223372036854775295;

View File

@@ -0,0 +1,71 @@
# name: test/sql/show_select/test_summarize_quoted.test
# group: [show_select]
statement ok
pragma enable_verification;
# Quoted table name, no schema name
statement ok
create table "a.b.c" (x int);
query IIIIIIIIIIII
summarize "a.b.c";
----
x INTEGER NULL NULL 0 NULL NULL NULL NULL NULL 0 NULL
statement ok
create schema defg;
statement ok
drop table "a.b.c";
statement ok
create table defg."a.b.c" (x int);
# Non-quoted schema name, quoted table name
query IIIIIIIIIIII
summarize defg."a.b.c";
----
x INTEGER NULL NULL 0 NULL NULL NULL NULL NULL 0 NULL
statement ok
drop table defg."a.b.c";
statement ok
create table defg.abc (x int);
# Non-quoted schema name, non-quoted table name
query IIIIIIIIIIII
summarize defg.abc;
----
x INTEGER NULL NULL 0 NULL NULL NULL NULL NULL 0 NULL
statement ok
drop table defg.abc;
statement ok
drop schema defg;
statement ok
create schema "d.e.f.g";
statement ok
create table "d.e.f.g"."a.b.c" (x int);
# Quoted schema name, quoted table name
query IIIIIIIIIIII
summarize "d.e.f.g"."a.b.c";
----
x INTEGER NULL NULL 0 NULL NULL NULL NULL NULL 0 NULL
statement ok
drop table "d.e.f.g"."a.b.c"
statement ok
create table "d.e.f.g".abc (x int);
# Quoted schema name, non-quoted table name
query IIIIIIIIIIII
summarize "d.e.f.g".abc;
----
x INTEGER NULL NULL 0 NULL NULL NULL NULL NULL 0 NULL