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,242 @@
BEGIN TRANSACTION;
-- test various types
CREATE TABLE integral_values (
i TINYINT,
j smallint,
k integer,
l bigint,
m HUGEINT
);
INSERT INTO integral_values
VALUES (1, 2, 3, 4, 5), (NULL, NULL, NULL, NULL, NULL);
CREATE TABLE numeric_values (
i float,
j double
);
INSERT INTO numeric_values
VALUES (1.0, 3.0), (NULL, NULL);
CREATE TABLE decimal_values (
i DECIMAL(4, 1),
j DECIMAL(9, 2),
k DECIMAL(18, 4),
l DECIMAL(37, 2)
);
INSERT INTO decimal_values
VALUES (1.0, 3.22, 10420942.4567, 12908124908190481290481.11), (NULL, NULL, NULL, NULL);
CREATE TABLE string_values (
i varchar,
j BLOB
);
INSERT INTO string_values
VALUES ('hello world', '\xAA\xFF\xAA'), (NULL, NULL);
CREATE TABLE date_values (
i date,
j time,
k timestamp
);
INSERT INTO date_values
VALUES (date '1992-01-01', time '12:00:03', timestamp '1992-09-20 10:00:03'), (NULL, NULL, NULL);
CREATE TABLE uuid_values (
u uuid
);
INSERT INTO uuid_values
VALUES ('A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'), (NULL), ('47183823-2574-4bfd-b411-99ed177d3e43'), ('{10203040506070800102030405060708}');
CREATE TYPE int_alias AS INTEGER;
CREATE TYPE char_alias AS VARCHAR;
CREATE TABLE alias_values (
i int_alias,
j varchar,
k char_alias
);
INSERT INTO alias_values
VALUES (2, 'hello world', 'alias'), (NULL, NULL, NULL);
-- all types
CREATE TABLE all_types AS SELECT * FROM test_all_types();
-- test constraints
CREATE TABLE check_constraint (
i integer,
j integer,
CHECK (i + j < 10)
);
CREATE TABLE not_null_constraint (
i integer NOT NULL
);
CREATE TABLE pk_constraint (
i integer,
j integer,
PRIMARY KEY (i, j)
);
CREATE TABLE unique_constraint (
i integer UNIQUE
);
-- test schemas
CREATE SCHEMA test3;
-- test sequences
CREATE SEQUENCE test3.bla;
-- test various views
CREATE VIEW v1 AS
SELECT
*
FROM
integral_values;
CREATE VIEW test3.v2 AS
SELECT
((i + 2) * 3)::INT
FROM
integral_values;
-- bigger tables
CREATE TABLE big_integers AS
SELECT
i
FROM
RANGE (0,
100000) t1 (i);
CREATE TABLE big_string AS
SELECT
repeat('a', 100000) a;
COMMIT;
-- views
CREATE TABLE base_table AS SELECT * FROM range(4) tbl(i);
-- many expression types
CREATE VIEW cv1 AS
SELECT
bt.k,
(k*2)+1,
CASE WHEN k=1 THEN 2 WHEN k=2 THEN 3 WHEN k=3 THEN 4 ELSE NULL END,
k BETWEEN 1 AND 2,
k::VARCHAR COLLATE NOCASE,
(k=3 AND k+1=4) OR (k=2 AND k+1=3),
NOT(k=3),
#1,
(SELECT 42),
*,
bt.*,
k IN (1, 2, NULL),
k IN (SELECT 1),
'hello world',
[1, 2, 3],
{'x': [42, 88]},
sum(k) over (partition by k order by k)
FROM base_table bt(k);
-- aggregates
CREATE VIEW cv2 AS
SELECT
i%2 AS k,
COUNT(*),
COUNT(DISTINCT i%2),
SUM(i),
STRING_AGG(i ORDER BY i DESC NULLS FIRST),
COUNT(i) FILTER (WHERE i=0)
FROM base_table
WHERE i<>1
GROUP BY 1
HAVING k<>1
ORDER BY 1;
-- window functions
CREATE VIEW cv3 AS
SELECT
i,
row_number() over () AS rownum,
sum(i) over(partition by i%2 order by i asc),
sum(i) over(partition by i%2 order by i desc nulls first),
sum(i) over(order by rowid rows between 1 preceding and current row)
FROM base_table
QUALIFY row_number() over () != 2
ORDER BY 1;
-- recursive CTE
CREATE VIEW cv4 AS
WITH RECURSIVE cte AS (
SELECT 1 i
UNION ALL
SELECT i+1
FROM cte
WHERE i < 3
)
SELECT * FROM cte;
-- multiple regular CTEs with setops
CREATE VIEW cv5 AS
WITH cte AS (
SELECT 1 AS i
), cte2 AS (
SELECT i + 1 AS i FROM cte
), cte3 AS (
SELECT i + 1 AS i FROM cte2
)
SELECT * FROM cte
UNION ALL
SELECT * FROM cte2
UNION ALL
SELECT * FROM cte3
ORDER BY i;
-- various set ops
CREATE VIEW cv6 AS
SELECT * FROM generate_series(0, 6, 1) tbl(i)
INTERSECT
SELECT * FROM generate_series(0, 4, 1) tbl(i)
EXCEPT
(SELECT 1 UNION ALL SELECT 3)
ORDER BY 1;
-- group by all
CREATE VIEW cv7 AS
SELECT i % 2, SUM(i)
FROM base_table
GROUP BY ALL
ORDER BY ALL;
-- values
CREATE VIEW cv8 AS
VALUES (1), (2), (3), (NULL);
-- subqueries
CREATE VIEW cv9 AS
SELECT DISTINCT (SELECT tbl.i+1)
FROM (
SELECT * FROM base_table WHERE i>1
) tbl(i)
ORDER BY (SELECT tbl.i);
-- samples
CREATE VIEW cv10 AS
SELECT *
FROM base_table TABLESAMPLE 10 ROWS
USING SAMPLE 100%
ORDER BY ALL;
-- grouping sets
CREATE VIEW cv11 AS
SELECT GROUPING_ID(k, i), i%2 AS k, i, SUM(i)
FROM base_table
GROUP BY GROUPING SETS ((), (k), (k, i))
ORDER BY ALL;
-- window clause
CREATE VIEW cv12 AS
SELECT
i,
sum(i) over(w)
FROM base_table
WINDOW w AS (partition by i%2 order by i asc)
ORDER BY ALL;
-- limit order by
CREATE VIEW cv13 AS
SELECT *
FROM base_table
ORDER BY i DESC
LIMIT 2
OFFSET 1;
-- v29: IGNORE NULLS
CREATE FUNCTION V29(x) AS LAST_VALUE(x IGNORE NULLS) OVER(ORDER BY x NULLS LAST);
FORCE CHECKPOINT;

