should be it
This commit is contained in:
30
external/duckdb/test/sql/index/art/nodes/test_art_cyclic_duplicates.test_slow
vendored
Normal file
30
external/duckdb/test/sql/index/art/nodes/test_art_cyclic_duplicates.test_slow
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
# name: test/sql/index/art/nodes/test_art_cyclic_duplicates.test_slow
|
||||
# description: Test cycling inserts into the ART.
|
||||
# group: [nodes]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers (i INTEGER);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX i_index ON integers USING art(i);
|
||||
|
||||
# Insert duplicates and test the count.
|
||||
|
||||
loop i 0 10
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers SELECT range FROM range(100);
|
||||
|
||||
loop j 0 40
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) = ${i} + 1 FROM integers WHERE i = ${j};
|
||||
----
|
||||
1
|
||||
|
||||
endloop
|
||||
|
||||
endloop
|
||||
274
external/duckdb/test/sql/index/art/nodes/test_art_leaf.test_slow
vendored
Normal file
274
external/duckdb/test/sql/index/art/nodes/test_art_leaf.test_slow
vendored
Normal file
@@ -0,0 +1,274 @@
|
||||
# name: test/sql/index/art/nodes/test_art_leaf.test_slow
|
||||
# description: Test ART leaf containing duplicates on multi column table
|
||||
# group: [nodes]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers AS SELECT range a, 1 AS b, 1 AS c FROM range(1024)
|
||||
|
||||
statement ok
|
||||
CREATE INDEX b_index ON integers(b)
|
||||
|
||||
# verify counts
|
||||
|
||||
query I
|
||||
SELECT sum(b) FROM integers
|
||||
----
|
||||
1024
|
||||
|
||||
query I
|
||||
SELECT sum(b) FROM integers WHERE b = 1
|
||||
----
|
||||
1024
|
||||
|
||||
query I
|
||||
SELECT sum(b) FROM integers
|
||||
----
|
||||
1024
|
||||
|
||||
# now delete some elements
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE a < 100
|
||||
|
||||
# verify counts
|
||||
|
||||
query I
|
||||
SELECT COUNT(b) FROM integers
|
||||
----
|
||||
924
|
||||
|
||||
query I
|
||||
SELECT COUNT(b) FROM integers WHERE b = 1
|
||||
----
|
||||
924
|
||||
|
||||
query I
|
||||
SELECT sum(b) FROM integers
|
||||
----
|
||||
924
|
||||
|
||||
# now delete more elements
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE a < 600
|
||||
|
||||
# verify counts
|
||||
|
||||
query I
|
||||
SELECT COUNT(b) FROM integers
|
||||
----
|
||||
424
|
||||
|
||||
query I
|
||||
SELECT COUNT(b) FROM integers WHERE b = 1
|
||||
----
|
||||
424
|
||||
|
||||
query I
|
||||
SELECT sum(b) FROM integers
|
||||
----
|
||||
424
|
||||
|
||||
# now delete all elements
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE a < 1024
|
||||
|
||||
# verify counts
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
0
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE b = 1
|
||||
----
|
||||
0
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
0
|
||||
|
||||
statement ok
|
||||
DROP INDEX b_index
|
||||
|
||||
statement ok
|
||||
DROP TABLE integers
|
||||
|
||||
# test insertion after matching prefixes
|
||||
|
||||
load __TEST_DIR__/test_index.db
|
||||
|
||||
statement ok
|
||||
CREATE TABLE tbl_leaf_cov (id INTEGER);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_leaf_cov ON tbl_leaf_cov(id);
|
||||
|
||||
statement ok
|
||||
INSERT INTO tbl_leaf_cov VALUES (1), (1);
|
||||
|
||||
# testing growing/shrinking leaves
|
||||
|
||||
statement ok
|
||||
CREATE TABLE tbl_grow_shrink (id_var VARCHAR, id_int INTEGER, id_point BIGINT);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_var ON tbl_grow_shrink(id_var);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_int ON tbl_grow_shrink(id_int);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_both ON tbl_grow_shrink(id_var, id_int, id_point);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_point ON tbl_grow_shrink(id_point);
|
||||
|
||||
# growing
|
||||
|
||||
loop i 0 29
|
||||
|
||||
statement ok
|
||||
INSERT INTO tbl_grow_shrink VALUES ('hello there stranger! :sunshine:', 2, ${i});
|
||||
|
||||
query I
|
||||
SELECT id_var FROM tbl_grow_shrink WHERE rowid = (SELECT min(rowid) FROM tbl_grow_shrink);
|
||||
----
|
||||
hello there stranger! :sunshine:
|
||||
|
||||
query I
|
||||
SELECT id_int FROM tbl_grow_shrink WHERE rowid = (SELECT min(rowid) FROM tbl_grow_shrink);
|
||||
----
|
||||
2
|
||||
|
||||
query I
|
||||
SELECT count(id_var) FROM tbl_grow_shrink WHERE id_point = ${i};
|
||||
----
|
||||
1
|
||||
|
||||
restart
|
||||
|
||||
query I
|
||||
SELECT id_var FROM tbl_grow_shrink WHERE rowid = (SELECT min(rowid) FROM tbl_grow_shrink);
|
||||
----
|
||||
hello there stranger! :sunshine:
|
||||
|
||||
query I
|
||||
SELECT id_int FROM tbl_grow_shrink WHERE rowid = (SELECT min(rowid) FROM tbl_grow_shrink);
|
||||
----
|
||||
2
|
||||
|
||||
query I
|
||||
SELECT count(id_var) FROM tbl_grow_shrink WHERE id_point = ${i};
|
||||
----
|
||||
1
|
||||
|
||||
endloop
|
||||
|
||||
# some more queries
|
||||
|
||||
query I
|
||||
SELECT count(id_var) FROM tbl_grow_shrink;
|
||||
----
|
||||
29
|
||||
|
||||
query I
|
||||
SELECT sum(id_int) FROM tbl_grow_shrink;
|
||||
----
|
||||
58
|
||||
|
||||
restart
|
||||
|
||||
query I
|
||||
SELECT count(id_var) FROM tbl_grow_shrink;
|
||||
----
|
||||
29
|
||||
|
||||
query I
|
||||
SELECT sum(id_int) FROM tbl_grow_shrink;
|
||||
----
|
||||
58
|
||||
|
||||
# shrinking
|
||||
|
||||
loop i 0 29
|
||||
|
||||
query I
|
||||
SELECT id_var FROM tbl_grow_shrink WHERE rowid = (SELECT min(rowid) FROM tbl_grow_shrink);
|
||||
----
|
||||
hello there stranger! :sunshine:
|
||||
|
||||
query I
|
||||
SELECT id_int FROM tbl_grow_shrink WHERE rowid = (SELECT min(rowid) FROM tbl_grow_shrink);
|
||||
----
|
||||
2
|
||||
|
||||
query I
|
||||
SELECT count(id_var) FROM tbl_grow_shrink WHERE id_point = ${i};
|
||||
----
|
||||
1
|
||||
|
||||
statement ok
|
||||
DELETE FROM tbl_grow_shrink WHERE rowid = (SELECT min(rowid) FROM tbl_grow_shrink);
|
||||
|
||||
restart
|
||||
|
||||
endloop
|
||||
|
||||
# some final checking
|
||||
|
||||
query I
|
||||
SELECT count(id_var) FROM tbl_grow_shrink;
|
||||
----
|
||||
0
|
||||
|
||||
query I
|
||||
SELECT sum(id_int) FROM tbl_grow_shrink;
|
||||
----
|
||||
NULL
|
||||
|
||||
# merging leaves
|
||||
|
||||
statement ok
|
||||
CREATE TABLE merge_leaf_tbl (id int);
|
||||
|
||||
statement ok
|
||||
INSERT INTO merge_leaf_tbl SELECT range FROM range(2048);
|
||||
|
||||
statement ok
|
||||
INSERT INTO merge_leaf_tbl VALUES (2047);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_merge_leaf_tbl ON merge_leaf_tbl(id);
|
||||
|
||||
statement ok
|
||||
DROP INDEX idx_merge_leaf_tbl;
|
||||
|
||||
statement ok
|
||||
INSERT INTO merge_leaf_tbl VALUES (2047);
|
||||
|
||||
statement ok
|
||||
INSERT INTO merge_leaf_tbl SELECT range + 10000 FROM range(2048);
|
||||
|
||||
statement ok
|
||||
INSERT INTO merge_leaf_tbl SELECT range + 10000 FROM range(2048);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_merge_leaf_tbl ON merge_leaf_tbl(id);
|
||||
|
||||
# code coverage of ART consisting of a single leaf
|
||||
|
||||
statement ok
|
||||
CREATE TABLE tbl (i TINYINT);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx ON tbl(i);
|
||||
|
||||
statement ok
|
||||
INSERT INTO tbl VALUES (1), (1), (1);
|
||||
88
external/duckdb/test/sql/index/art/nodes/test_art_leaf_coverage.test
vendored
Normal file
88
external/duckdb/test/sql/index/art/nodes/test_art_leaf_coverage.test
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
# name: test/sql/index/art/nodes/test_art_leaf_coverage.test
|
||||
# description: ART coverage tests for leaves.
|
||||
# group: [nodes]
|
||||
|
||||
# Test the deserialization of leaves.
|
||||
|
||||
load __TEST_DIR__/art_vacuum.db
|
||||
|
||||
statement ok
|
||||
CREATE TABLE duplicates (id UBIGINT);
|
||||
|
||||
statement ok
|
||||
INSERT INTO duplicates SELECT range + 500 FROM range(500);
|
||||
|
||||
loop i 0 16
|
||||
|
||||
statement ok
|
||||
INSERT INTO duplicates SELECT range FROM range(500);
|
||||
|
||||
endloop
|
||||
|
||||
statement ok
|
||||
INSERT INTO duplicates SELECT range + 1000 FROM range(500);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_duplicates ON duplicates(id);
|
||||
|
||||
restart
|
||||
|
||||
query I
|
||||
SELECT id FROM duplicates WHERE id = 255;
|
||||
----
|
||||
255
|
||||
255
|
||||
255
|
||||
255
|
||||
255
|
||||
255
|
||||
255
|
||||
255
|
||||
255
|
||||
255
|
||||
255
|
||||
255
|
||||
255
|
||||
255
|
||||
255
|
||||
255
|
||||
|
||||
# test different paths in the Leaf::Merge functionality
|
||||
|
||||
statement ok
|
||||
CREATE TABLE leaf_merge_1 (id UINT32, id2 INT64);
|
||||
|
||||
statement ok
|
||||
INSERT INTO leaf_merge_1 SELECT range, range FROM range (0, 2048, 1);
|
||||
|
||||
statement ok
|
||||
INSERT INTO leaf_merge_1 SELECT 2047, 2047 FROM range (10);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_merge_1 ON leaf_merge_1(id, id2);
|
||||
|
||||
statement ok
|
||||
CREATE TABLE leaf_merge_2 (id UINT32, id2 INT64);
|
||||
|
||||
statement ok
|
||||
INSERT INTO leaf_merge_2 SELECT range, range FROM range (0, 2048, 1);
|
||||
|
||||
statement ok
|
||||
INSERT INTO leaf_merge_2 VALUES (2047, 2047)
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_merge_2 ON leaf_merge_2(id, id2);
|
||||
|
||||
# test merging leaves with same key
|
||||
|
||||
statement ok
|
||||
CREATE TABLE tbl_dup_ser (id INTEGER);
|
||||
|
||||
statement ok
|
||||
INSERT INTO tbl_dup_ser SELECT range FROM range(2043);
|
||||
|
||||
statement ok
|
||||
INSERT INTO tbl_dup_ser SELECT 12345 FROM range(11);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_dup_ser ON tbl_dup_ser(id);
|
||||
154
external/duckdb/test/sql/index/art/nodes/test_art_leaf_with_duplicates.test_slow
vendored
Normal file
154
external/duckdb/test/sql/index/art/nodes/test_art_leaf_with_duplicates.test_slow
vendored
Normal file
@@ -0,0 +1,154 @@
|
||||
# name: test/sql/index/art/nodes/test_art_leaf_with_duplicates.test_slow
|
||||
# description: Test ART leaf containing duplicates
|
||||
# group: [nodes]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i integer)
|
||||
|
||||
statement ok
|
||||
CREATE INDEX i_index ON integers(i)
|
||||
|
||||
# insert 4 elements
|
||||
statement ok
|
||||
INSERT INTO integers SELECT 1 FROM range(4)
|
||||
|
||||
# verify counts
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
4
|
||||
|
||||
# verify sums
|
||||
|
||||
query I
|
||||
SELECT sum(i) FROM integers WHERE i <= 2
|
||||
----
|
||||
4
|
||||
|
||||
# now delete all elements
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE i = 1
|
||||
|
||||
# verify counts
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
0
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
0
|
||||
|
||||
# insert 1024 elements
|
||||
statement ok
|
||||
INSERT INTO integers SELECT 1 FROM range(1024);
|
||||
|
||||
# verify counts
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
1024
|
||||
|
||||
# verify sums
|
||||
|
||||
query I
|
||||
SELECT sum(i) FROM integers WHERE i <= 2
|
||||
----
|
||||
1024
|
||||
|
||||
# now delete all elements
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE i = 1
|
||||
|
||||
# verify counts
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
0
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
0
|
||||
|
||||
# insert 3000 elements: 1
|
||||
statement ok
|
||||
INSERT INTO integers SELECT 1 FROM range(3000);
|
||||
|
||||
# insert 1024 elements: 2
|
||||
statement ok
|
||||
INSERT INTO integers SELECT 2 FROM range(1024);
|
||||
|
||||
# verify counts
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
3000
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 2
|
||||
----
|
||||
1024
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i <= 2
|
||||
----
|
||||
4024
|
||||
|
||||
# verify sums
|
||||
|
||||
query I
|
||||
SELECT sum(i) FROM integers WHERE i <= 2
|
||||
----
|
||||
5048
|
||||
|
||||
# now delete all elements: 2
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE i = 2
|
||||
|
||||
# verify counts
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
3000
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
3000
|
||||
|
||||
# now delete all elements: 1
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE i = 1
|
||||
|
||||
# verify counts
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
0
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
0
|
||||
|
||||
statement ok
|
||||
DROP INDEX i_index
|
||||
|
||||
statement ok
|
||||
DROP TABLE integers
|
||||
63
external/duckdb/test/sql/index/art/nodes/test_art_node_16.test
vendored
Normal file
63
external/duckdb/test/sql/index/art/nodes/test_art_node_16.test
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
# name: test/sql/index/art/nodes/test_art_node_16.test
|
||||
# description: Test ART Node 16
|
||||
# group: [nodes]
|
||||
|
||||
load __TEST_DIR__/test_index.db
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i integer)
|
||||
|
||||
statement ok
|
||||
CREATE INDEX i_index ON integers(i)
|
||||
|
||||
# insert elements
|
||||
|
||||
loop i 0 6
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (${i} + 1);
|
||||
|
||||
endloop
|
||||
|
||||
restart
|
||||
|
||||
# verify counts
|
||||
|
||||
loop i 0 6
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = ${i} + 1
|
||||
----
|
||||
1
|
||||
|
||||
endloop
|
||||
|
||||
# verify sums
|
||||
|
||||
query I
|
||||
SELECT sum(i) FROM integers WHERE i <= 2
|
||||
----
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT sum(i) FROM integers WHERE i > 4
|
||||
----
|
||||
11
|
||||
|
||||
# now delete all elements
|
||||
|
||||
loop i 0 6
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE i = ${i} + 1
|
||||
|
||||
endloop
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE i = 0
|
||||
|
||||
statement ok
|
||||
DROP INDEX i_index
|
||||
|
||||
statement ok
|
||||
DROP TABLE integers
|
||||
81
external/duckdb/test/sql/index/art/nodes/test_art_node_256.test
vendored
Normal file
81
external/duckdb/test/sql/index/art/nodes/test_art_node_256.test
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
# name: test/sql/index/art/nodes/test_art_node_256.test
|
||||
# description: Test ART Node 256
|
||||
# group: [nodes]
|
||||
|
||||
load __TEST_DIR__/test_index.db
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i integer)
|
||||
|
||||
statement ok
|
||||
CREATE INDEX i_index ON integers(i)
|
||||
|
||||
# insert elements
|
||||
|
||||
loop i 0 60
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (${i} + 1);
|
||||
|
||||
endloop
|
||||
|
||||
restart
|
||||
|
||||
# verify counts
|
||||
|
||||
loop i 0 20
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = ${i} + 1
|
||||
----
|
||||
1
|
||||
|
||||
endloop
|
||||
|
||||
# verify sums
|
||||
|
||||
query I
|
||||
SELECT sum(i) FROM integers WHERE i <= 2
|
||||
----
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT sum(i) FROM integers WHERE i > 15
|
||||
----
|
||||
1710
|
||||
|
||||
# delete an element and reinsert it
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE i=16;
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (16);
|
||||
|
||||
query I
|
||||
SELECT sum(i) FROM integers WHERE i <= 2
|
||||
----
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT sum(i) FROM integers WHERE i > 15
|
||||
----
|
||||
1710
|
||||
|
||||
# now delete all elements
|
||||
|
||||
loop i 0 60
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE i = ${i} + 1
|
||||
|
||||
endloop
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE i = 0
|
||||
|
||||
statement ok
|
||||
DROP INDEX i_index
|
||||
|
||||
statement ok
|
||||
DROP TABLE integers
|
||||
63
external/duckdb/test/sql/index/art/nodes/test_art_node_4.test
vendored
Normal file
63
external/duckdb/test/sql/index/art/nodes/test_art_node_4.test
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
# name: test/sql/index/art/nodes/test_art_node_4.test
|
||||
# description: Test ART Node 4
|
||||
# group: [nodes]
|
||||
|
||||
load __TEST_DIR__/test_index.db
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i integer)
|
||||
|
||||
statement ok
|
||||
CREATE INDEX i_index ON integers(i)
|
||||
|
||||
# insert elements
|
||||
|
||||
loop i 0 4
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (${i} + 1);
|
||||
|
||||
endloop
|
||||
|
||||
restart
|
||||
|
||||
# verify counts
|
||||
|
||||
loop i 0 4
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = ${i} + 1
|
||||
----
|
||||
1
|
||||
|
||||
endloop
|
||||
|
||||
# verify sums
|
||||
|
||||
query I
|
||||
SELECT sum(i) FROM integers WHERE i <= 2
|
||||
----
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT sum(i) FROM integers WHERE i > 1
|
||||
----
|
||||
9
|
||||
|
||||
# now delete all elements
|
||||
|
||||
loop i 0 4
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE i = ${i} + 1
|
||||
|
||||
endloop
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE i = 0
|
||||
|
||||
statement ok
|
||||
DROP INDEX i_index
|
||||
|
||||
statement ok
|
||||
DROP TABLE integers
|
||||
114
external/duckdb/test/sql/index/art/nodes/test_art_node_48.test
vendored
Normal file
114
external/duckdb/test/sql/index/art/nodes/test_art_node_48.test
vendored
Normal file
@@ -0,0 +1,114 @@
|
||||
# name: test/sql/index/art/nodes/test_art_node_48.test
|
||||
# description: Test ART Node 48
|
||||
# group: [nodes]
|
||||
|
||||
load __TEST_DIR__/test_index.db
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i integer)
|
||||
|
||||
statement ok
|
||||
CREATE INDEX i_index ON integers(i)
|
||||
|
||||
# insert elements
|
||||
|
||||
loop i 0 20
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (${i} + 1);
|
||||
|
||||
endloop
|
||||
|
||||
restart
|
||||
|
||||
# verify counts
|
||||
|
||||
loop i 0 20
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = ${i} + 1
|
||||
----
|
||||
1
|
||||
|
||||
endloop
|
||||
|
||||
# verify sums
|
||||
|
||||
query I
|
||||
SELECT sum(i) FROM integers WHERE i <= 2
|
||||
----
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT sum(i) FROM integers WHERE i > 15
|
||||
----
|
||||
90
|
||||
|
||||
# delete an element and reinsert it
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE i=16;
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (16);
|
||||
|
||||
query I
|
||||
SELECT sum(i) FROM integers WHERE i <= 2
|
||||
----
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT sum(i) FROM integers WHERE i > 15
|
||||
----
|
||||
90
|
||||
|
||||
# now delete all elements
|
||||
|
||||
loop i 0 20
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE i = ${i} + 1
|
||||
|
||||
endloop
|
||||
|
||||
statement ok
|
||||
DELETE FROM integers WHERE i = 0
|
||||
|
||||
statement ok
|
||||
DROP INDEX i_index
|
||||
|
||||
statement ok
|
||||
DROP TABLE integers
|
||||
|
||||
statement ok
|
||||
CREATE TABLE n48_tbl(i varchar, k integer)
|
||||
|
||||
statement ok
|
||||
INSERT INTO n48_tbl SELECT 'a', range FROM range(10000);
|
||||
|
||||
statement ok
|
||||
INSERT INTO n48_tbl SELECT 'b', range FROM range(25);
|
||||
|
||||
statement ok
|
||||
INSERT INTO n48_tbl SELECT 'c', range FROM range(25);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX n48_tbl_idx ON n48_tbl(i, k);
|
||||
|
||||
# test freeing all the children of a Node48
|
||||
|
||||
statement ok
|
||||
CREATE TABLE n48_free (id INTEGER);
|
||||
|
||||
statement ok
|
||||
INSERT INTO n48_free SELECT range % 100 FROM range(2048);
|
||||
|
||||
loop i 0 20
|
||||
|
||||
statement ok
|
||||
INSERT INTO n48_free VALUES (${i} + 107);
|
||||
|
||||
endloop
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_n48_free ON n48_free(id);
|
||||
959
external/duckdb/test/sql/index/art/nodes/test_art_prefix_edge_cases.test_slow
vendored
Normal file
959
external/duckdb/test/sql/index/art/nodes/test_art_prefix_edge_cases.test_slow
vendored
Normal file
@@ -0,0 +1,959 @@
|
||||
# name: test/sql/index/art/nodes/test_art_prefix_edge_cases.test_slow
|
||||
# description: Test ART prefix edge cases
|
||||
# group: [nodes]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i BIGINT)
|
||||
|
||||
statement ok
|
||||
CREATE INDEX i_index ON integers using art(i)
|
||||
|
||||
# a bunch of values with different prefixes
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (9312908412824241)
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824241
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 9223372036854775808
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i >= 0
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 0
|
||||
----
|
||||
0
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (-2092042498432234)
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824241
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432234
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
2
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 9223372036854775808
|
||||
----
|
||||
2
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i >= 0
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 0
|
||||
----
|
||||
1
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1)
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824241
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432234
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 9223372036854775808
|
||||
----
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i >= 0
|
||||
----
|
||||
2
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 0
|
||||
----
|
||||
1
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (-100)
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824241
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432234
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -100
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
4
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 9223372036854775808
|
||||
----
|
||||
4
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i >= 0
|
||||
----
|
||||
2
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 0
|
||||
----
|
||||
2
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (0)
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824241
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432234
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -100
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 0
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
5
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 9223372036854775808
|
||||
----
|
||||
5
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i >= 0
|
||||
----
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 0
|
||||
----
|
||||
2
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (-598538523852390852)
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824241
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432234
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -100
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 0
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -598538523852390852
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
6
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 9223372036854775808
|
||||
----
|
||||
6
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i >= 0
|
||||
----
|
||||
3
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 0
|
||||
----
|
||||
3
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (4298421)
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824241
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432234
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -100
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 0
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -598538523852390852
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 4298421
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
7
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 9223372036854775808
|
||||
----
|
||||
7
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i >= 0
|
||||
----
|
||||
4
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 0
|
||||
----
|
||||
3
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (-498249)
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824241
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432234
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -100
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 0
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -598538523852390852
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 4298421
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -498249
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
8
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 9223372036854775808
|
||||
----
|
||||
8
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i >= 0
|
||||
----
|
||||
4
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 0
|
||||
----
|
||||
4
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (9312908412824240)
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824241
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432234
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -100
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 0
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -598538523852390852
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 4298421
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -498249
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824240
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
9
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 9223372036854775808
|
||||
----
|
||||
9
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i >= 0
|
||||
----
|
||||
5
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 0
|
||||
----
|
||||
4
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (-2092042498432235)
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824241
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432234
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -100
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 0
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -598538523852390852
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 4298421
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -498249
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824240
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432235
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
10
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 9223372036854775808
|
||||
----
|
||||
10
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i >= 0
|
||||
----
|
||||
5
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 0
|
||||
----
|
||||
5
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (2)
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824241
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432234
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -100
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 0
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -598538523852390852
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 4298421
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -498249
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824240
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432235
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 2
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
11
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 9223372036854775808
|
||||
----
|
||||
11
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i >= 0
|
||||
----
|
||||
6
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 0
|
||||
----
|
||||
5
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (-101)
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824241
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432234
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -100
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 0
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -598538523852390852
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 4298421
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -498249
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824240
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432235
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 2
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -101
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
12
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 9223372036854775808
|
||||
----
|
||||
12
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i >= 0
|
||||
----
|
||||
6
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 0
|
||||
----
|
||||
6
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (-598538523852390853)
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824241
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432234
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -100
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 0
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -598538523852390852
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 4298421
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -498249
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824240
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432235
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 2
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -101
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -598538523852390853
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
13
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 9223372036854775808
|
||||
----
|
||||
13
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i >= 0
|
||||
----
|
||||
6
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 0
|
||||
----
|
||||
7
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (4298422)
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824241
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432234
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -100
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 0
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -598538523852390852
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 4298421
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -498249
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824240
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432235
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 2
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -101
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -598538523852390853
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 4298422
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
14
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 9223372036854775808
|
||||
----
|
||||
14
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i >= 0
|
||||
----
|
||||
7
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 0
|
||||
----
|
||||
7
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (-498261)
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824241
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432234
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 1
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -100
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 0
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -598538523852390852
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 4298421
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -498249
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 9312908412824240
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -2092042498432235
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 2
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -101
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -598538523852390853
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = 4298422
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i = -498261
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers
|
||||
----
|
||||
15
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 9223372036854775808
|
||||
----
|
||||
15
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i >= 0
|
||||
----
|
||||
7
|
||||
|
||||
query I
|
||||
SELECT COUNT(*) FROM integers WHERE i < 0
|
||||
----
|
||||
8
|
||||
|
||||
124
external/duckdb/test/sql/index/art/nodes/test_art_prefixes.test_slow
vendored
Normal file
124
external/duckdb/test/sql/index/art/nodes/test_art_prefixes.test_slow
vendored
Normal file
@@ -0,0 +1,124 @@
|
||||
# name: test/sql/index/art/nodes/test_art_prefixes.test_slow
|
||||
# description: Test different ART prefixes
|
||||
# group: [nodes]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
# very mixed-length prefixes
|
||||
|
||||
statement ok
|
||||
CREATE TABLE different_prefixes(str VARCHAR);
|
||||
|
||||
statement ok
|
||||
INSERT INTO different_prefixes SELECT 'my first very long prefix that is really very long' || range FROM range(2048);
|
||||
|
||||
statement ok
|
||||
INSERT INTO different_prefixes SELECT (range / 100)::VARCHAR || range::VARCHAR FROM range(2048);
|
||||
|
||||
statement ok
|
||||
INSERT INTO different_prefixes SELECT 'my first very long prefix, the other not quite as long prefix that is still very long' || range FROM range(2048);
|
||||
|
||||
statement ok
|
||||
INSERT INTO different_prefixes SELECT 'my first very long prefix, the other not quite as long prefix that is still very long and even longer omg!' || range FROM range(2048);
|
||||
|
||||
statement ok
|
||||
INSERT INTO different_prefixes SELECT range::VARCHAR || (range + 1)::VARCHAR FROM range(2048);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_different_prefixes ON different_prefixes(str);
|
||||
|
||||
statement ok
|
||||
DELETE FROM different_prefixes
|
||||
WHERE rowid IN (SELECT rowid FROM different_prefixes LIMIT 1000);
|
||||
|
||||
statement ok
|
||||
DELETE FROM different_prefixes
|
||||
WHERE rowid IN (SELECT rowid FROM different_prefixes LIMIT 3000);
|
||||
|
||||
statement ok
|
||||
DROP INDEX idx_different_prefixes;
|
||||
|
||||
# this time all prefixes are long
|
||||
|
||||
statement ok
|
||||
CREATE TABLE longer_prefixes(str VARCHAR);
|
||||
|
||||
statement ok
|
||||
INSERT INTO longer_prefixes
|
||||
SELECT 'my first very long prefix that is really very long' || range FROM range(2048);
|
||||
|
||||
statement ok
|
||||
INSERT INTO longer_prefixes
|
||||
SELECT 'my first very long prefix, the other not quite as long prefix that is still very long' || range FROM range(2048);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_longer_prefixes ON longer_prefixes(str);
|
||||
|
||||
query I
|
||||
SELECT str FROM longer_prefixes
|
||||
WHERE str = 'my first very long prefix that is really very long77';
|
||||
----
|
||||
my first very long prefix that is really very long77
|
||||
|
||||
statement ok
|
||||
DROP INDEX idx_longer_prefixes;
|
||||
|
||||
# more distinct prefixes
|
||||
|
||||
statement ok
|
||||
CREATE TABLE distinct_prefixes (str VARCHAR);
|
||||
|
||||
statement ok
|
||||
INSERT INTO distinct_prefixes SELECT
|
||||
'2022-01-01'::DATE + range::INTEGER * 1000 ||
|
||||
'1004-02-01'::DATE + range::INTEGER * 100 ||
|
||||
'.' || '6004-02-01'::DATE + range::INTEGER * 2000
|
||||
FROM range(100000);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_distinct_prefixes ON distinct_prefixes(str);
|
||||
|
||||
statement ok
|
||||
DROP INDEX idx_distinct_prefixes;
|
||||
|
||||
# more mixed-length distinct prefixes
|
||||
|
||||
statement ok
|
||||
CREATE TABLE mixed_distinct_prefixes (str VARCHAR);
|
||||
|
||||
statement ok
|
||||
INSERT INTO mixed_distinct_prefixes SELECT
|
||||
'2022-01-01'::DATE + range::INTEGER * 1000
|
||||
FROM range(100000);
|
||||
|
||||
statement ok
|
||||
INSERT INTO mixed_distinct_prefixes SELECT
|
||||
'2022-01-01'::DATE + range::INTEGER * 1000 ||
|
||||
'1004-02-01'::DATE + range::INTEGER * 100
|
||||
FROM range(100000);
|
||||
|
||||
statement ok
|
||||
INSERT INTO mixed_distinct_prefixes SELECT
|
||||
'2022-01-01'::DATE + range::INTEGER * 1000 ||
|
||||
'1004-02-01'::DATE + range::INTEGER * 100 ||
|
||||
'.' || '6004-02-01'::DATE + range::INTEGER * 2000
|
||||
FROM range(100000);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_mixed_distinct_prefixes ON mixed_distinct_prefixes(str);
|
||||
|
||||
statement ok
|
||||
DELETE FROM mixed_distinct_prefixes
|
||||
WHERE rowid IN (SELECT rowid FROM mixed_distinct_prefixes LIMIT 1000);
|
||||
|
||||
statement ok
|
||||
DELETE FROM mixed_distinct_prefixes
|
||||
WHERE rowid IN (SELECT rowid FROM mixed_distinct_prefixes LIMIT 1000);
|
||||
|
||||
statement ok
|
||||
DELETE FROM mixed_distinct_prefixes
|
||||
WHERE rowid IN (SELECT rowid FROM mixed_distinct_prefixes LIMIT 1000);
|
||||
|
||||
statement ok
|
||||
DROP INDEX idx_mixed_distinct_prefixes;
|
||||
65
external/duckdb/test/sql/index/art/nodes/test_art_prefixes_restart.test
vendored
Normal file
65
external/duckdb/test/sql/index/art/nodes/test_art_prefixes_restart.test
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
# name: test/sql/index/art/nodes/test_art_prefixes_restart.test
|
||||
# description: Test the (de)serialization of different ART prefixes
|
||||
# group: [nodes]
|
||||
|
||||
load __TEST_DIR__/test_art_prefixes.db
|
||||
|
||||
statement ok
|
||||
CREATE TABLE tbl (id INTEGER);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx ON tbl(id);
|
||||
|
||||
# insert two children into a Node4
|
||||
statement ok
|
||||
INSERT INTO tbl VALUES (1), (2);
|
||||
|
||||
restart
|
||||
|
||||
# delete one child, the other child will still be serialized
|
||||
statement ok
|
||||
DELETE FROM tbl WHERE id = 1;
|
||||
|
||||
# now do the same, but with a very long shared prefix
|
||||
|
||||
statement ok
|
||||
CREATE TABLE tbl_varchar (id VARCHAR);
|
||||
|
||||
statement ok
|
||||
CREATE INDEX idx_varchar ON tbl_varchar(id);
|
||||
|
||||
# insert two children into a Node4
|
||||
statement ok
|
||||
INSERT INTO tbl_varchar VALUES
|
||||
('hello I am a prefix, and it is a beautiful sommer evening, and the plants are blossoming - 1'),
|
||||
('hello I am a prefix, and it is a beautiful sommer evening, and the plants are blossoming - 2');
|
||||
|
||||
restart
|
||||
|
||||
# delete one child, the other child will still be serialized
|
||||
statement ok
|
||||
DELETE FROM tbl_varchar
|
||||
WHERE id = 'hello I am a prefix, and it is a beautiful sommer evening, and the plants are blossoming - 1';
|
||||
|
||||
# now we test splitting prefixes
|
||||
|
||||
statement ok
|
||||
DELETE FROM tbl_varchar;
|
||||
|
||||
statement ok
|
||||
INSERT INTO tbl_varchar VALUES ('012345678901234'), ('012345678901235');
|
||||
|
||||
# now with serialized prefixes
|
||||
|
||||
statement ok
|
||||
DELETE FROM tbl_varchar;
|
||||
|
||||
statement ok
|
||||
INSERT INTO tbl_varchar VALUES
|
||||
('0123456789-0123456789-0123456789-0123456789');
|
||||
|
||||
restart
|
||||
|
||||
statement ok
|
||||
INSERT INTO tbl_varchar VALUES
|
||||
('0123456779-0123456789-0123456789-0123456789');
|
||||
25
external/duckdb/test/sql/index/art/nodes/test_art_sparse_merge.test
vendored
Normal file
25
external/duckdb/test/sql/index/art/nodes/test_art_sparse_merge.test
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
# name: test/sql/index/art/nodes/test_art_sparse_merge.test
|
||||
# description: Test sparse row IDs for duplicate keys when merging.
|
||||
# group: [nodes]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE tbl1 (i INT);
|
||||
|
||||
loop i 0 8
|
||||
|
||||
statement ok
|
||||
INSERT INTO tbl1 SELECT range FROM range(50000);
|
||||
|
||||
statement ok
|
||||
DELETE FROM tbl1 WHERE i > 4;
|
||||
|
||||
endloop
|
||||
|
||||
# Parallel index construction.
|
||||
statement ok
|
||||
CREATE INDEX idx ON tbl1(i);
|
||||
|
||||
query I
|
||||
SELECT COUNT(i) FROM tbl1 WHERE i = 1;
|
||||
----
|
||||
8
|
||||
64
external/duckdb/test/sql/index/art/nodes/test_art_sparse_row_ids.test_slow
vendored
Normal file
64
external/duckdb/test/sql/index/art/nodes/test_art_sparse_row_ids.test_slow
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
# name: test/sql/index/art/nodes/test_art_sparse_row_ids.test_slow
|
||||
# description: Test sparse row IDs for duplicate keys.
|
||||
# group: [nodes]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
# We try to create sparse row IDs up to their 4'th byte.
|
||||
# The maximum value of 3 bytes is 16,777,215.
|
||||
|
||||
statement ok
|
||||
CREATE TABLE tbl1 (i INT);
|
||||
|
||||
statement ok
|
||||
CREATE TABLE tbl2 (i INT);
|
||||
|
||||
# Inserting into the index chunk-at-a-time.
|
||||
statement ok
|
||||
CREATE INDEX idx2 ON tbl2(i);
|
||||
|
||||
loop i 0 100
|
||||
|
||||
statement ok
|
||||
INSERT INTO tbl1 SELECT range FROM range(50000);
|
||||
|
||||
statement ok
|
||||
INSERT INTO tbl2 SELECT range FROM range(50000);
|
||||
|
||||
query I
|
||||
SELECT COUNT(i) = ${i} + 1 FROM tbl2 WHERE i = 96;
|
||||
----
|
||||
1
|
||||
|
||||
statement ok
|
||||
DELETE FROM tbl1 WHERE i > 270;
|
||||
|
||||
statement ok
|
||||
DELETE FROM tbl2 WHERE i > 270;
|
||||
|
||||
endloop
|
||||
|
||||
# Parallel index construction.
|
||||
statement ok
|
||||
CREATE INDEX idx ON tbl1(i);
|
||||
|
||||
query I
|
||||
SELECT COUNT(i) FROM tbl1 WHERE i = 49;
|
||||
----
|
||||
100
|
||||
|
||||
query I
|
||||
SELECT COUNT(i) FROM tbl2 WHERE i = 49;
|
||||
----
|
||||
100
|
||||
|
||||
query I
|
||||
SELECT COUNT(i) FROM tbl1 WHERE rowid = (SELECT MAX(rowid) FROM tbl1);
|
||||
----
|
||||
1
|
||||
|
||||
query I
|
||||
SELECT COUNT(i) FROM tbl2 WHERE rowid = (SELECT MAX(rowid) FROM tbl2);
|
||||
----
|
||||
1
|
||||
Reference in New Issue
Block a user