mirror of
https://github.com/postgres/postgres.git
synced 2025-07-08 11:42:09 +03:00
Fix another place that assumed 'x = lcons(y, z)' would not have any
side-effect on the original list z. I fear we have a few more of these to track down yet :-(.
This commit is contained in:
@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/rewrite/rewriteHandler.c,v 1.136 2004/05/26 04:41:33 neilc Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/rewrite/rewriteHandler.c,v 1.137 2004/05/29 05:55:13 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -864,7 +864,6 @@ fireRIRrules(Query *parsetree, List *activeRIRs)
|
||||
*/
|
||||
if (locks != NIL)
|
||||
{
|
||||
List *newActiveRIRs;
|
||||
ListCell *l;
|
||||
|
||||
if (oidMember(RelationGetRelid(rel), activeRIRs))
|
||||
@ -872,7 +871,7 @@ fireRIRrules(Query *parsetree, List *activeRIRs)
|
||||
(errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
|
||||
errmsg("infinite recursion detected in rules for relation \"%s\"",
|
||||
RelationGetRelationName(rel))));
|
||||
newActiveRIRs = lconso(RelationGetRelid(rel), activeRIRs);
|
||||
activeRIRs = lconso(RelationGetRelid(rel), activeRIRs);
|
||||
|
||||
foreach(l, locks)
|
||||
{
|
||||
@ -884,8 +883,10 @@ fireRIRrules(Query *parsetree, List *activeRIRs)
|
||||
rule->attrno == -1,
|
||||
rel,
|
||||
relIsUsed,
|
||||
newActiveRIRs);
|
||||
activeRIRs);
|
||||
}
|
||||
|
||||
activeRIRs = list_delete_first(activeRIRs);
|
||||
}
|
||||
|
||||
heap_close(rel, NoLock);
|
||||
|
Reference in New Issue
Block a user