Skip to content

CREATE INDEX and DROP INDEX statements are not correctly serialized to WAL #4891

@Mytherin

Description

@Mytherin

The following test fails:

# name: test/sql/storage/wal/wal_create_index.test
# description: Test serialization of index to WAL
# group: [wal]

# load the DB from disk
load __TEST_DIR__/test_wal_create_index.db

statement ok
PRAGMA disable_checkpoint_on_shutdown

statement ok
PRAGMA wal_autocheckpoint='1TB';

statement ok
PRAGMA explain_output = OPTIMIZED_ONLY;

statement ok
CREATE TABLE integers(i INTEGER, j INTEGER)

statement ok
insert into integers values (1,1), (2,2), (3,3)

# Test single column
statement ok
create index i_index on integers(i);

query II
EXPLAIN SELECT i FROM integers  where i = 1
----
logical_opt	<REGEX>:.*INDEX_SCAN.*

restart

statement ok
PRAGMA disable_checkpoint_on_shutdown

statement ok
PRAGMA wal_autocheckpoint='1TB';

query II
EXPLAIN SELECT i FROM integers  where i = 1
----
logical_opt	<REGEX>:.*INDEX_SCAN.*

restart

statement ok
PRAGMA disable_checkpoint_on_shutdown

statement ok
PRAGMA wal_autocheckpoint='1TB';

statement ok
drop index i_index

restart

statement ok
PRAGMA disable_checkpoint_on_shutdown

statement ok
PRAGMA wal_autocheckpoint='1TB';

# Test more complex expression

statement ok
create index i_index on integers using art((i+j))

query II
EXPLAIN SELECT i FROM integers  where i+j = 2
----
logical_opt	<REGEX>:.*INDEX_SCAN.*

query I
SELECT i FROM integers  where i+j = 2
----
1

statement ok
drop index i_index

That seems to be because neither CREATE INDEX nor DROP INDEX creation are serialized to the WAL. If we remove the restarts the test passes.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions