Как сделать ОБНОВЛЕНИЕ ... SET MAX (колонка 5) в tarantool - PullRequest
0 голосов
/ 04 апреля 2020

Собственно, есть задача - собрать статистику использования из полей: cnt, value, max, min

Я хотел сделать все за один прогон upsert , cnt установить через +, value через =

Я не понимаю, как сделать поле min:

  1. Есть ли простой способ сделать ваша собственная функция для upsert (lua, которая будет получать старые и новые значения и выводить результат)
  2. Или я могу сделать функцию, которая будет получать весь кортеж, новые данные и обновлять соответствующие значения.

1 Ответ

1 голос
/ 06 апреля 2020

Просто сделайте триггер before_replace для пробела, который возвращает новое значение, если старое значение отсутствует, в противном случае возвращается модифицированное. Примерно так:

function trigger_before_update_space1 (old, new)
    return old and box.tuple.new({
        new[1],
        new[2],
        math.max(old[3], new[2])
    }) or new
end       
...