diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2012-11-08 11:34:37 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2012-11-08 11:34:37 -0500 |
commit | 03787f63921e37c123ceff712ed405c5172e765d (patch) | |
tree | bce755a86ee8bbe8cca8aa8cba323c0491d88764 /src/backend/commands/dropcmds.c | |
parent | 9eb80f2ca75a205949df7dc86019d99fe076eb87 (diff) | |
download | postgresql-03787f63921e37c123ceff712ed405c5172e765d.tar.gz postgresql-03787f63921e37c123ceff712ed405c5172e765d.zip |
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.
Diffstat (limited to 'src/backend/commands/dropcmds.c')
-rw-r--r-- | src/backend/commands/dropcmds.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/backend/commands/dropcmds.c b/src/backend/commands/dropcmds.c index 1b8529ed843..36b09ca4b81 100644 --- a/src/backend/commands/dropcmds.c +++ b/src/backend/commands/dropcmds.c @@ -203,13 +203,13 @@ 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_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: |