Re: BUG #13889: psql doesn't exequte correct script

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: BUG #13889: psql doesn't exequte correct script
Дата
Msg-id CAFj8pRBbeiHgX8A+QyqEAX5D70Mk+FBc__gmrADMA_3c2STbRQ@mail.gmail.com
обсуждение исходный текст
Ответ на BUG #13889: psql doesn't exequte correct script  (v_bilyak@mail.ru)
Ответы Re[2]: [BUGS] BUG #13889: psql doesn't exequte correct script  (Vladimir Bilyak <v_bilyak@mail.ru>)
Список pgsql-bugs
Hi

2016-01-25 18:09 GMT+01:00 <v_bilyak@mail.ru>:

> The following bug has been logged on the website:
>
> Bug reference:      13889
> Logged by:          Vladimir
> Email address:      v_bilyak@mail.ru
> PostgreSQL version: 9.5.0
> Operating system:   Windows 10
> Description:
>
> Hello. I faced the following issue: psql.exe does not execute the following
> script
>
> DROP DATABASE "demo_crash";
> CREATE DATABASE "demo_crash";
>
> aborting with error:
>
> CREATE DATABASE cannot be executed from a function or multi-command string
>

> I searched in Google for solution but found only suggestion to rebuild
> Postgres with some fix in source code that is not acceptable in my case. Do
> you have another suggestion how to resolve it? Thank you in advance for any
> help!
>

It isn't bug. You probably use "-c" option. All statements executed by this
option are executed in one transaction. Some statements like CREATE
DATABASE or DROP DATABASE cannot be called from transaction.

[pavel@dhcppc2 ~]$ psql -c "DROP DATABASE demo_crash; CREATE DATABASE
demo_crash" postgres
Debug assertions "off"
ERROR:  25001: DROP DATABASE cannot be executed from a function or
multi-command string
LOCATION:  PreventTransactionChain, xact.c:3158
Time: 0.488 ms

The solution is in next release 9.6, that allows multiple -c options

[pavel@dhcppc2 ~]$ psql -c "DROP DATABASE demo_crash" -c "CREATE DATABASE
demo_crash" postgres
Debug assertions "off"
ERROR:  3D000: database "demo_crash" does not exist
LOCATION:  dropdb, dbcommands.c:797
Time: 0.399 ms
CREATE DATABASE
Time: 711.694 ms

For current release use echo and pipe

[pavel@dhcppc2 ~]$ echo "DROP DATABASE demo_crash; CREATE DATABASE
demo_crash" | psql postgres
Debug assertions "off"
DROP DATABASE
Time: 224.953 ms
CREATE DATABASE
Time: 742.695 ms

I have not windows, but it should work

Regards

Pavel


>
> Sincerely,
> Vladimir
>
>
> --
> Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-bugs
>

В списке pgsql-bugs по дате отправления:

Предыдущее
От: v_bilyak@mail.ru
Дата:
Сообщение: BUG #13889: psql doesn't exequte correct script
Следующее
От: Peter Geoghegan
Дата:
Сообщение: Re: BUG #13886: When INSERT ON CONFLICT DO UPDATE updates, it returns INSERT rather than UPDATE