Size: a a a

2021 March 29

DS

Dmitry Sharonov in Tarantool
а надо ли так сложно? может по str записей мало и проще так фильтровать
источник

MA

Mons Anderson in Tarantool
Dmitry Sharonov
а надо ли так сложно? может по str записей мало и проще так фильтровать
вводных нет, я дал максимально общее решение.
если записей по str меньше 10-15к, то конечно, можно и нужно простой фильтрацией
источник

DS

Dmitry Sharonov in Tarantool
тогда
box.space.kv.index.by_str:pairs('str'):filter(function(x) retun x.obj ~= nil end):totable()
источник

GM

Georgy Moiseev in Tarantool
Dmitry Sharonov
сейчас появятся любители однострочников
так всё это время это был ты
источник

MF

Michael Filonenko in Tarantool
конферансье и артист в одном флаконе
источник

DS

Dmitry Sharonov in Tarantool
я должен был бороться со злом а не примкнуть к нему
источник

IK

Irina Knizhnik in Tarantool
Mons Anderson
простой и надёжный способ:
заведите ещё одну колонку (has_obj), в которую пишете 1/0
заполнять можно триггером.
индекс по {str, has_obj}
выбирать по {str, 1}
можно сделать это и функциональным индексом, но отдельным полем проще
Это разве не костылик сбоку?)
Ещё и разъехаться может
источник

MA

Mons Anderson in Tarantool
Irina Knizhnik
Это разве не костылик сбоку?)
Ещё и разъехаться может
если сделать триггер, то не разъедется.
сколько у вас записей (максимально) с одинаковым str?
источник

IK

Irina Knizhnik in Tarantool
хотелось бы понимать возможности для, условно, до 20к и больше 20к)
видимо, на небольшом количестве проще сделать pairs
а на большом?)
источник

MF

Michael Filonenko in Tarantool
а вы случаем не kv кеширование делаете?
источник

MA

Mons Anderson in Tarantool
Irina Knizhnik
хотелось бы понимать возможности для, условно, до 20к и больше 20к)
видимо, на небольшом количестве проще сделать pairs
а на большом?)
А для большого стоит пересмотреть модель данных
источник

IA

Igor Anferov in Tarantool
А как объясняется то, что в functional-индекс тарантул тоже не даёт в функцию поле произвольного типа передать?
источник

IA

Igor Anferov in Tarantool
* всё ещё требует перечислять parts и не разрешает там ничего, по чему тарантул не-functional индекс не может построить
источник

ОБ

Олег Бабин in Tarantool
Igor Anferov
А как объясняется то, что в functional-индекс тарантул тоже не даёт в функцию поле произвольного типа передать?
Там есть ограниченный скоуп функций, чтобы пользователь не йилдил при вычислении значения и не мог привести Tarantool в неконсистентное состояние.
источник

ОБ

Олег Бабин in Tarantool
Igor Anferov
* всё ещё требует перечислять parts и не разрешает там ничего, по чему тарантул не-functional индекс не может построить
А по чему хочется строить индекс?
источник

IA

Igor Anferov in Tarantool
Irina Knizhnik
Привет!
Подскажите, пожалуйста, как из спейса (условно, format = {{ name = 'str’, type = 'string' }, { name = 'obj', is_nullable = true }}) поселектить записи по str, у которых ненулевое поле obj?
Ну вот в данном случае логично было бы построить индекс по
[[function(tuple)
   return { tuple.str, tuple.obj ~= nil }
end]]
источник

IA

Igor Anferov in Tarantool
Олег Бабин
Там есть ограниченный скоуп функций, чтобы пользователь не йилдил при вычислении значения и не мог привести Tarantool в неконсистентное состояние.
Ну кажется, что достаточно было бы написать об этом в документации и завершаться с ошибкой при попытке yield’ить из этой функи. Жёсткие требования на parts мне же всё ещё не мешают yield в функе написать)
источник

ОБ

Олег Бабин in Tarantool
Igor Anferov
Ну кажется, что достаточно было бы написать об этом в документации и завершаться с ошибкой при попытке yield’ить из этой функи. Жёсткие требования на parts мне же всё ещё не мешают yield в функе написать)
Функция должна быть is_sandboxed, чтоб её можно было использовать для индекса. Так что yield не написать.

Но в любом случае здесь, видимо, фишка в юзабилити. Думаю, на это можно бить issue.
источник

AD

Alex D in Tarantool
Всем привет.
А подскажите пожалуйста а как в Json тип decimal возвращать как число?

-- в коде
local json = require('json')

local function handler(req)
   local res = {id = 1, f1 = 5.5, f2 = decimal.new(1.978)}
   return req:render { json = res}
end

local httpd = cartridge.service_get('httpd')
httpd:route({method = 'GET', path = '/test'}, handler)

-- выполняю
curl -v localhost:8081/test

-- получаю
{"id":1,"f2":"1.978","f1":5.5}

А хочу получить
{"id":1,"f2":1.978,"f1":5.5}
источник

DS

Dmitry Sharonov in Tarantool
tonumber ?
источник