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
|
# name: test/sql/storage/compression/string/big_strings.test
# description: Test string compression with big strings, which are currently unsupported by the compression algorithms
# group: [string]
statement ok
ATTACH '__TEST_DIR__/test_big_strings_new.db' AS db_v13 (STORAGE_VERSION 'v1.3.0');
statement ok
ATTACH '__TEST_DIR__/test_big_strings_old.db' AS db_v1 (STORAGE_VERSION 'v1.0.0');
foreach compression fsst dictionary dict_fsst
statement ok
USE db_v1
onlyif compression=dict_fsst
statement ok
USE db_v13
statement ok
PRAGMA force_compression='${compression}'
# Baseline, non big string, dictionary compression should work
statement ok
CREATE TABLE normal_string (a VARCHAR);
statement ok
INSERT INTO normal_string values (repeat('a', 3900));
INSERT INTO normal_string values (repeat('b', 3900));
INSERT INTO normal_string values (repeat('a', 3900));
INSERT INTO normal_string values (repeat('b', 3900));
statement ok
checkpoint
query III
SELECT list_aggr(str_split(a,''),'min'), list_aggr(str_split(a,''),'min'), strlen(a) from normal_string
----
a a 3900
b b 3900
a a 3900
b b 3900
query I
SELECT lower(compression)='${compression}' FROM pragma_storage_info('normal_string') WHERE segment_type ILIKE 'VARCHAR' LIMIT 1
----
1
statement ok
PRAGMA force_compression='uncompressed'
# Big string, should disable string compression
statement ok
CREATE TABLE big_string (a VARCHAR);
statement ok
INSERT INTO big_string values (repeat('a', 8000));
INSERT INTO big_string values (repeat('b', 8000));
INSERT INTO big_string values (repeat('a', 8000));
INSERT INTO big_string values (repeat('b', 8000));
statement ok
checkpoint
query III
SELECT list_aggr(str_split(a,''),'min'), list_aggr(str_split(a,''),'min'), strlen(a) from big_string
----
a a 8000
b b 8000
a a 8000
b b 8000
query I
SELECT lower(compression) FROM pragma_storage_info('big_string') WHERE segment_type ILIKE 'VARCHAR' LIMIT 1
----
uncompressed
statement ok
DROP TABLE big_string;
statement ok
DROP TABLE normal_string;
endloop
|