Size: a a a

2020 June 03

AM

Aleksey Maslov in Tarantool
К предыдущему вопросу: в консоле отрабатывает:
box.execute([[select * from SERVICES_SPACE WHERE SPACE_ID=?]], {'msk_cl'})

В го клиенте
resp, err = r.tarantoolClient.Call(
   "box.execute",
   []interface{}{"[[select * from SERVICES_SPACE WHERE SPACE_ID=?]]", "{'msk_cl'}"},
 )

Second argument must be a table
источник

DS

Dmitry Sharonov in Tarantool
больше скобочек
источник

AM

Aleksey Maslov in Tarantool
Dmitry Sharonov
больше скобочек
Где в аргументах? пробовал и строкой передавать: "'msk_cl'"
источник

DS

Dmitry Sharonov in Tarantool
снаружи
источник

DS

Dmitry Sharonov in Tarantool
он же массив аргументов ждет
источник

AM

Aleksey Maslov in Tarantool
вот вообще уже не понимаю, не могли бы пример
источник

DS

Dmitry Sharonov in Tarantool
[]interface{}{"[[select * from SERVICES_SPACE WHERE SPACE_ID=?]]", {'msk_cl'}}
источник

DS

Dmitry Sharonov in Tarantool
но я гошник ненастоящий
источник

DS

Dmitry Sharonov in Tarantool
я по ридми предположил
источник

EL

Eugene Leonovich in Tarantool
Dmitry Sharonov
но я гошник ненастоящий
где цитата мояковского?
источник

AM

Aleksey Maslov in Tarantool
Получилось:
resp, err = r.tarantoolClient.Call(
   "box.execute",
   []interface{}{"select * from SERVICES_SPACE WHERE SPACE_ID=?", []interface{}{"msk_cl"}},
 )
источник

AM

Aleksey Maslov in Tarantool
Еще для гоферов вопросик:
в коннекторе есть метод CallTyped - он через DecodeMsgpack преобразует tuple в нужную структуру.
Дак вот, с GetTyped и SelectTyped все работает, а с CallTyped и EvalTyped не хочет.
Начал смотреть, выяснилось что при selectTyped прилетает Data, в которой сразу слайс с кортежами, а при CallTyped в Data содержится мета информация, и отдельно rows.
Можно ли как то CallTyped корректно заставить отрабатывать через DecodeMsgpack?
источник

P

Pavel in Tarantool
Aleksey Maslov
Еще для гоферов вопросик:
в коннекторе есть метод CallTyped - он через DecodeMsgpack преобразует tuple в нужную структуру.
Дак вот, с GetTyped и SelectTyped все работает, а с CallTyped и EvalTyped не хочет.
Начал смотреть, выяснилось что при selectTyped прилетает Data, в которой сразу слайс с кортежами, а при CallTyped в Data содержится мета информация, и отдельно rows.
Можно ли как то CallTyped корректно заставить отрабатывать через DecodeMsgpack?
Для того, чтобы раскодировать значение, нужно передавать туда поинтер на слайс типов, для которых имплементирован декодер
источник

P

Pavel in Tarantool
Ну вот как бы да, но очень выглядит такое
источник

P

Pavel in Tarantool
источник

AM

Aleksey Maslov in Tarantool
да, и как писал с selectTypctTyped вопросов нет - все работает:
err := i.client.SelectTyped(i.space, "space", 0, 100000, tarantool.IterEq, []interface{}{spaceId}, &servicesInfo)

Вопрос как раз про CallTyped:
источник

P

Pavel in Tarantool
функция возвращает что? ServiceInfo?
источник

AM

Aleksey Maslov in Tarantool
в него приходит не сразу Data[кортежи], а Data[0][кортежи]
источник

AM

Aleksey Maslov in Tarantool
Вызываю так:
источник

P

Pavel in Tarantool
у пеерменной servicesInfo  должен быть тип [][]ServiceInfo, вроде бы, если в функции просто таблица из туплов возвращается
источник