vinyl: fix for deferred DELETE overwriting newer statement
A deferred DELETE may be generated after a newer statement for the same key was inserted into a secondary index and hence land in a newer run. Since the read iterator assumes that newer sources always contain newer statements for the same key, we mark all deferred DELETE statements with VY_STMT_SKIP_READ flag, which makes run/mem iterators ignore them. The flag must be persisted when a statement is written to disk, but it is not. Fix this. Fixes commit 504bc805 ("vinyl: do not store meta in secondary index runs").
Showing
- src/box/vy_stmt.c 27 additions, 9 deletionssrc/box/vy_stmt.c
- src/box/vy_stmt.h 4 additions, 0 deletionssrc/box/vy_stmt.h
- test/vinyl/deferred_delete.result 67 additions, 0 deletionstest/vinyl/deferred_delete.result
- test/vinyl/deferred_delete.test.lua 28 additions, 0 deletionstest/vinyl/deferred_delete.test.lua
Loading
Please register or sign in to comment