File: test_index_checkpoint.test

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 (32 lines) | stat: -rw-r--r-- 1,065 bytes parent folder | download | duplicates (3)
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
# name: test/sql/storage/test_index_checkpoint.test
# description: Verify that database footprint remains within expected bounds when writing index data.
# group: [storage]

load __TEST_DIR__/index_checkpoint.db

# ensure we do not checkpoint early
statement ok
PRAGMA wal_autocheckpoint='1TB';

statement ok
CREATE TABLE t2 (i INTEGER, uid VARCHAR);

statement ok
INSERT INTO t2 SELECT i.range AS i, gen_random_uuid() AS uid FROM range(50000) AS i;

statement ok
CREATE UNIQUE INDEX iu ON t2(uid);

statement ok
CHECKPOINT;

# A prior version of index checkpointing caused index data to be written twice.
# If a node type exists, then we write at least one block for it. The ART in this example has the
# following node types: PREFIX, NODE4, NODE16. The expected total storage size including the table data
# is around 5.8MiB (6291456 bytes) for 16KB blocks, and around 6.2 MiB for 256KB blocks,
# and we allow a variation of 20% in storage size

query I
SELECT total_blocks < 6291456 / get_block_size('index_checkpoint') * 1.2 FROM pragma_database_size();
----
1