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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
# name: test/sql/storage/compression/bitpacking/bitpacking_bitwidths.test_slow
# description: Test bitpacking with values that compress to all different widths
# group: [bitpacking]
# load the DB from disk
load __TEST_DIR__/test_bitpacking.db
statement ok
PRAGMA force_compression = 'bitpacking'
foreach bitpacking_mode delta_for for constant_delta constant
foreach typesize 8 16 32 64
statement ok
PRAGMA force_bitpacking_mode='${bitpacking_mode}'
statement ok
CREATE TABLE test_unsigned AS SELECT cast(2**(i//2048) as UINT${typesize}) i FROM range(${typesize}*2048) tbl(i);
statement ok
CHECKPOINT;
query I
SELECT count(*)=${typesize} FROM (SELECT count(i) FROM test_unsigned GROUP BY i);
----
1
query I
SELECT DISTINCT(c_i) FROM (SELECT count(i) AS c_i FROM test_unsigned GROUP BY i);
----
2048
query IIII
select count(*)=1, count(*)=(${typesize}-1) , AVG(c_i), (i//delta) AS diff_to_next_row from (
SELECT i, count(i) as c_i, lag(i, 1) OVER (ORDER BY i) delta FROM test_unsigned GROUP BY i
) GROUP BY diff_to_next_row ORDER BY ALL;
----
False True 2048.000000 2
True False 2048.000000 NULL
statement ok
CREATE TABLE test_signed_neg AS SELECT cast(-(2**(i//2048)) as INT${typesize}) i FROM range(${typesize}*2048) tbl(i);
statement ok
CHECKPOINT;
query I
SELECT count(*)=${typesize} FROM (SELECT count(i) FROM test_signed_neg GROUP BY i);
----
1
query I
SELECT DISTINCT(c_i) FROM (SELECT count(i) AS c_i FROM test_signed_neg GROUP BY i);
----
2048
query IIII
select count(*)=1, count(*)=(${typesize}-1) , AVG(c_i), (i//delta) AS diff_to_next_row from (
SELECT i, count(i) as c_i, lag(i, 1) OVER (ORDER BY i) delta FROM test_unsigned GROUP BY i
) GROUP BY diff_to_next_row ORDER BY ALL;
----
False True 2048.000000 2
True False 2048.000000 NULL
statement ok
CREATE TABLE test_signed_pos AS SELECT cast(2**(i//2048) as INT${typesize}) i FROM range((${typesize}-1)*2048) tbl(i);
statement ok
CHECKPOINT;
query I
SELECT count(*)=(${typesize}-1) FROM (SELECT count(i) FROM test_signed_pos GROUP BY i);
----
1
query I
SELECT DISTINCT(c_i) FROM (SELECT count(i) AS c_i FROM test_signed_neg GROUP BY i);
----
2048
query IIII
select count(*)=1, count(*)=(${typesize}-1) , AVG(c_i), (i//delta) AS diff_to_next_row from (
SELECT i, count(i) as c_i, lag(i, 1) OVER (ORDER BY i) delta FROM test_unsigned GROUP BY i
) GROUP BY diff_to_next_row ORDER BY ALL;
----
False True 2048.000000 2
True False 2048.000000 NULL
statement ok
DROP TABLE test_unsigned
statement ok
DROP TABLE test_signed_neg
statement ok
DROP TABLE test_signed_pos
endloop
foreach type <integral> bool
statement ok
CREATE TABLE test_nullpack AS SELECT CAST((i//3000)%2 as ${type}) as i FROM range(0,12000) tbl(i);
statement ok
CHECKPOINT;
query I
SELECT AVG(cast (i as int)) FROM test_nullpack
----
0.5
statement ok
drop table test_nullpack
endloop
endloop
|