LINUX.ORG.RU

postgresql psql return code


0

1

всем привет

хочу сравнить версию постгреса, получилось накатать такой запросец

psql -c «select ( cast ( replace ( substring ( version() from '.\..\..' ), '.', " ) as int ) > 900 )»

и все бы хорошо, но проблема в том что результат получается в виде :

?column?
----------
t
(1 row)

или

?column?
----------
f
(1 row)

можно ли как нибудь сделать чтобы результат уходил в return code psql ? пример: если я делаю psql -c «select bred» еррор код в консоле не нулевой ... хочется модифицировать этот запрос чтобы он влиял на еррор код, чтобы не «грепать» ничего лишнего (не обрабатывать вывод) ну и плюс к кроссплатформенности будет.

спасибо

★★★

ни селекты селекта, ни хранимые процедуры ничего не помогает ...

к сожалению, пока единственное что остается psql -tnA =(

fura13 ★★★
() автор топика

получилось накатать такой запросец

если не нужна поддержка древных версии, то можно сделать так:

SELECT setting::int > 90000 FROM pg_catalog.pg_settings WHERE name='server_version_num'

чтобы не «грепать» ничего лишнего

если не ошибаюсь, то менять exit codes в psql нельзя, но зато можно перенаправить вывод в STDOUT:

$ psql -c "COPY (SELECT setting::int > 90000 FROM pg_catalog.pg_settings WHERE name=server_version_num) TO STDOUT"
t
$
beka
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.