Невозможно выполнить простой запрос оболочки Presto - PullRequest
0 голосов
/ 07 февраля 2020

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

-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: пытаюсь сбежать ';' с backsla sh не помогает (

-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)

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

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

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

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

1 голос
/ 07 февраля 2020

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

 prestosql --execute "select 1"

или

 prestosql --execute "select 1\;"
...