Pavan Deolasee escribió: > Following test case gives a warning of snapshot not destroyed at commit > time. > > CREATE TABLE test (a int); > INSERT INTO test VALUES (1); > BEGIN; > DECLARE c CURSOR FOR SELECT * FROM test FOR update; > SAVEPOINT A; > FETCH -2 FROM c; > ROLLBACK TO SAVEPOINT A; > COMMIT; > > Should we call FreeQueryDesc() even for failed portals in PortalCleanup() ? > Or PortalDrop() is a better(right) place to do that ?
That doesn't work; doing it causes a crash: TRAP: FailedAssertion(«!(qdesc->estate == ((void *)0))», Archivo: «/pgsql/source/00head/src/backend/tcop/pquery.c», Línea: 126) which is here: void FreeQueryDesc(QueryDesc *qdesc) { /* Can't be a live query */ Assert(qdesc->estate == NULL); BTW I noticed that AtSubAbort_Portals() is neglecting to set portal->cleanup to NULL after calling it. -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers