Вызов выбирает осколки Тарантула

У меня есть Tarantool с модулем шарда и конфигурацией пространства, как это:

local h_box = box.schema.create_space('hotbox')
h_box:create_index('one', {type = 'hash', parts = {1, 'string'}})
h_box:create_index('two', {type = 'tree', parts = {2, 'string'}})
h_box:create_index('three', {type = 'tree', parts = {3, 'unsigned'}})
h_box:create_index('four', {type = 'tree', parts = {4, 'boolean'}})
h_box:create_index('five', {type = 'tree', parts = {5, 'unsigned'}})
h_box:create_index('six', {type = 'tree', parts = {6, 'boolean'}})

Документация модуля осколка Tarantool гласит:

Запрос shard.T:select{} без первичного ключа будет искать все фрагменты.

Но я вижу ошибку, когда пытаюсь вызвать это.

shard.h_box:select{}
---
- error: 'builtin/digest.lua:138: Usage digest.crc32(string)'
...

Также, когда я звоню shard.h_box:secondary_select{2, {limit = 10}, 'foo'} Tarantool выдал ошибку:

---
- error: '/usr/share/tarantool/shard/init.lua:1015: attempt to index field ''conn''
    (a nil value)'
...

Как я могу взять все данные из всех шардов и выбора вызовов во вторичные индексы?

1 ответ

shard.T:select() не может быть выполнен без первичного ключа. Я подал 574 против команды документации.

относительно secondary_select:

  1. Похоже, что соединение как минимум с одним хранилищем было разорвано. Стоит взглянуть на файл журнала переднего tarantool (где используется модуль шарда).

  2. На всякий случай стоит проверить, что вы можете подключиться к хранилищам и сделать выбор из пространств с указанным пользователем, используя net.box.

  3. Используйте скобки вместо фигурных скобок (функция принимает несколько аргументов, а не одну таблицу).

  4. Вы используете e75d2c7a версию модуля шарда, но пытаетесь использовать API более поздней версии. Правильный запрос для e75d2c7a будет, скажем, shard.space_name:secondary_select(index_no_or_name, index_key, opts), Или попробуйте обновить до последней версии шарда.

  5. Индексы отсчитываются от нуля, поэтому вы пытались использовать "беззнаковый" индекс "три" с ключом "строка" (кстати, secondary_select позволяет использовать индексные имена).

  6. redundacy установлено на 2, но количество хранилищ нечетное. Последний не будет использован.

Надеюсь, поможет.

Другие вопросы по тегам