View File

@@ -0,0 +1,190 @@
# name: test/sql/storage_version/storage_version.test_slow
# description: Storage version test checks whether or not the storage version needs to be incremented.
# group: [storage_version]
# If this test fails, re-generate the database file by following the steps listed below:
# 1) Increment the version number in src/storage/storage_info.cpp and recompile (make release)
# 2) Run the script in scripts/generate_storage_version.py
# 3) Commit the newly generated database file in test/sql/storage_version/storage_version.db
statement ok
PRAGMA enable_verification
load test/sql/storage_version/storage_version.db readonly
statement ok
BEGIN TRANSACTION;
query IIIII
SELECT * FROM integral_values ORDER BY 1
----
1 2 3 4 5
NULL NULL NULL NULL NULL
query II
SELECT * FROM numeric_values ORDER BY 1
----
1.0 3.0
NULL NULL
query IIII
SELECT * FROM decimal_values ORDER BY 1
----
1.0 3.22 10420942.4567 12908124908190481290481.11
NULL NULL NULL NULL
query II
SELECT * FROM string_values ORDER BY 1
----
hello world \xAA\xFF\xAA
NULL NULL
query III
SELECT * FROM date_values ORDER BY 1
----
1992-01-01 12:00:03 1992-09-20 10:00:03
NULL NULL NULL
query IIIII
SELECT * FROM v1 ORDER BY 1
----
1 2 3 4 5
NULL NULL NULL NULL NULL
query I
SELECT * FROM test3.v2 ORDER BY 1
----
9
NULL
query II
SELECT COUNT(*), SUM(i) FROM big_integers ORDER BY 1
----
100000 4999950000
query II
SELECT LENGTH(a), SUBSTR(a, 5000, 3) FROM big_string ORDER BY 1
----
100000 aaa
query I
SELECT * FROM uuid_values
----
a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
NULL
47183823-2574-4bfd-b411-99ed177d3e43
10203040-5060-7080-0102-030405060708
# all types function
query I nosort alltypes
SELECT * FROM test_all_types();
query I nosort alltypes
SELECT * FROM all_types
# complex views
query IIIIIIIIIIIIIIIII
SELECT * FROM cv1 ORDER BY 1
----
0 1 NULL 0 0 0 1 0 42 0 0 NULL 0 hello world [1, 2, 3] {'x': [42, 88]} 0
1 3 2 1 1 0 1 1 42 1 1 1 1 hello world [1, 2, 3] {'x': [42, 88]} 1
2 5 3 1 2 1 1 2 42 2 2 1 0 hello world [1, 2, 3] {'x': [42, 88]} 2
3 7 4 0 3 1 0 3 42 3 3 NULL 0 hello world [1, 2, 3] {'x': [42, 88]} 3
query IIIIII
SELECT * FROM cv2
----
0 2 1 2 2,0 1
query IIIII
SELECT * FROM cv3
----
0 1 0 2 0
2 3 2 2 3
3 4 4 3 5
query I
SELECT * FROM cv4
----
1
2
3
query I
SELECT * FROM cv5
----
1
2
3
query I
SELECT * FROM cv6
----
0
2
4
query II
SELECT * FROM cv7
----
0 2
1 4
query I
SELECT * FROM cv8
----
1
2
3
NULL
query I
SELECT * FROM cv9
----
3
4
query I
SELECT * FROM cv10
----
0
1
2
3
query IIII
SELECT * FROM cv11
----
0 0 0 0
0 0 2 2
0 1 1 1
0 1 3 3
1 0 NULL 2
1 1 NULL 4
3 NULL NULL 6
query II
SELECT * FROM cv12
----
0 0
1 1
2 2
3 4
query I
SELECT * FROM cv13
----
2
1
# Version 29: IGNORE NULLS
query II
SELECT i, V29(i) FROM integral_values ORDER BY 1 NULLS LAST
----
1 1
NULL 1
statement error
SELECT nextval('test3.bla')
----
read-only mode