Improve column mask calculation
If the update operation changes a field with number >= 64, the column mask of the update op is set to UINT64_MAX. Lets use the last bit of the column mask as the flag, that all fields with numbers >= 63 could be changed. Then if the indexed positions are less than 64, the column mask will be always working. Closes #1716
Showing
- src/box/column_mask.h 110 additions, 0 deletionssrc/box/column_mask.h
- src/box/key_def.cc 2 additions, 5 deletionssrc/box/key_def.cc
- src/box/key_def.h 1 addition, 5 deletionssrc/box/key_def.h
- src/box/memtx_space.cc 4 additions, 2 deletionssrc/box/memtx_space.cc
- src/box/tuple_update.c 117 additions, 45 deletionssrc/box/tuple_update.c
- src/box/vinyl.c 4 additions, 23 deletionssrc/box/vinyl.c
- src/box/vy_upsert.c 3 additions, 2 deletionssrc/box/vy_upsert.c
- src/box/vy_write_iterator.c 2 additions, 22 deletionssrc/box/vy_write_iterator.c
- test/unit/CMakeLists.txt 3 additions, 0 deletionstest/unit/CMakeLists.txt
- test/unit/column_mask.c 249 additions, 0 deletionstest/unit/column_mask.c
- test/unit/column_mask.result 30 additions, 0 deletionstest/unit/column_mask.result
- test/vinyl/update_optimize.result 202 additions, 0 deletionstest/vinyl/update_optimize.result
- test/vinyl/update_optimize.test.lua 63 additions, 0 deletionstest/vinyl/update_optimize.test.lua
Loading
Please register or sign in to comment