# Copyright (c) reifydb.com 2025
# This file is licensed under the Apache-2.0, see license.md file
# Test sequence numbering starts at 1 for each version
insert 1 a=1
commit
---
ok
cdc_get 1 1
---
Change { seq: 1, change: Insert { key: "a", post: "1" } }
# Test sequence in new version starts at 1 again
insert 2 b=2
commit
---
ok
cdc_get 2 1
---
Change { seq: 1, change: Insert { key: "b", post: "2" } }
# Test sequence increments within transaction
insert 3 c=3
update 3 a=10
update 3 b=20
delete 3 c
insert 3 d=4
commit
---
ok
# Verify all sequences (insert+delete of c should be cancelled)
cdc_get 3 1
---
Change { seq: 1, change: Update { key: "a", pre: "1", post: "10" } }
cdc_get 3 2
---
Change { seq: 2, change: Update { key: "b", pre: "2", post: "20" } }
cdc_get 3 3
---
Change { seq: 3, change: Insert { key: "d", post: "4" } }
cdc_get 3 4
---
None
# Test non-existent sequence
cdc_get 3 6
---
None
cdc_get 3 0
---
None
# Test sequence resets for new version
insert 4 e=5
commit
---
ok
cdc_get 4 1
---
Change { seq: 1, change: Insert { key: "e", post: "5" } }
# Test large sequence numbers within transaction
bulk_insert 5 10
---
ok
# Check first and last sequence
cdc_get 5 1
---
Change { seq: 1, change: Insert { key: "bulk_0", post: "0" } }
cdc_get 5 10
---
Change { seq: 10, change: Insert { key: "bulk_9", post: "9" } }
# Check sequence 5 in the middle
cdc_get 5 5
---
Change { seq: 5, change: Insert { key: "bulk_4", post: "4" } }