2016-01-30 2 views
1

Согласно документации, ascli должен иметь возможность принимать аргументы при применении записи udf к записи (docs on ascli command 'udf-record-apply').Передача параметров для записи udf с ascli-bug?

Однако, мне не удалось заставить это работать. Вот минимальный пример:

-- Minimal failing example 
function testfunc(rec, param1, param2, param3) 
    local ret = map() 

    -- Just print what was passed into UDF 
    ret['debug_param1'] = param1 
    ret['debug_param2'] = param2 
    ret['debug_param3'] = param3 
    return ret 
end 

Зарегистрировано ascli udf-put minimal-example.lua. При использовании с AQL, запись UDF работает отлично:

aql> execute minimal-example.testfunc(12345) on test.test where PK = '1' 
+----------------------------------------------------------------+ 
| testfunc              | 
+----------------------------------------------------------------+ 
| {"debug_param1":12345, "debug_param2":NIL, "debug_param3":NIL} | 
+----------------------------------------------------------------+ 
1 row in set (0.000 secs) 

Однако при использовании из кли с param1 = 12345, он игнорирует любые параметры, передаваемые в UDF:

$ ascli udf-record-apply test test 1 minimal-example testfunc 12345 
{ "debug_param1": null, "debug_param2": null, "debug_param3": null } 

Являются ли мои звонки в ascli неверно или это ошибка?

+1

Я нашел, что вы можете использовать квадратные скобки для передачи целых чисел в виде списка отдельных элементов, например. '... testfunc [12345] [23456] [34567]'. Но это не так удобно, и я не понял, как передать строки. – Aaron

+0

Спасибо Aaron, вы хотите опубликовать это как ответ? Попробуй скоро. –

+0

Конечно, Мануэль. Это не идеальный ответ, но он полезен в некоторых случаях. – Aaron

ответ

3

Вы можете передать целые списки (или пустые списки) в UDF через ascli. Например:

ascli udf-record-apply test test 1 udfModule funcName [123] [234,235] [1,[2]] []

Несколько примечаний:
- появляется Передача параметров для работы только для целых списков (без строк, карт и т.д.)
- Там нет пустого пространства после запятой в список

0

Вместо ascli лучше использовать инструмент aql, который обладает большей функциональностью и хорошо поддерживается.

+0

Спасибо Сунил. Нам нравится aql, но ascli по-прежнему получает преимущества для определенных случаев использования (например, автоматические/запланированные «cronjobs»). Поэтому мы будем использовать его так, как выяснил Аарон, но он выглядит как синтаксис параметров или документации, которые могут быть расширены, чтобы повысить простоту использования для разработчиков. Или ascli устарела/скоро будет прекращена? –

 Смежные вопросы

  • Нет связанных вопросов^_^