-
Notifications
You must be signed in to change notification settings - Fork 379
Space _index structure
Сейчас спейс _index, которое хранит описания индексов всех спейсов, хранит таплы следующей структуры:
[space_id, index_id, name, type, is_unique, parts_count, field0, type0, <field1>, <type1>, ...]
где поля type (тип индекса), typeX (тип индексируемого поля) - строковые; нумерация полей (fieldX) начинается с нуля. Предлагаю изменить структуру следующим образом:
[space_id, index_id, name, type, parts, options]
где parts это массив:
[[field0, type0, <part1_opts>], [field1, type1, <part1_opts>]..]
где options и partX_opts - необязательные мапы с опциями. is_unique должен уйти в мапу options, туда же попадет опция dimension для r-tree. неплохо было бы сделать валидацию опций в зависимости от типа индекса; для bitseta и r-дерева is_unique имхо бессмысленнен. В перспективе в partX_options можно будет добавлять опцию направления обхода, и способ сравнения строк. typeX опускать нельзя, чтобы опции были третим элементом массива, можно сделать 'auto', для р-дерева это будет удобно, ведь ежу ясно, какой там тип поля. 'auto' имхо вообще была бы удобная. Для tree, hash и bitset индексов можно сделать так, чтобы сравнение полей производилось по факту - все числа меньше всех строк; а если оба операнда одного типа, то сравнивать уже значения определенного типа.
- C coding guidelines ↗
- Lua coding guidelines ↗
- Python coding guidelines ↗
- Maintainer's guide
- Debugging
Architecture
- Server architecture
- R tree index quick start and usage
- LuaJIT
- Vinyl
- Vinyl Architecture
- Vinyl Disk Layout
- Vinyl math
- Vinyl Cookbook
- Bullet1
- SQL
- Appserver modules
- Testing
- Performance
- Privileges and Access control
How To ...?
- ... update a third party library
- ... configure build system
- ... add new fuzzers
- ... build RPM or Deb package using packpack
- ... calculate memory size
- ... debug core dump of stripped tarantool
- ... debug core from different OS
- ... debug fuzzer
- ... generate new bootstrap snapshot
- ... use Address Sanitizer
- ... collect a coredump
- ... generate luacov report for builtin module
- ... verify modified lua files via luacheck
- ... verify Lua files in third_party?
- ... rerun failed jobs
- ... update a third party repository
- Fix wrong decimal indexing after upgrade to 2.10.1
- Caveats when upgrading a cluster on Tarantool 1.6
- Fix illegal field type in a space format when upgrading to 2.10.4
Useful links