RE: postgres crash on CURSORS
От | Hiroshi Inoue |
---|---|
Тема | RE: postgres crash on CURSORS |
Дата | |
Msg-id | 001601bf9eb3$b5407c20$2801007e@tpf.co.jp обсуждение исходный текст |
Ответ на | postgres crash on CURSORS (Bruce Momjian <pgman@candle.pha.pa.us>) |
Ответы |
Re: postgres crash on CURSORS
|
Список | pgsql-hackers |
> -----Original Message----- > From: pgsql-hackers-owner@hub.org [mailto:pgsql-hackers-owner@hub.org]On > Behalf Of Bruce Momjian > > > Bruce Momjian <pgman@candle.pha.pa.us> writes: > > > I have found I can crash the backend with the following queries: > > > test=> BEGIN WORK; > > > BEGIN > > > test=> DECLARE bigtable_cursor CURSOR FOR > > test-> SELECT * FROM bigtable; > > > SELECT > > > test=> FETCH 3 prior FROM bigtable_cursor; > > > ERROR: parser: parse error at or near "prior" > > > test=> FETCH prior FROM bigtable_cursor; > > > pqReadData() -- backend closed the channel unexpectedly. > > > This probably means the backend terminated abnormally > > > before or while processing the request. > > > The connection to the server was lost. Attempting reset: Succeeded. > > > > Problem appears to be due to trying to bull ahead with processing after > > the current transaction has been aborted by an error. The immediate > > cause is these lines in postgres.c: > > > > /* > > * We have to set query SnapShot in the case of > FETCH or COPY TO. > > */ > > if (nodeTag(querytree->utilityStmt) == T_FetchStmt || > > (nodeTag(querytree->utilityStmt) == T_CopyStmt && > > ((CopyStmt > *)(querytree->utilityStmt))->direction != FROM)) > > SetQuerySnapshot(); > > > > which are executed without having bothered to check for aborted state. > > I think this code should be removed from postgres.c, and the > > SetQuerySnapshot call instead made from the Fetch and Copy arms of the > > switch statement in ProcessUtility() (utility.c), after doing > > CHECK_IF_ABORTED in each case. > > Yes, I saw this code and got totally confused of how to fix it. > Is it bad to check ABORTED after yyparse() in parser.c ? Regards. Hiroshi Inoue Inoue@tpf.co.jp
В списке pgsql-hackers по дате отправления: