Skip to content

refactor prepared statements C API

Denis Smirnov requested to merge sd/prepared_stmt into 2.11.2-picodata

Текущий МР наводит порядок с экспортированными API для откомпилированных SQL выражений.

  1. Изменились API для для исполнения выражений (как уже находящихся в глобальном кэше, так и мимо кэша). Теперь мы подаем на вход message pack вместо сишной структуры параметров. Как следствие, больше нет нужды в sql_bind_list_decode (он просто опасен из-за утечек памяти).
  2. Наведен порядок во внутренних функциях с порядком выходных аргументов.
  3. Упрощена жизнь пользователей, у которых есть несколько подключений к экземпляру тарантула (конкретно - sbroad в picodata). Теперь если откомпилировать выражение в одной сессии, то при вызове execute через C API в другой мы подтянем его из глобального кэша (и не нужно делать ручками prepare). Так как проверка привилегий все равно будет произведена на этапе исполнения, то дырки в безопасности тут нет.
  4. Поправил API для sql_prepare (теперь это sql_prepare_ext) - в нем больше нет исходящего параметра port (и его можно будет убрать из модуля тарантула).
Edited by Denis Smirnov

Merge request reports