File: bitpacking_lists.test_slow

package info (click to toggle)
duckdb 1.5.1-3
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 299,196 kB
  • sloc: cpp: 865,414; ansic: 57,292; python: 18,871; sql: 12,663; lisp: 11,751; yacc: 7,412; lex: 1,682; sh: 747; makefile: 564
file content (72 lines) | stat: -rw-r--r-- 1,674 bytes parent folder | download | duplicates (4)
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
# name: test/sql/storage/compression/bitpacking/bitpacking_lists.test_slow
# description: Test storage with Bitpacking inside lists
# group: [bitpacking]

# This test defaults to another compression function for smaller block sizes,
# because the bitpacking groups no longer fit the blocks.
require block_size 262144

load __TEST_DIR__/test_rle.db

statement ok
PRAGMA force_compression = 'bitpacking'

foreach bitpacking_mode delta_for for constant_delta constant

statement ok
PRAGMA force_bitpacking_mode='${bitpacking_mode}'

statement ok
CREATE TABLE test (id INTEGER, l INTEGER[]);

statement ok
INSERT INTO test SELECT i, case when (i//1000)%2=0 then [1, 1, 1] else [2, 2] end FROM range(200000) tbl(i)

query I
SELECT compression FROM pragma_storage_info('test') WHERE segment_type ILIKE 'INTEGER' LIMIT 1
----
BitPacking

# full unnest
query II
SELECT COUNT(*), SUM(i) FROM (SELECT UNNEST(l) FROM test) tbl(i)
----
500000	700000

# filters/skips
query II
SELECT COUNT(*), SUM(i) FROM (SELECT UNNEST(l) FROM test WHERE id>=5000 AND id<6000) tbl(i)
----
2000	4000

# zonemaps
query II
SELECT COUNT(*), SUM(i) FROM (SELECT UNNEST(l) FROM test WHERE id>=150000 AND id<160000) tbl(i)
----
25000	35000

statement ok
CREATE INDEX i_index ON test(id)

# index lookup in lists
query II
SELECT * FROM test WHERE id=150001
----
150001	[1, 1, 1]

# large lists
statement ok
CREATE TABLE test_large_list AS SELECT i%100 AS id, LIST(-i) AS list FROM range(0,100000) tbl(i) GROUP BY id;

query II
SELECT COUNT(*), SUM(i) FROM (SELECT UNNEST(list) FROM test_large_list) tbl(i)
----
100000	-4999950000

statement ok
drop table test_large_list

statement ok
drop table test

endloop