Journal transaction boundaries
Append txn_id and is_commit to xrow_header structure, txn_id identifies transaction id on replica where transaction was started. As transaction id a lsn of the first row in the transaction is used. is_commit is set to true for the last row in a transaction. As encoding/deconding rule assumed: * txn_id encoded using transaction sequence number iproto field as IPROTO_TSN = lsn - txn_id, * is_commit packed into IPROTO_FLAGS field with a bit mask, * txn_id and is_commit are encoded only for multi-row transactions. So if we do not have txn_id after row decoding then this means that it is a single row transaction. These rules provide compatibility with previous xlog format as well as good compaction level. Needed for #2798
Showing
- src/box/iproto_constants.c 4 additions, 4 deletionssrc/box/iproto_constants.c
- src/box/iproto_constants.h 7 additions, 0 deletionssrc/box/iproto_constants.h
- src/box/lua/xlog.c 10 additions, 0 deletionssrc/box/lua/xlog.c
- src/box/wal.c 5 additions, 0 deletionssrc/box/wal.c
- src/box/xrow.c 41 additions, 0 deletionssrc/box/xrow.c
- src/box/xrow.h 3 additions, 1 deletionsrc/box/xrow.h
- test/unit/xrow.cc 2 additions, 0 deletionstest/unit/xrow.cc
- test/xlog/transaction.result 108 additions, 0 deletionstest/xlog/transaction.result
- test/xlog/transaction.test.lua 46 additions, 0 deletionstest/xlog/transaction.test.lua
Loading
Please register or sign in to comment