Skip to content

Commit 75af5ae

Browse files
committed
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.
1 parent a9dad56 commit 75af5ae

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/backend/commands/dropcmds.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ does_not_exist_skipping(ObjectType objtype, List *objname, List *objargs)
203203
case OBJECT_TRIGGER:
204204
msg = gettext_noop("trigger \"%s\" for table \"%s\" does not exist, skipping");
205205
name = strVal(llast(objname));
206-
args = NameListToString(list_truncate(objname,
206+
args = NameListToString(list_truncate(list_copy(objname),
207207
list_length(objname) - 1));
208208
break;
209209
case OBJECT_EVENT_TRIGGER:
@@ -213,7 +213,7 @@ does_not_exist_skipping(ObjectType objtype, List *objname, List *objargs)
213213
case OBJECT_RULE:
214214
msg = gettext_noop("rule \"%s\" for relation \"%s\" does not exist, skipping");
215215
name = strVal(llast(objname));
216-
args = NameListToString(list_truncate(objname,
216+
args = NameListToString(list_truncate(list_copy(objname),
217217
list_length(objname) - 1));
218218
break;
219219
case OBJECT_FDW:

0 commit comments

Comments
 (0)