index: introduce weak reference
An iterator doesn't pin the index it was created for. Instead, it holds a 'weak' reference to it, which is invalidated if the index is dropped. This is achieved by checking if the index can be found in the space cache by id every time the reference is accessed. Let's factor out this weak reference concept into a separate class so that we can reuse it because we'll also need it to implement the index scanner API. Needed for #9568 NO_DOC=refactoring NO_TEST=refactoring NO_CHANGELOG=refactoring
Showing
- src/box/CMakeLists.txt 1 addition, 0 deletionssrc/box/CMakeLists.txt
- src/box/box.cc 1 addition, 1 deletionsrc/box/box.cc
- src/box/index.cc 7 additions, 53 deletionssrc/box/index.cc
- src/box/index.h 3 additions, 35 deletionssrc/box/index.h
- src/box/index_weak_ref.c 54 additions, 0 deletionssrc/box/index_weak_ref.c
- src/box/index_weak_ref.h 180 additions, 0 deletionssrc/box/index_weak_ref.h
- src/box/memtx_bitset.cc 5 additions, 5 deletionssrc/box/memtx_bitset.cc
- src/box/memtx_engine.h 1 addition, 1 deletionsrc/box/memtx_engine.h
- src/box/memtx_hash.cc 17 additions, 16 deletionssrc/box/memtx_hash.cc
- src/box/memtx_rtree.cc 4 additions, 3 deletionssrc/box/memtx_rtree.cc
- src/box/memtx_tree.cc 59 additions, 48 deletionssrc/box/memtx_tree.cc
- src/box/sql.c 4 additions, 5 deletionssrc/box/sql.c
- src/box/sysview.c 2 additions, 3 deletionssrc/box/sysview.c
- src/box/vinyl.c 2 additions, 1 deletionsrc/box/vinyl.c
Loading
Please register or sign in to comment