Don't trash input list structure in does_not_exist_skipping().

The trigger and rule cases need to split up the input name list, but
they mustn't corrupt the passed-in data structure, since it could be part
of a cached utility-statement parsetree.  Per bug #7641.
This commit is contained in:
Tom Lane 2012-11-08 11:34:32 -05:00
parent a9dad56441
commit 75af5ae9c0
1 changed files with 2 additions and 2 deletions

View File

@ -203,7 +203,7 @@ does_not_exist_skipping(ObjectType objtype, List *objname, List *objargs)
case OBJECT_TRIGGER:
msg = gettext_noop("trigger \"%s\" for table \"%s\" does not exist, skipping");
name = strVal(llast(objname));
args = NameListToString(list_truncate(objname,
args = NameListToString(list_truncate(list_copy(objname),
list_length(objname) - 1));
break;
case OBJECT_EVENT_TRIGGER:
@ -213,7 +213,7 @@ does_not_exist_skipping(ObjectType objtype, List *objname, List *objargs)
case OBJECT_RULE:
msg = gettext_noop("rule \"%s\" for relation \"%s\" does not exist, skipping");
name = strVal(llast(objname));
args = NameListToString(list_truncate(objname,
args = NameListToString(list_truncate(list_copy(objname),
list_length(objname) - 1));
break;
case OBJECT_FDW: