Невозможно выполнить простой запрос оболочки preto

Я пытаюсь запустить простейший запрос. Однако это не работает.

-bash-4.2$ prestosql --execute "select 1;"
Exception in thread "main" io.airlift.airline.ParseArgumentsUnexpectedException: Found unexpected parameters: [1;]
    at io.airlift.airline.SingleCommand.validate(SingleCommand.java:98)
    at io.airlift.airline.SingleCommand.parse(SingleCommand.java:65)
    at io.airlift.airline.SingleCommand.parse(SingleCommand.java:56)
    at io.prestosql.cli.Presto.main(Presto.java:24)

Но опция --file работает нормально

-bash-4.2$ cat a.sql
select 1;
-bash-4.2$ prestosql --file a.sql > result
-bash-4.2$ cat result
"1"

Любые идеи? UPD: Попытка избежать ';' с обратным слэшем не помогает(

-bash-4.2$ prestosql --execute "select 1"
Exception in thread "main" io.airlift.airline.ParseArgumentsUnexpectedException: Found unexpected parameters: [1]
    at io.airlift.airline.SingleCommand.validate(SingleCommand.java:98)
    at io.airlift.airline.SingleCommand.parse(SingleCommand.java:65)
    at io.airlift.airline.SingleCommand.parse(SingleCommand.java:56)
    at io.prestosql.cli.Presto.main(Presto.java:24)
-bash-4.2$ prestosql --execute "select 1\;"
Exception in thread "main" io.airlift.airline.ParseArgumentsUnexpectedException: Found unexpected parameters: [1\;]
    at io.airlift.airline.SingleCommand.validate(SingleCommand.java:98)
    at io.airlift.airline.SingleCommand.parse(SingleCommand.java:65)
    at io.airlift.airline.SingleCommand.parse(SingleCommand.java:56)
    at io.prestosql.cli.Presto.main(Presto.java:24)

person Makar Nikitin    schedule 07.02.2020    source источник
comment
Является ли prestosql вашей оболочкой или самой исполняемой банкой presto-cli? Если это обертка, вы используете, например. $* в нем?   -  person Piotr Findeisen    schedule 08.02.2020
comment
Да, это оболочка для presto-cli.jar и в конце используется $@   -  person Makar Nikitin    schedule 08.02.2020
comment
Однако замена $@ на $* не помогает(((   -  person Makar Nikitin    schedule 08.02.2020
comment
$@ следует заключать в кавычки: "$@" (это идиоматический способ передачи аргументов в оболочке). Я думаю, что " отсутствуют, верно?   -  person Piotr Findeisen    schedule 09.02.2020
comment
Вы абсолютно правы! Благодарю вас!   -  person Makar Nikitin    schedule 10.02.2020
comment
Добавил это как ответ, так что вы можете принять. Кстати, присоединяйтесь к сообществу Presto.   -  person Piotr Findeisen    schedule 10.02.2020


Ответы (2)


Это оказалось проблемой с оболочкой исполняемого файла jar presto CLI.

Сценарий-оболочка должен использовать "$@" для сохранения параметра с пробелами (например, запрос SQL, передаваемый в --execute).

Примечание: обычно нет необходимости иметь скрипт-оболочку для исполняемого файла CLI. Это исполняемый файл, поэтому вы можете поместить его прямо на $PATH. (Или поместите символическую ссылку на путь)

person Piotr Findeisen    schedule 10.02.2020

Попробуйте то же самое без точки с запятой ; или защитной точки с запятой с \:

 prestosql --execute "select 1"

or

 prestosql --execute "select 1\;"
person leftjoin    schedule 07.02.2020