alter: do not require index rebuild to clear uniqueness
Obviously, there's no point in rebuilding an index if all we do is relaxing the uniqueness property. This will also allow us to clear the uniqueness flag for vinyl indexes, which do not support rebuild. Note, a memtx tree index stores a pointer to either cmp_def or key_def depending on whether the index is unique. Hence to clear the uniqueness flag without rebuilding the index, we need to update this pointer. To do that, we add a new index virtual method, update_def. Closes #2449
Showing
- src/box/alter.cc 4 additions, 2 deletionssrc/box/alter.cc
- src/box/index.cc 5 additions, 0 deletionssrc/box/index.cc
- src/box/index.h 12 additions, 0 deletionssrc/box/index.h
- src/box/index_def.c 1 addition, 15 deletionssrc/box/index_def.c
- src/box/index_def.h 0 additions, 3 deletionssrc/box/index_def.h
- src/box/key_def.cc 0 additions, 17 deletionssrc/box/key_def.cc
- src/box/key_def.h 0 additions, 4 deletionssrc/box/key_def.h
- src/box/memtx_bitset.c 1 addition, 0 deletionssrc/box/memtx_bitset.c
- src/box/memtx_hash.c 1 addition, 0 deletionssrc/box/memtx_hash.c
- src/box/memtx_rtree.c 1 addition, 0 deletionssrc/box/memtx_rtree.c
- src/box/memtx_tree.c 8 additions, 0 deletionssrc/box/memtx_tree.c
- src/box/sysview_index.c 1 addition, 0 deletionssrc/box/sysview_index.c
- src/box/vinyl.c 1 addition, 0 deletionssrc/box/vinyl.c
- test/vinyl/ddl.result 41 additions, 0 deletionstest/vinyl/ddl.result
- test/vinyl/ddl.test.lua 13 additions, 0 deletionstest/vinyl/ddl.test.lua
Loading
Please register or sign in to comment