Рекомендации по Lua-синтаксису
В функциях управления данными Lua-синтаксис может различаться. Далее приводятся варианты таких различий на примере запросов select()
. Аналогичные правила существуют и для остальных функций.
В каждом из приведенных примеров выполняются следующие действия: производится выборка по набору кортежей из спейса с именем „tester“, где значение поля, которое соответствует ключу в первичном индексе, равно 1. Также во всех примерах мы принимаем, что числовой идентификатор спейса „tester“ равен 512, но это верно только для нашей тестовой базы.
Во-первых, есть три способа ссылки на объект:
-- #1 модуль.подмодуль.имя
tarantool> box.space.tester:select{1}
-- #2 заменить имя буквенной константой в квадратных скобках
tarantool> box.space['tester']:select{1}
-- #3 использовать переменную для всей ссылки на объект
tarantool> s = box.space.tester
tarantool> s:select{1}
Для примеров в документации, как правило, используется вариант синтаксиса №1, например «box.space.tester:
». Но вы можете с тем же успехом пользоваться любым из трех описанных выше вариантов.
Также описания в руководстве используют синтаксис типа «space_object:
» для ссылки на спейсы и «index_object:
» для ссылки на индексы (например, box.space.tester.index.primary:
).
Затем есть семь способов задания параметров:
-- #1
tarantool> box.space.tester:select{1}
-- #2
tarantool> box.space.tester:select({1})
-- #3
tarantool> box.space.tester:select(1)
-- #4
tarantool> box.space.tester.select(box.space.tester,1)
-- #5
tarantool> box.space.tester:select({1},{iterator='EQ'})
-- #6
tarantool> variable = 1
tarantool> box.space.tester:select{variable}
-- #7
tarantool> variable = {1}
tarantool> box.space.tester:select(variable)
В Lua допускается пропуск круглых скобок ()
при вызове функции, если единственным аргументом является Lua-таблица, и иногда мы этим пользуемся в примерах. Вот почему select{1}
аналогично select({1})
. Литеральные значения, такие как 1
(скалярное значение) или {1}
(значение Lua-таблицы), можно заменить именами переменных, как в примерах 6 и 7.
Хотя есть особые случаи, когда фигурные скобки можно опустить, рекомендуется использовать их, потому что они означают Lua-таблицу. В примерах и описаниях данного руководства применяется форма {1}
. Однако это тоже вопрос предпочтений пользователя, и на практике применимы все варианты.
Правила именования объектов базы данных не слишком ограничены: максимальная длина составляет 65000 байтов (не символов), допускается практически любой символ Юникода, включая пробелы, идеограммы и знаки пунктуации.
В таких случаях во избежание путаницы с операторами и разделителями в Lua ссылки на объекты должны иметь форму типа литерал в квадратных скобках (2) или форму переменной (3). Например:
tarantool> box.space['1*A']:select{1}
tarantool> s = box.space['1*A !@$%^&*()_+12345678901234567890']
tarantool> s:select{1}
Не разрешаются:
- символы, которые представляют собой неназначенные кодовые точки,
- разделители строки и абзаца,
- управляющие символы,
- символ замены (U+FFFD).
Не рекомендуются: символы, которые не отображаются.
Имена зависимы от регистра, поэтому „A“ и „a“ – это не одно и то же.