should be it
This commit is contained in:
48
external/duckdb/test/sql/storage/partial_blocks/many_columns_alter_type.test_slow
vendored
Normal file
48
external/duckdb/test/sql/storage/partial_blocks/many_columns_alter_type.test_slow
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
# name: test/sql/storage/partial_blocks/many_columns_alter_type.test_slow
|
||||
# description: Verify that altering columns with multi-use blocks does not leak memory
|
||||
# group: [partial_blocks]
|
||||
|
||||
load __TEST_DIR__/many_columns.db
|
||||
|
||||
|
||||
statement ok
|
||||
BEGIN TRANSACTION
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i0 INTEGER, i1 INTEGER, i2 INTEGER, i3 INTEGER, i4 INTEGER, i5 INTEGER, i6 INTEGER, i7 INTEGER, i8 INTEGER, i9 INTEGER, i10 INTEGER, i11 INTEGER, i12 INTEGER, i13 INTEGER, i14 INTEGER, i15 INTEGER, i16 INTEGER, i17 INTEGER, i18 INTEGER, i19 INTEGER, i20 INTEGER, i21 INTEGER, i22 INTEGER, i23 INTEGER, i24 INTEGER, i25 INTEGER, i26 INTEGER, i27 INTEGER, i28 INTEGER, i29 INTEGER, i30 INTEGER, i31 INTEGER, i32 INTEGER, i33 INTEGER, i34 INTEGER, i35 INTEGER, i36 INTEGER, i37 INTEGER, i38 INTEGER, i39 INTEGER, i40 INTEGER, i41 INTEGER, i42 INTEGER, i43 INTEGER, i44 INTEGER, i45 INTEGER, i46 INTEGER, i47 INTEGER, i48 INTEGER, i49 INTEGER, i50 INTEGER, i51 INTEGER, i52 INTEGER, i53 INTEGER, i54 INTEGER, i55 INTEGER, i56 INTEGER, i57 INTEGER, i58 INTEGER, i59 INTEGER, i60 INTEGER, i61 INTEGER, i62 INTEGER, i63 INTEGER, i64 INTEGER, i65 INTEGER, i66 INTEGER, i67 INTEGER, i68 INTEGER, i69 INTEGER, i70 INTEGER, i71 INTEGER, i72 INTEGER, i73 INTEGER, i74 INTEGER, i75 INTEGER, i76 INTEGER, i77 INTEGER, i78 INTEGER, i79 INTEGER, i80 INTEGER, i81 INTEGER, i82 INTEGER, i83 INTEGER, i84 INTEGER, i85 INTEGER, i86 INTEGER, i87 INTEGER, i88 INTEGER, i89 INTEGER, i90 INTEGER, i91 INTEGER, i92 INTEGER, i93 INTEGER, i94 INTEGER, i95 INTEGER, i96 INTEGER, i97 INTEGER, i98 INTEGER, i99 INTEGER);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100);
|
||||
|
||||
statement ok
|
||||
COMMIT
|
||||
|
||||
# verify that doing this in a loop doesn't increase database size (i.e. blocks properly get added to the free list)
|
||||
|
||||
foreach type BIGINT INTEGER SMALLINT TINYINT BIGINT INTEGER
|
||||
|
||||
statement ok
|
||||
BEGIN TRANSACTION
|
||||
|
||||
loop i 0 99
|
||||
|
||||
statement ok
|
||||
ALTER TABLE integers ALTER i${i} SET DATA TYPE ${type}
|
||||
|
||||
endloop
|
||||
|
||||
statement ok
|
||||
COMMIT
|
||||
|
||||
statement ok
|
||||
CHECKPOINT
|
||||
|
||||
query I
|
||||
SELECT total_blocks * block_size < 15 * 262144 FROM pragma_database_size()
|
||||
----
|
||||
true
|
||||
|
||||
endloop
|
||||
40
external/duckdb/test/sql/storage/partial_blocks/many_columns_drop_column.test_slow
vendored
Normal file
40
external/duckdb/test/sql/storage/partial_blocks/many_columns_drop_column.test_slow
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
# name: test/sql/storage/partial_blocks/many_columns_drop_column.test_slow
|
||||
# description: Verify that dropping columns with multi-use blocks does not leak memory
|
||||
# group: [partial_blocks]
|
||||
|
||||
load __TEST_DIR__/many_columns.db
|
||||
|
||||
|
||||
statement ok
|
||||
BEGIN TRANSACTION
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i0 INTEGER, i1 INTEGER, i2 INTEGER, i3 INTEGER, i4 INTEGER, i5 INTEGER, i6 INTEGER, i7 INTEGER, i8 INTEGER, i9 INTEGER, i10 INTEGER, i11 INTEGER, i12 INTEGER, i13 INTEGER, i14 INTEGER, i15 INTEGER, i16 INTEGER, i17 INTEGER, i18 INTEGER, i19 INTEGER, i20 INTEGER, i21 INTEGER, i22 INTEGER, i23 INTEGER, i24 INTEGER, i25 INTEGER, i26 INTEGER, i27 INTEGER, i28 INTEGER, i29 INTEGER, i30 INTEGER, i31 INTEGER, i32 INTEGER, i33 INTEGER, i34 INTEGER, i35 INTEGER, i36 INTEGER, i37 INTEGER, i38 INTEGER, i39 INTEGER, i40 INTEGER, i41 INTEGER, i42 INTEGER, i43 INTEGER, i44 INTEGER, i45 INTEGER, i46 INTEGER, i47 INTEGER, i48 INTEGER, i49 INTEGER, i50 INTEGER, i51 INTEGER, i52 INTEGER, i53 INTEGER, i54 INTEGER, i55 INTEGER, i56 INTEGER, i57 INTEGER, i58 INTEGER, i59 INTEGER, i60 INTEGER, i61 INTEGER, i62 INTEGER, i63 INTEGER, i64 INTEGER, i65 INTEGER, i66 INTEGER, i67 INTEGER, i68 INTEGER, i69 INTEGER, i70 INTEGER, i71 INTEGER, i72 INTEGER, i73 INTEGER, i74 INTEGER, i75 INTEGER, i76 INTEGER, i77 INTEGER, i78 INTEGER, i79 INTEGER, i80 INTEGER, i81 INTEGER, i82 INTEGER, i83 INTEGER, i84 INTEGER, i85 INTEGER, i86 INTEGER, i87 INTEGER, i88 INTEGER, i89 INTEGER, i90 INTEGER, i91 INTEGER, i92 INTEGER, i93 INTEGER, i94 INTEGER, i95 INTEGER, i96 INTEGER, i97 INTEGER, i98 INTEGER, i99 INTEGER);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100);
|
||||
|
||||
statement ok
|
||||
COMMIT
|
||||
|
||||
# verify that doing this in a loop doesn't increase database size (i.e. blocks properly get added to the free list)
|
||||
loop i 0 99
|
||||
|
||||
statement ok
|
||||
ALTER TABLE integers DROP COLUMN i${i}
|
||||
|
||||
statement ok
|
||||
ALTER TABLE integers ADD COLUMN i${i} INTEGER
|
||||
|
||||
statement ok
|
||||
CHECKPOINT
|
||||
|
||||
query I
|
||||
SELECT total_blocks * block_size < 10 * 262144 FROM pragma_database_size()
|
||||
----
|
||||
true
|
||||
|
||||
endloop
|
||||
79
external/duckdb/test/sql/storage/partial_blocks/many_columns_drop_table.test
vendored
Normal file
79
external/duckdb/test/sql/storage/partial_blocks/many_columns_drop_table.test
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
# name: test/sql/storage/partial_blocks/many_columns_drop_table.test
|
||||
# description: Test dropping a table when we have many blocks
|
||||
# group: [partial_blocks]
|
||||
|
||||
load __TEST_DIR__/many_columns.db
|
||||
|
||||
statement ok
|
||||
BEGIN TRANSACTION
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i0 INTEGER, i1 INTEGER, i2 INTEGER, i3 INTEGER, i4 INTEGER, i5 INTEGER, i6 INTEGER, i7 INTEGER, i8 INTEGER, i9 INTEGER, i10 INTEGER, i11 INTEGER, i12 INTEGER, i13 INTEGER, i14 INTEGER, i15 INTEGER, i16 INTEGER, i17 INTEGER, i18 INTEGER, i19 INTEGER, i20 INTEGER, i21 INTEGER, i22 INTEGER, i23 INTEGER, i24 INTEGER, i25 INTEGER, i26 INTEGER, i27 INTEGER, i28 INTEGER, i29 INTEGER, i30 INTEGER, i31 INTEGER, i32 INTEGER, i33 INTEGER, i34 INTEGER, i35 INTEGER, i36 INTEGER, i37 INTEGER, i38 INTEGER, i39 INTEGER, i40 INTEGER, i41 INTEGER, i42 INTEGER, i43 INTEGER, i44 INTEGER, i45 INTEGER, i46 INTEGER, i47 INTEGER, i48 INTEGER, i49 INTEGER, i50 INTEGER, i51 INTEGER, i52 INTEGER, i53 INTEGER, i54 INTEGER, i55 INTEGER, i56 INTEGER, i57 INTEGER, i58 INTEGER, i59 INTEGER, i60 INTEGER, i61 INTEGER, i62 INTEGER, i63 INTEGER, i64 INTEGER, i65 INTEGER, i66 INTEGER, i67 INTEGER, i68 INTEGER, i69 INTEGER, i70 INTEGER, i71 INTEGER, i72 INTEGER, i73 INTEGER, i74 INTEGER, i75 INTEGER, i76 INTEGER, i77 INTEGER, i78 INTEGER, i79 INTEGER, i80 INTEGER, i81 INTEGER, i82 INTEGER, i83 INTEGER, i84 INTEGER, i85 INTEGER, i86 INTEGER, i87 INTEGER, i88 INTEGER, i89 INTEGER, i90 INTEGER, i91 INTEGER, i92 INTEGER, i93 INTEGER, i94 INTEGER, i95 INTEGER, i96 INTEGER, i97 INTEGER, i98 INTEGER, i99 INTEGER);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100);
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers2(i0 INTEGER, i1 INTEGER, i2 INTEGER, i3 INTEGER, i4 INTEGER, i5 INTEGER, i6 INTEGER, i7 INTEGER, i8 INTEGER, i9 INTEGER, i10 INTEGER, i11 INTEGER, i12 INTEGER, i13 INTEGER, i14 INTEGER, i15 INTEGER, i16 INTEGER, i17 INTEGER, i18 INTEGER, i19 INTEGER, i20 INTEGER, i21 INTEGER, i22 INTEGER, i23 INTEGER, i24 INTEGER, i25 INTEGER, i26 INTEGER, i27 INTEGER, i28 INTEGER, i29 INTEGER, i30 INTEGER, i31 INTEGER, i32 INTEGER, i33 INTEGER, i34 INTEGER, i35 INTEGER, i36 INTEGER, i37 INTEGER, i38 INTEGER, i39 INTEGER, i40 INTEGER, i41 INTEGER, i42 INTEGER, i43 INTEGER, i44 INTEGER, i45 INTEGER, i46 INTEGER, i47 INTEGER, i48 INTEGER, i49 INTEGER, i50 INTEGER, i51 INTEGER, i52 INTEGER, i53 INTEGER, i54 INTEGER, i55 INTEGER, i56 INTEGER, i57 INTEGER, i58 INTEGER, i59 INTEGER, i60 INTEGER, i61 INTEGER, i62 INTEGER, i63 INTEGER, i64 INTEGER, i65 INTEGER, i66 INTEGER, i67 INTEGER, i68 INTEGER, i69 INTEGER, i70 INTEGER, i71 INTEGER, i72 INTEGER, i73 INTEGER, i74 INTEGER, i75 INTEGER, i76 INTEGER, i77 INTEGER, i78 INTEGER, i79 INTEGER, i80 INTEGER, i81 INTEGER, i82 INTEGER, i83 INTEGER, i84 INTEGER, i85 INTEGER, i86 INTEGER, i87 INTEGER, i88 INTEGER, i89 INTEGER, i90 INTEGER, i91 INTEGER, i92 INTEGER, i93 INTEGER, i94 INTEGER, i95 INTEGER, i96 INTEGER, i97 INTEGER, i98 INTEGER, i99 INTEGER);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers2 VALUES (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers2 VALUES (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100);
|
||||
|
||||
statement ok
|
||||
COMMIT
|
||||
|
||||
loop i 0 100
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i} FROM integers
|
||||
----
|
||||
true
|
||||
false
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i}+1 FROM integers
|
||||
----
|
||||
false
|
||||
true
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i} FROM integers2
|
||||
----
|
||||
true
|
||||
false
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i}+1 FROM integers2
|
||||
----
|
||||
false
|
||||
true
|
||||
|
||||
endloop
|
||||
|
||||
statement ok
|
||||
DROP TABLE integers2
|
||||
|
||||
loop i 0 100
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i} FROM integers
|
||||
----
|
||||
true
|
||||
false
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i}+1 FROM integers
|
||||
----
|
||||
false
|
||||
true
|
||||
|
||||
endloop
|
||||
|
||||
statement ok
|
||||
DROP TABLE integers
|
||||
45
external/duckdb/test/sql/storage/partial_blocks/many_columns_drop_table_leak.test_slow
vendored
Normal file
45
external/duckdb/test/sql/storage/partial_blocks/many_columns_drop_table_leak.test_slow
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
# name: test/sql/storage/partial_blocks/many_columns_drop_table_leak.test_slow
|
||||
# description: Verify that dropping tables with multi-use blocks does not leak memory
|
||||
# group: [partial_blocks]
|
||||
|
||||
load __TEST_DIR__/many_columns.db
|
||||
|
||||
# verify that doing this in a loop doesn't increase database size (i.e. blocks properly get added to the free list)
|
||||
loop i 0 100
|
||||
|
||||
statement ok
|
||||
BEGIN TRANSACTION
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i0 INTEGER, i1 INTEGER, i2 INTEGER, i3 INTEGER, i4 INTEGER, i5 INTEGER, i6 INTEGER, i7 INTEGER, i8 INTEGER, i9 INTEGER, i10 INTEGER, i11 INTEGER, i12 INTEGER, i13 INTEGER, i14 INTEGER, i15 INTEGER, i16 INTEGER, i17 INTEGER, i18 INTEGER, i19 INTEGER, i20 INTEGER, i21 INTEGER, i22 INTEGER, i23 INTEGER, i24 INTEGER, i25 INTEGER, i26 INTEGER, i27 INTEGER, i28 INTEGER, i29 INTEGER, i30 INTEGER, i31 INTEGER, i32 INTEGER, i33 INTEGER, i34 INTEGER, i35 INTEGER, i36 INTEGER, i37 INTEGER, i38 INTEGER, i39 INTEGER, i40 INTEGER, i41 INTEGER, i42 INTEGER, i43 INTEGER, i44 INTEGER, i45 INTEGER, i46 INTEGER, i47 INTEGER, i48 INTEGER, i49 INTEGER, i50 INTEGER, i51 INTEGER, i52 INTEGER, i53 INTEGER, i54 INTEGER, i55 INTEGER, i56 INTEGER, i57 INTEGER, i58 INTEGER, i59 INTEGER, i60 INTEGER, i61 INTEGER, i62 INTEGER, i63 INTEGER, i64 INTEGER, i65 INTEGER, i66 INTEGER, i67 INTEGER, i68 INTEGER, i69 INTEGER, i70 INTEGER, i71 INTEGER, i72 INTEGER, i73 INTEGER, i74 INTEGER, i75 INTEGER, i76 INTEGER, i77 INTEGER, i78 INTEGER, i79 INTEGER, i80 INTEGER, i81 INTEGER, i82 INTEGER, i83 INTEGER, i84 INTEGER, i85 INTEGER, i86 INTEGER, i87 INTEGER, i88 INTEGER, i89 INTEGER, i90 INTEGER, i91 INTEGER, i92 INTEGER, i93 INTEGER, i94 INTEGER, i95 INTEGER, i96 INTEGER, i97 INTEGER, i98 INTEGER, i99 INTEGER);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100);
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers2(i0 INTEGER, i1 INTEGER, i2 INTEGER, i3 INTEGER, i4 INTEGER, i5 INTEGER, i6 INTEGER, i7 INTEGER, i8 INTEGER, i9 INTEGER, i10 INTEGER, i11 INTEGER, i12 INTEGER, i13 INTEGER, i14 INTEGER, i15 INTEGER, i16 INTEGER, i17 INTEGER, i18 INTEGER, i19 INTEGER, i20 INTEGER, i21 INTEGER, i22 INTEGER, i23 INTEGER, i24 INTEGER, i25 INTEGER, i26 INTEGER, i27 INTEGER, i28 INTEGER, i29 INTEGER, i30 INTEGER, i31 INTEGER, i32 INTEGER, i33 INTEGER, i34 INTEGER, i35 INTEGER, i36 INTEGER, i37 INTEGER, i38 INTEGER, i39 INTEGER, i40 INTEGER, i41 INTEGER, i42 INTEGER, i43 INTEGER, i44 INTEGER, i45 INTEGER, i46 INTEGER, i47 INTEGER, i48 INTEGER, i49 INTEGER, i50 INTEGER, i51 INTEGER, i52 INTEGER, i53 INTEGER, i54 INTEGER, i55 INTEGER, i56 INTEGER, i57 INTEGER, i58 INTEGER, i59 INTEGER, i60 INTEGER, i61 INTEGER, i62 INTEGER, i63 INTEGER, i64 INTEGER, i65 INTEGER, i66 INTEGER, i67 INTEGER, i68 INTEGER, i69 INTEGER, i70 INTEGER, i71 INTEGER, i72 INTEGER, i73 INTEGER, i74 INTEGER, i75 INTEGER, i76 INTEGER, i77 INTEGER, i78 INTEGER, i79 INTEGER, i80 INTEGER, i81 INTEGER, i82 INTEGER, i83 INTEGER, i84 INTEGER, i85 INTEGER, i86 INTEGER, i87 INTEGER, i88 INTEGER, i89 INTEGER, i90 INTEGER, i91 INTEGER, i92 INTEGER, i93 INTEGER, i94 INTEGER, i95 INTEGER, i96 INTEGER, i97 INTEGER, i98 INTEGER, i99 INTEGER);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers2 VALUES (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers2 VALUES (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100);
|
||||
|
||||
statement ok
|
||||
COMMIT
|
||||
|
||||
statement ok
|
||||
DROP TABLE integers
|
||||
|
||||
statement ok
|
||||
DROP TABLE integers2
|
||||
|
||||
query I
|
||||
SELECT total_blocks * block_size < 15 * 262144 FROM pragma_database_size()
|
||||
----
|
||||
true
|
||||
|
||||
endloop
|
||||
68
external/duckdb/test/sql/storage/partial_blocks/many_columns_lists.test_slow
vendored
Normal file
68
external/duckdb/test/sql/storage/partial_blocks/many_columns_lists.test_slow
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
# name: test/sql/storage/partial_blocks/many_columns_lists.test_slow
|
||||
# description: Test storing many columns with lists
|
||||
# group: [partial_blocks]
|
||||
|
||||
load __TEST_DIR__/many_columns.db
|
||||
|
||||
statement ok
|
||||
CREATE TABLE lists(i0 INTEGER[], i1 INTEGER[], i2 INTEGER[], i3 INTEGER[], i4 INTEGER[], i5 INTEGER[], i6 INTEGER[], i7 INTEGER[], i8 INTEGER[], i9 INTEGER[], i10 INTEGER[], i11 INTEGER[], i12 INTEGER[], i13 INTEGER[], i14 INTEGER[], i15 INTEGER[], i16 INTEGER[], i17 INTEGER[], i18 INTEGER[], i19 INTEGER[], i20 INTEGER[], i21 INTEGER[], i22 INTEGER[], i23 INTEGER[], i24 INTEGER[], i25 INTEGER[], i26 INTEGER[], i27 INTEGER[], i28 INTEGER[], i29 INTEGER[], i30 INTEGER[], i31 INTEGER[], i32 INTEGER[], i33 INTEGER[], i34 INTEGER[], i35 INTEGER[], i36 INTEGER[], i37 INTEGER[], i38 INTEGER[], i39 INTEGER[], i40 INTEGER[], i41 INTEGER[], i42 INTEGER[], i43 INTEGER[], i44 INTEGER[], i45 INTEGER[], i46 INTEGER[], i47 INTEGER[], i48 INTEGER[], i49 INTEGER[], i50 INTEGER[], i51 INTEGER[], i52 INTEGER[], i53 INTEGER[], i54 INTEGER[], i55 INTEGER[], i56 INTEGER[], i57 INTEGER[], i58 INTEGER[], i59 INTEGER[], i60 INTEGER[], i61 INTEGER[], i62 INTEGER[], i63 INTEGER[], i64 INTEGER[], i65 INTEGER[], i66 INTEGER[], i67 INTEGER[], i68 INTEGER[], i69 INTEGER[], i70 INTEGER[], i71 INTEGER[], i72 INTEGER[], i73 INTEGER[], i74 INTEGER[], i75 INTEGER[], i76 INTEGER[], i77 INTEGER[], i78 INTEGER[], i79 INTEGER[], i80 INTEGER[], i81 INTEGER[], i82 INTEGER[], i83 INTEGER[], i84 INTEGER[], i85 INTEGER[], i86 INTEGER[], i87 INTEGER[], i88 INTEGER[], i89 INTEGER[], i90 INTEGER[], i91 INTEGER[], i92 INTEGER[], i93 INTEGER[], i94 INTEGER[], i95 INTEGER[], i96 INTEGER[], i97 INTEGER[], i98 INTEGER[], i99 INTEGER[]);
|
||||
|
||||
statement ok
|
||||
INSERT INTO lists VALUES ([0, NULL, 0], [1, NULL, 1], [2, NULL, 2], [3, NULL, 3], [4, NULL, 4], [5, NULL, 5], [6, NULL, 6], [7, NULL, 7], [8, NULL, 8], [9, NULL, 9], [10, NULL, 10], [11, NULL, 11], [12, NULL, 12], [13, NULL, 13], [14, NULL, 14], [15, NULL, 15], [16, NULL, 16], [17, NULL, 17], [18, NULL, 18], [19, NULL, 19], [20, NULL, 20], [21, NULL, 21], [22, NULL, 22], [23, NULL, 23], [24, NULL, 24], [25, NULL, 25], [26, NULL, 26], [27, NULL, 27], [28, NULL, 28], [29, NULL, 29], [30, NULL, 30], [31, NULL, 31], [32, NULL, 32], [33, NULL, 33], [34, NULL, 34], [35, NULL, 35], [36, NULL, 36], [37, NULL, 37], [38, NULL, 38], [39, NULL, 39], [40, NULL, 40], [41, NULL, 41], [42, NULL, 42], [43, NULL, 43], [44, NULL, 44], [45, NULL, 45], [46, NULL, 46], [47, NULL, 47], [48, NULL, 48], [49, NULL, 49], [50, NULL, 50], [51, NULL, 51], [52, NULL, 52], [53, NULL, 53], [54, NULL, 54], [55, NULL, 55], [56, NULL, 56], [57, NULL, 57], [58, NULL, 58], [59, NULL, 59], [60, NULL, 60], [61, NULL, 61], [62, NULL, 62], [63, NULL, 63], [64, NULL, 64], [65, NULL, 65], [66, NULL, 66], [67, NULL, 67], [68, NULL, 68], [69, NULL, 69], [70, NULL, 70], [71, NULL, 71], [72, NULL, 72], [73, NULL, 73], [74, NULL, 74], [75, NULL, 75], [76, NULL, 76], [77, NULL, 77], [78, NULL, 78], [79, NULL, 79], [80, NULL, 80], [81, NULL, 81], [82, NULL, 82], [83, NULL, 83], [84, NULL, 84], [85, NULL, 85], [86, NULL, 86], [87, NULL, 87], [88, NULL, 88], [89, NULL, 89], [90, NULL, 90], [91, NULL, 91], [92, NULL, 92], [93, NULL, 93], [94, NULL, 94], [95, NULL, 95], [96, NULL, 96], [97, NULL, 97], [98, NULL, 98], [99, NULL, 99]);
|
||||
|
||||
query I
|
||||
SELECT total_blocks * block_size < 15 * 262144 FROM pragma_database_size()
|
||||
----
|
||||
true
|
||||
|
||||
statement ok
|
||||
INSERT INTO lists VALUES ([1, NULL, 1], [2, NULL, 2], [3, NULL, 3], [4, NULL, 4], [5, NULL, 5], [6, NULL, 6], [7, NULL, 7], [8, NULL, 8], [9, NULL, 9], [10, NULL, 10], [11, NULL, 11], [12, NULL, 12], [13, NULL, 13], [14, NULL, 14], [15, NULL, 15], [16, NULL, 16], [17, NULL, 17], [18, NULL, 18], [19, NULL, 19], [20, NULL, 20], [21, NULL, 21], [22, NULL, 22], [23, NULL, 23], [24, NULL, 24], [25, NULL, 25], [26, NULL, 26], [27, NULL, 27], [28, NULL, 28], [29, NULL, 29], [30, NULL, 30], [31, NULL, 31], [32, NULL, 32], [33, NULL, 33], [34, NULL, 34], [35, NULL, 35], [36, NULL, 36], [37, NULL, 37], [38, NULL, 38], [39, NULL, 39], [40, NULL, 40], [41, NULL, 41], [42, NULL, 42], [43, NULL, 43], [44, NULL, 44], [45, NULL, 45], [46, NULL, 46], [47, NULL, 47], [48, NULL, 48], [49, NULL, 49], [50, NULL, 50], [51, NULL, 51], [52, NULL, 52], [53, NULL, 53], [54, NULL, 54], [55, NULL, 55], [56, NULL, 56], [57, NULL, 57], [58, NULL, 58], [59, NULL, 59], [60, NULL, 60], [61, NULL, 61], [62, NULL, 62], [63, NULL, 63], [64, NULL, 64], [65, NULL, 65], [66, NULL, 66], [67, NULL, 67], [68, NULL, 68], [69, NULL, 69], [70, NULL, 70], [71, NULL, 71], [72, NULL, 72], [73, NULL, 73], [74, NULL, 74], [75, NULL, 75], [76, NULL, 76], [77, NULL, 77], [78, NULL, 78], [79, NULL, 79], [80, NULL, 80], [81, NULL, 81], [82, NULL, 82], [83, NULL, 83], [84, NULL, 84], [85, NULL, 85], [86, NULL, 86], [87, NULL, 87], [88, NULL, 88], [89, NULL, 89], [90, NULL, 90], [91, NULL, 91], [92, NULL, 92], [93, NULL, 93], [94, NULL, 94], [95, NULL, 95], [96, NULL, 96], [97, NULL, 97], [98, NULL, 98], [99, NULL, 99], [100, NULL, 100]);
|
||||
|
||||
query I
|
||||
select count(*) from pragma_storage_info('lists') where block_id IS NULL;
|
||||
----
|
||||
0
|
||||
|
||||
query I nosort q0
|
||||
SELECT total_blocks FROM pragma_database_size()
|
||||
----
|
||||
|
||||
|
||||
loop i 0 100
|
||||
|
||||
query III
|
||||
SELECT i${i}[1]=${i}, i${i}[2]=${i}, i${i}[3]=${i} FROM lists
|
||||
----
|
||||
true NULL true
|
||||
false NULL false
|
||||
|
||||
query III
|
||||
SELECT i${i}[1]=${i}+1, i${i}[2]=${i}+1, i${i}[3]=${i}+1 FROM lists
|
||||
----
|
||||
false NULL false
|
||||
true NULL true
|
||||
|
||||
endloop
|
||||
|
||||
restart
|
||||
|
||||
loop i 0 100
|
||||
|
||||
query III
|
||||
SELECT i${i}[1]=${i}, i${i}[2]=${i}, i${i}[3]=${i} FROM lists
|
||||
----
|
||||
true NULL true
|
||||
false NULL false
|
||||
|
||||
query III
|
||||
SELECT i${i}[1]=${i}+1, i${i}[2]=${i}+1, i${i}[3]=${i}+1 FROM lists
|
||||
----
|
||||
false NULL false
|
||||
true NULL true
|
||||
|
||||
endloop
|
||||
|
||||
query I nosort q0
|
||||
SELECT total_blocks FROM pragma_database_size()
|
||||
----
|
||||
|
||||
61
external/duckdb/test/sql/storage/partial_blocks/many_columns_rle.test
vendored
Normal file
61
external/duckdb/test/sql/storage/partial_blocks/many_columns_rle.test
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
# name: test/sql/storage/partial_blocks/many_columns_rle.test
|
||||
# description: Test storing many columns with RLE
|
||||
# group: [partial_blocks]
|
||||
|
||||
load __TEST_DIR__/many_columns.db
|
||||
|
||||
statement ok
|
||||
PRAGMA force_compression='rle'
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i0 INTEGER, i1 INTEGER, i2 INTEGER, i3 INTEGER, i4 INTEGER, i5 INTEGER, i6 INTEGER, i7 INTEGER, i8 INTEGER, i9 INTEGER, i10 INTEGER, i11 INTEGER, i12 INTEGER, i13 INTEGER, i14 INTEGER, i15 INTEGER, i16 INTEGER, i17 INTEGER, i18 INTEGER, i19 INTEGER, i20 INTEGER, i21 INTEGER, i22 INTEGER, i23 INTEGER, i24 INTEGER, i25 INTEGER, i26 INTEGER, i27 INTEGER, i28 INTEGER, i29 INTEGER, i30 INTEGER, i31 INTEGER, i32 INTEGER, i33 INTEGER, i34 INTEGER, i35 INTEGER, i36 INTEGER, i37 INTEGER, i38 INTEGER, i39 INTEGER, i40 INTEGER, i41 INTEGER, i42 INTEGER, i43 INTEGER, i44 INTEGER, i45 INTEGER, i46 INTEGER, i47 INTEGER, i48 INTEGER, i49 INTEGER, i50 INTEGER, i51 INTEGER, i52 INTEGER, i53 INTEGER, i54 INTEGER, i55 INTEGER, i56 INTEGER, i57 INTEGER, i58 INTEGER, i59 INTEGER, i60 INTEGER, i61 INTEGER, i62 INTEGER, i63 INTEGER, i64 INTEGER, i65 INTEGER, i66 INTEGER, i67 INTEGER, i68 INTEGER, i69 INTEGER, i70 INTEGER, i71 INTEGER, i72 INTEGER, i73 INTEGER, i74 INTEGER, i75 INTEGER, i76 INTEGER, i77 INTEGER, i78 INTEGER, i79 INTEGER, i80 INTEGER, i81 INTEGER, i82 INTEGER, i83 INTEGER, i84 INTEGER, i85 INTEGER, i86 INTEGER, i87 INTEGER, i88 INTEGER, i89 INTEGER, i90 INTEGER, i91 INTEGER, i92 INTEGER, i93 INTEGER, i94 INTEGER, i95 INTEGER, i96 INTEGER, i97 INTEGER, i98 INTEGER, i99 INTEGER);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99);
|
||||
|
||||
query I
|
||||
SELECT total_blocks * block_size < 10 * 262144 FROM pragma_database_size()
|
||||
----
|
||||
true
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100);
|
||||
|
||||
loop i 0 100
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i} FROM integers
|
||||
----
|
||||
true
|
||||
false
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i}+1 FROM integers
|
||||
----
|
||||
false
|
||||
true
|
||||
|
||||
endloop
|
||||
|
||||
restart
|
||||
|
||||
loop i 0 100
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i} FROM integers
|
||||
----
|
||||
true
|
||||
false
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i}+1 FROM integers
|
||||
----
|
||||
false
|
||||
true
|
||||
|
||||
endloop
|
||||
|
||||
query I
|
||||
SELECT total_blocks * block_size < 10 * 262144 FROM pragma_database_size()
|
||||
----
|
||||
true
|
||||
71
external/duckdb/test/sql/storage/partial_blocks/many_columns_storage.test
vendored
Normal file
71
external/duckdb/test/sql/storage/partial_blocks/many_columns_storage.test
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
# name: test/sql/storage/partial_blocks/many_columns_storage.test
|
||||
# description: Test storing many columns
|
||||
# group: [partial_blocks]
|
||||
|
||||
load __TEST_DIR__/many_columns.db
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i0 INTEGER, i1 INTEGER, i2 INTEGER, i3 INTEGER, i4 INTEGER, i5 INTEGER, i6 INTEGER, i7 INTEGER, i8 INTEGER, i9 INTEGER, i10 INTEGER, i11 INTEGER, i12 INTEGER, i13 INTEGER, i14 INTEGER, i15 INTEGER, i16 INTEGER, i17 INTEGER, i18 INTEGER, i19 INTEGER, i20 INTEGER, i21 INTEGER, i22 INTEGER, i23 INTEGER, i24 INTEGER, i25 INTEGER, i26 INTEGER, i27 INTEGER, i28 INTEGER, i29 INTEGER, i30 INTEGER, i31 INTEGER, i32 INTEGER, i33 INTEGER, i34 INTEGER, i35 INTEGER, i36 INTEGER, i37 INTEGER, i38 INTEGER, i39 INTEGER, i40 INTEGER, i41 INTEGER, i42 INTEGER, i43 INTEGER, i44 INTEGER, i45 INTEGER, i46 INTEGER, i47 INTEGER, i48 INTEGER, i49 INTEGER, i50 INTEGER, i51 INTEGER, i52 INTEGER, i53 INTEGER, i54 INTEGER, i55 INTEGER, i56 INTEGER, i57 INTEGER, i58 INTEGER, i59 INTEGER, i60 INTEGER, i61 INTEGER, i62 INTEGER, i63 INTEGER, i64 INTEGER, i65 INTEGER, i66 INTEGER, i67 INTEGER, i68 INTEGER, i69 INTEGER, i70 INTEGER, i71 INTEGER, i72 INTEGER, i73 INTEGER, i74 INTEGER, i75 INTEGER, i76 INTEGER, i77 INTEGER, i78 INTEGER, i79 INTEGER, i80 INTEGER, i81 INTEGER, i82 INTEGER, i83 INTEGER, i84 INTEGER, i85 INTEGER, i86 INTEGER, i87 INTEGER, i88 INTEGER, i89 INTEGER, i90 INTEGER, i91 INTEGER, i92 INTEGER, i93 INTEGER, i94 INTEGER, i95 INTEGER, i96 INTEGER, i97 INTEGER, i98 INTEGER, i99 INTEGER);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99);
|
||||
|
||||
query I
|
||||
SELECT total_blocks * block_size < 10 * 262144 FROM pragma_database_size()
|
||||
----
|
||||
true
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100);
|
||||
|
||||
statement ok
|
||||
CHECKPOINT
|
||||
|
||||
query I
|
||||
select count(*) from pragma_storage_info('integers') where block_id IS NULL;
|
||||
----
|
||||
0
|
||||
|
||||
query I nosort q0
|
||||
SELECT total_blocks FROM pragma_database_size()
|
||||
----
|
||||
|
||||
|
||||
loop i 0 100
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i} FROM integers
|
||||
----
|
||||
true
|
||||
false
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i}+1 FROM integers
|
||||
----
|
||||
false
|
||||
true
|
||||
|
||||
endloop
|
||||
|
||||
restart
|
||||
|
||||
loop i 0 100
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i} FROM integers
|
||||
----
|
||||
true
|
||||
false
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i}+1 FROM integers
|
||||
----
|
||||
false
|
||||
true
|
||||
|
||||
endloop
|
||||
|
||||
query I nosort q0
|
||||
SELECT total_blocks FROM pragma_database_size()
|
||||
----
|
||||
|
||||
58
external/duckdb/test/sql/storage/partial_blocks/many_columns_strings.test
vendored
Normal file
58
external/duckdb/test/sql/storage/partial_blocks/many_columns_strings.test
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
# name: test/sql/storage/partial_blocks/many_columns_strings.test
|
||||
# description: Test storing many columns
|
||||
# group: [partial_blocks]
|
||||
|
||||
load __TEST_DIR__/many_columns.db
|
||||
|
||||
statement ok
|
||||
CREATE TABLE strings(i0 VARCHAR, i1 VARCHAR, i2 VARCHAR, i3 VARCHAR, i4 VARCHAR, i5 VARCHAR, i6 VARCHAR, i7 VARCHAR, i8 VARCHAR, i9 VARCHAR, i10 VARCHAR, i11 VARCHAR, i12 VARCHAR, i13 VARCHAR, i14 VARCHAR, i15 VARCHAR, i16 VARCHAR, i17 VARCHAR, i18 VARCHAR, i19 VARCHAR, i20 VARCHAR, i21 VARCHAR, i22 VARCHAR, i23 VARCHAR, i24 VARCHAR, i25 VARCHAR, i26 VARCHAR, i27 VARCHAR, i28 VARCHAR, i29 VARCHAR, i30 VARCHAR, i31 VARCHAR, i32 VARCHAR, i33 VARCHAR, i34 VARCHAR, i35 VARCHAR, i36 VARCHAR, i37 VARCHAR, i38 VARCHAR, i39 VARCHAR, i40 VARCHAR, i41 VARCHAR, i42 VARCHAR, i43 VARCHAR, i44 VARCHAR, i45 VARCHAR, i46 VARCHAR, i47 VARCHAR, i48 VARCHAR, i49 VARCHAR, i50 VARCHAR, i51 VARCHAR, i52 VARCHAR, i53 VARCHAR, i54 VARCHAR, i55 VARCHAR, i56 VARCHAR, i57 VARCHAR, i58 VARCHAR, i59 VARCHAR, i60 VARCHAR, i61 VARCHAR, i62 VARCHAR, i63 VARCHAR, i64 VARCHAR, i65 VARCHAR, i66 VARCHAR, i67 VARCHAR, i68 VARCHAR, i69 VARCHAR, i70 VARCHAR, i71 VARCHAR, i72 VARCHAR, i73 VARCHAR, i74 VARCHAR, i75 VARCHAR, i76 VARCHAR, i77 VARCHAR, i78 VARCHAR, i79 VARCHAR, i80 VARCHAR, i81 VARCHAR, i82 VARCHAR, i83 VARCHAR, i84 VARCHAR, i85 VARCHAR, i86 VARCHAR, i87 VARCHAR, i88 VARCHAR, i89 VARCHAR, i90 VARCHAR, i91 VARCHAR, i92 VARCHAR, i93 VARCHAR, i94 VARCHAR, i95 VARCHAR, i96 VARCHAR, i97 VARCHAR, i98 VARCHAR, i99 VARCHAR);
|
||||
|
||||
statement ok
|
||||
INSERT INTO strings VALUES (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99);
|
||||
|
||||
query I
|
||||
SELECT total_blocks * block_size < 15 * 262144 FROM pragma_database_size()
|
||||
----
|
||||
true
|
||||
|
||||
statement ok
|
||||
INSERT INTO strings VALUES (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100);
|
||||
|
||||
loop i 0 100
|
||||
|
||||
query I
|
||||
SELECT i${i}='${i}' FROM strings
|
||||
----
|
||||
true
|
||||
false
|
||||
|
||||
query I
|
||||
SELECT i${i}=(${i}+1)::VARCHAR FROM strings
|
||||
----
|
||||
false
|
||||
true
|
||||
|
||||
endloop
|
||||
|
||||
restart
|
||||
|
||||
loop i 0 100
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i}::VARCHAR FROM strings
|
||||
----
|
||||
true
|
||||
false
|
||||
|
||||
query I
|
||||
SELECT i${i}=(${i}+1)::VARCHAR FROM strings
|
||||
----
|
||||
false
|
||||
true
|
||||
|
||||
endloop
|
||||
|
||||
query I
|
||||
SELECT total_blocks * block_size < 15 * 262144 FROM pragma_database_size()
|
||||
----
|
||||
true
|
||||
74
external/duckdb/test/sql/storage/partial_blocks/many_columns_structs.test_slow
vendored
Normal file
74
external/duckdb/test/sql/storage/partial_blocks/many_columns_structs.test_slow
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
# name: test/sql/storage/partial_blocks/many_columns_structs.test_slow
|
||||
# description: Test storing many columns of structs
|
||||
# group: [partial_blocks]
|
||||
|
||||
load __TEST_DIR__/many_columns.db
|
||||
|
||||
statement ok
|
||||
CREATE TABLE structs(i0 ROW(i INTEGER, j INTEGER), i1 ROW(i INTEGER, j INTEGER), i2 ROW(i INTEGER, j INTEGER), i3 ROW(i INTEGER, j INTEGER), i4 ROW(i INTEGER, j INTEGER), i5 ROW(i INTEGER, j INTEGER), i6 ROW(i INTEGER, j INTEGER), i7 ROW(i INTEGER, j INTEGER), i8 ROW(i INTEGER, j INTEGER), i9 ROW(i INTEGER, j INTEGER), i10 ROW(i INTEGER, j INTEGER), i11 ROW(i INTEGER, j INTEGER), i12 ROW(i INTEGER, j INTEGER), i13 ROW(i INTEGER, j INTEGER), i14 ROW(i INTEGER, j INTEGER), i15 ROW(i INTEGER, j INTEGER), i16 ROW(i INTEGER, j INTEGER), i17 ROW(i INTEGER, j INTEGER), i18 ROW(i INTEGER, j INTEGER), i19 ROW(i INTEGER, j INTEGER), i20 ROW(i INTEGER, j INTEGER), i21 ROW(i INTEGER, j INTEGER), i22 ROW(i INTEGER, j INTEGER), i23 ROW(i INTEGER, j INTEGER), i24 ROW(i INTEGER, j INTEGER), i25 ROW(i INTEGER, j INTEGER), i26 ROW(i INTEGER, j INTEGER), i27 ROW(i INTEGER, j INTEGER), i28 ROW(i INTEGER, j INTEGER), i29 ROW(i INTEGER, j INTEGER), i30 ROW(i INTEGER, j INTEGER), i31 ROW(i INTEGER, j INTEGER), i32 ROW(i INTEGER, j INTEGER), i33 ROW(i INTEGER, j INTEGER), i34 ROW(i INTEGER, j INTEGER), i35 ROW(i INTEGER, j INTEGER), i36 ROW(i INTEGER, j INTEGER), i37 ROW(i INTEGER, j INTEGER), i38 ROW(i INTEGER, j INTEGER), i39 ROW(i INTEGER, j INTEGER), i40 ROW(i INTEGER, j INTEGER), i41 ROW(i INTEGER, j INTEGER), i42 ROW(i INTEGER, j INTEGER), i43 ROW(i INTEGER, j INTEGER), i44 ROW(i INTEGER, j INTEGER), i45 ROW(i INTEGER, j INTEGER), i46 ROW(i INTEGER, j INTEGER), i47 ROW(i INTEGER, j INTEGER), i48 ROW(i INTEGER, j INTEGER), i49 ROW(i INTEGER, j INTEGER), i50 ROW(i INTEGER, j INTEGER), i51 ROW(i INTEGER, j INTEGER), i52 ROW(i INTEGER, j INTEGER), i53 ROW(i INTEGER, j INTEGER), i54 ROW(i INTEGER, j INTEGER), i55 ROW(i INTEGER, j INTEGER), i56 ROW(i INTEGER, j INTEGER), i57 ROW(i INTEGER, j INTEGER), i58 ROW(i INTEGER, j INTEGER), i59 ROW(i INTEGER, j INTEGER), i60 ROW(i INTEGER, j INTEGER), i61 ROW(i INTEGER, j INTEGER), i62 ROW(i INTEGER, j INTEGER), i63 ROW(i INTEGER, j INTEGER), i64 ROW(i INTEGER, j INTEGER), i65 ROW(i INTEGER, j INTEGER), i66 ROW(i INTEGER, j INTEGER), i67 ROW(i INTEGER, j INTEGER), i68 ROW(i INTEGER, j INTEGER), i69 ROW(i INTEGER, j INTEGER), i70 ROW(i INTEGER, j INTEGER), i71 ROW(i INTEGER, j INTEGER), i72 ROW(i INTEGER, j INTEGER), i73 ROW(i INTEGER, j INTEGER), i74 ROW(i INTEGER, j INTEGER), i75 ROW(i INTEGER, j INTEGER), i76 ROW(i INTEGER, j INTEGER), i77 ROW(i INTEGER, j INTEGER), i78 ROW(i INTEGER, j INTEGER), i79 ROW(i INTEGER, j INTEGER), i80 ROW(i INTEGER, j INTEGER), i81 ROW(i INTEGER, j INTEGER), i82 ROW(i INTEGER, j INTEGER), i83 ROW(i INTEGER, j INTEGER), i84 ROW(i INTEGER, j INTEGER), i85 ROW(i INTEGER, j INTEGER), i86 ROW(i INTEGER, j INTEGER), i87 ROW(i INTEGER, j INTEGER), i88 ROW(i INTEGER, j INTEGER), i89 ROW(i INTEGER, j INTEGER), i90 ROW(i INTEGER, j INTEGER), i91 ROW(i INTEGER, j INTEGER), i92 ROW(i INTEGER, j INTEGER), i93 ROW(i INTEGER, j INTEGER), i94 ROW(i INTEGER, j INTEGER), i95 ROW(i INTEGER, j INTEGER), i96 ROW(i INTEGER, j INTEGER), i97 ROW(i INTEGER, j INTEGER), i98 ROW(i INTEGER, j INTEGER), i99 ROW(i INTEGER, j INTEGER));
|
||||
|
||||
statement ok
|
||||
INSERT INTO structs VALUES (ROW(0, 0), ROW(1, 1), ROW(2, 2), ROW(3, 3), ROW(4, 4), ROW(5, 5), ROW(6, 6), ROW(7, 7), ROW(8, 8), ROW(9, 9), ROW(10, 10), ROW(11, 11), ROW(12, 12), ROW(13, 13), ROW(14, 14), ROW(15, 15), ROW(16, 16), ROW(17, 17), ROW(18, 18), ROW(19, 19), ROW(20, 20), ROW(21, 21), ROW(22, 22), ROW(23, 23), ROW(24, 24), ROW(25, 25), ROW(26, 26), ROW(27, 27), ROW(28, 28), ROW(29, 29), ROW(30, 30), ROW(31, 31), ROW(32, 32), ROW(33, 33), ROW(34, 34), ROW(35, 35), ROW(36, 36), ROW(37, 37), ROW(38, 38), ROW(39, 39), ROW(40, 40), ROW(41, 41), ROW(42, 42), ROW(43, 43), ROW(44, 44), ROW(45, 45), ROW(46, 46), ROW(47, 47), ROW(48, 48), ROW(49, 49), ROW(50, 50), ROW(51, 51), ROW(52, 52), ROW(53, 53), ROW(54, 54), ROW(55, 55), ROW(56, 56), ROW(57, 57), ROW(58, 58), ROW(59, 59), ROW(60, 60), ROW(61, 61), ROW(62, 62), ROW(63, 63), ROW(64, 64), ROW(65, 65), ROW(66, 66), ROW(67, 67), ROW(68, 68), ROW(69, 69), ROW(70, 70), ROW(71, 71), ROW(72, 72), ROW(73, 73), ROW(74, 74), ROW(75, 75), ROW(76, 76), ROW(77, 77), ROW(78, 78), ROW(79, 79), ROW(80, 80), ROW(81, 81), ROW(82, 82), ROW(83, 83), ROW(84, 84), ROW(85, 85), ROW(86, 86), ROW(87, 87), ROW(88, 88), ROW(89, 89), ROW(90, 90), ROW(91, 91), ROW(92, 92), ROW(93, 93), ROW(94, 94), ROW(95, 95), ROW(96, 96), ROW(97, 97), ROW(98, 98), ROW(99, 99));
|
||||
|
||||
statement ok
|
||||
CHECKPOINT
|
||||
|
||||
query I
|
||||
SELECT total_blocks * block_size < 15 * 262144 FROM pragma_database_size()
|
||||
----
|
||||
true
|
||||
|
||||
statement ok
|
||||
INSERT INTO structs VALUES (ROW(1, 1), ROW(2, 2), ROW(3, 3), ROW(4, 4), ROW(5, 5), ROW(6, 6), ROW(7, 7), ROW(8, 8), ROW(9, 9), ROW(10, 10), ROW(11, 11), ROW(12, 12), ROW(13, 13), ROW(14, 14), ROW(15, 15), ROW(16, 16), ROW(17, 17), ROW(18, 18), ROW(19, 19), ROW(20, 20), ROW(21, 21), ROW(22, 22), ROW(23, 23), ROW(24, 24), ROW(25, 25), ROW(26, 26), ROW(27, 27), ROW(28, 28), ROW(29, 29), ROW(30, 30), ROW(31, 31), ROW(32, 32), ROW(33, 33), ROW(34, 34), ROW(35, 35), ROW(36, 36), ROW(37, 37), ROW(38, 38), ROW(39, 39), ROW(40, 40), ROW(41, 41), ROW(42, 42), ROW(43, 43), ROW(44, 44), ROW(45, 45), ROW(46, 46), ROW(47, 47), ROW(48, 48), ROW(49, 49), ROW(50, 50), ROW(51, 51), ROW(52, 52), ROW(53, 53), ROW(54, 54), ROW(55, 55), ROW(56, 56), ROW(57, 57), ROW(58, 58), ROW(59, 59), ROW(60, 60), ROW(61, 61), ROW(62, 62), ROW(63, 63), ROW(64, 64), ROW(65, 65), ROW(66, 66), ROW(67, 67), ROW(68, 68), ROW(69, 69), ROW(70, 70), ROW(71, 71), ROW(72, 72), ROW(73, 73), ROW(74, 74), ROW(75, 75), ROW(76, 76), ROW(77, 77), ROW(78, 78), ROW(79, 79), ROW(80, 80), ROW(81, 81), ROW(82, 82), ROW(83, 83), ROW(84, 84), ROW(85, 85), ROW(86, 86), ROW(87, 87), ROW(88, 88), ROW(89, 89), ROW(90, 90), ROW(91, 91), ROW(92, 92), ROW(93, 93), ROW(94, 94), ROW(95, 95), ROW(96, 96), ROW(97, 97), ROW(98, 98), ROW(99, 99), ROW(100, 100));
|
||||
|
||||
statement ok
|
||||
CHECKPOINT
|
||||
|
||||
query I
|
||||
select count(*) from pragma_storage_info('structs') where block_id IS NULL;
|
||||
----
|
||||
0
|
||||
|
||||
query I nosort q0
|
||||
SELECT total_blocks FROM pragma_database_size()
|
||||
----
|
||||
|
||||
|
||||
loop i 0 100
|
||||
|
||||
query II
|
||||
SELECT i${i}['i']=${i}, i${i}['j']=${i} FROM structs
|
||||
----
|
||||
true true
|
||||
false false
|
||||
|
||||
query II
|
||||
SELECT i${i}['i']=${i}+1, i${i}['j']=${i}+1 FROM structs
|
||||
----
|
||||
false false
|
||||
true true
|
||||
|
||||
endloop
|
||||
|
||||
restart
|
||||
|
||||
loop i 0 100
|
||||
|
||||
query II
|
||||
SELECT i${i}['i']=${i}, i${i}['j']=${i} FROM structs
|
||||
----
|
||||
true true
|
||||
false false
|
||||
|
||||
query II
|
||||
SELECT i${i}['i']=${i}+1, i${i}['j']=${i}+1 FROM structs
|
||||
----
|
||||
false false
|
||||
true true
|
||||
|
||||
endloop
|
||||
|
||||
query I nosort q0
|
||||
SELECT total_blocks FROM pragma_database_size()
|
||||
----
|
||||
|
||||
65
external/duckdb/test/sql/storage/partial_blocks/many_columns_validity.test
vendored
Normal file
65
external/duckdb/test/sql/storage/partial_blocks/many_columns_validity.test
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
# name: test/sql/storage/partial_blocks/many_columns_validity.test
|
||||
# description: Test storing many columns
|
||||
# group: [partial_blocks]
|
||||
|
||||
load __TEST_DIR__/many_columns.db
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i0 INTEGER, i1 INTEGER, i2 INTEGER, i3 INTEGER, i4 INTEGER, i5 INTEGER, i6 INTEGER, i7 INTEGER, i8 INTEGER, i9 INTEGER, i10 INTEGER, i11 INTEGER, i12 INTEGER, i13 INTEGER, i14 INTEGER, i15 INTEGER, i16 INTEGER, i17 INTEGER, i18 INTEGER, i19 INTEGER, i20 INTEGER, i21 INTEGER, i22 INTEGER, i23 INTEGER, i24 INTEGER, i25 INTEGER, i26 INTEGER, i27 INTEGER, i28 INTEGER, i29 INTEGER, i30 INTEGER, i31 INTEGER, i32 INTEGER, i33 INTEGER, i34 INTEGER, i35 INTEGER, i36 INTEGER, i37 INTEGER, i38 INTEGER, i39 INTEGER, i40 INTEGER, i41 INTEGER, i42 INTEGER, i43 INTEGER, i44 INTEGER, i45 INTEGER, i46 INTEGER, i47 INTEGER, i48 INTEGER, i49 INTEGER, i50 INTEGER, i51 INTEGER, i52 INTEGER, i53 INTEGER, i54 INTEGER, i55 INTEGER, i56 INTEGER, i57 INTEGER, i58 INTEGER, i59 INTEGER, i60 INTEGER, i61 INTEGER, i62 INTEGER, i63 INTEGER, i64 INTEGER, i65 INTEGER, i66 INTEGER, i67 INTEGER, i68 INTEGER, i69 INTEGER, i70 INTEGER, i71 INTEGER, i72 INTEGER, i73 INTEGER, i74 INTEGER, i75 INTEGER, i76 INTEGER, i77 INTEGER, i78 INTEGER, i79 INTEGER, i80 INTEGER, i81 INTEGER, i82 INTEGER, i83 INTEGER, i84 INTEGER, i85 INTEGER, i86 INTEGER, i87 INTEGER, i88 INTEGER, i89 INTEGER, i90 INTEGER, i91 INTEGER, i92 INTEGER, i93 INTEGER, i94 INTEGER, i95 INTEGER, i96 INTEGER, i97 INTEGER, i98 INTEGER, i99 INTEGER);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99);
|
||||
|
||||
query I
|
||||
SELECT total_blocks * block_size < 15 * 262144 FROM pragma_database_size()
|
||||
----
|
||||
true
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers (i1) VALUES (NULL);
|
||||
|
||||
loop i 0 100
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i} FROM integers
|
||||
----
|
||||
true
|
||||
false
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i}+1 FROM integers
|
||||
----
|
||||
false
|
||||
true
|
||||
NULL
|
||||
|
||||
endloop
|
||||
|
||||
restart
|
||||
|
||||
loop i 0 100
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i} FROM integers
|
||||
----
|
||||
true
|
||||
false
|
||||
NULL
|
||||
|
||||
query I
|
||||
SELECT i${i}=${i}+1 FROM integers
|
||||
----
|
||||
false
|
||||
true
|
||||
NULL
|
||||
|
||||
endloop
|
||||
|
||||
query I
|
||||
SELECT total_blocks * block_size < 15 * 262144 FROM pragma_database_size()
|
||||
----
|
||||
true
|
||||
Reference in New Issue
Block a user