Re: psql swallowed my "BEGIN;" on reset... user beware?

Поиск
Список
Период
Сортировка
От Ryan Kelly
Тема Re: psql swallowed my "BEGIN;" on reset... user beware?
Дата
Msg-id 20130930161537.GA16574@llserver.lakeliving.com
обсуждение исходный текст
Ответ на Re: psql swallowed my "BEGIN;" on reset... user beware?  (Moshe Jacobson <moshe@neadwerx.com>)
Список pgsql-general
On Mon, Sep 09/30/13, 2013 at 11:49:29AM -0400, Moshe Jacobson wrote:
> On Sun, Sep 29, 2013 at 2:18 AM, Ken Tanzer <ken.tanzer@gmail.com> wrote:
>
> > After restarting the server in another window, I was surprised that my
> > command did not run in a transaction:
> >
> > spc_test_scratch=# BEGIN; DROP VIEW IF EXISTS ptest_mip ; DROP VIEW
> > rent_info; \i create.view.rent_info.sql
> > FATAL:  terminating connection due to administrator command
> > server closed the connection unexpectedly
> >         This probably means the server terminated abnormally
> >         before or while processing the request.
> > The connection to the server was lost. Attempting reset: Succeeded.
> > NOTICE:  view "ptest_mip" does not exist, skipping
> > DROP VIEW
> > DROP VIEW
> > CREATE VIEW
> > spc_test_scratch=# commit;
> > WARNING:  there is no transaction in progress
> > COMMIT
> >
>
> This seems like a pretty serious issue. My opinion is that psql should
> refuse to execute further commands on a line of input if any of them fails
> due to a terminated connection.

FWIW, I often have this same problem. I also agree with the proposed
solution.

The current code seems to have the connection reset logic down inside
the result processing routines. It looks like it would be relatively
straightforward to add two calls to ConnectionUp in ProcessResult and
ProcessResult to resolve this. But it would be a change in behavior.

-Ryan


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

Предыдущее
От: Merlin Moncure
Дата:
Сообщение: Re: psql swallowed my "BEGIN;" on reset... user beware?
Следующее
От: Ryan Kelly
Дата:
Сообщение: Re: psql swallowed my "BEGIN;" on reset... user beware?