git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: a386942)
Correct the command tags for ALTER ... RENAME COLUMN.
Wed, 6 Nov 2019 03:54:17 +0000 (12:54 +0900)
Wed, 6 Nov 2019 03:54:17 +0000 (12:54 +0900)
Previously ALTER MATERIALIZED VIEW / FOREIGN TABLE ... RENAME COLUMN ...
returned "ALTER TABLE" as a command tag. This commit fixes them so that
they return "ALTER MATERIALIZED VIEW" and "ALTER FOREIGN TABLE" as
command tags, respectively.

This issue exists in all supported versions, but we don't back-patch this
because it's not enough of a bug to justify taking any compatibility risks for.
Otherwise, the back-patch would cause minor version update to break,
for example, the existing event trigger functions using TG_TAG.

Author: Fujii Masao
Reviewed-by: Ibrar Ahmed
Discussion: https://postgr.es/m/CAHGQGwGUaC03FFdTFoHsCuDrrNvFvNVQ6xyd40==P25WvuBJjg@mail.gmail.com


diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index f2269ad35ca4e718eea232183ca6e5021c91a53e..e9845457809c6fd61dc1f37558d82c8e767792dc 100644 (file)
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -2399,7 +2399,14 @@ CreateCommandTag(Node *parsetree)
break;
case T_RenameStmt:
- tag = AlterObjectTypeCommandTag(((RenameStmt *) parsetree)->renameType);
+ /*
+ * When the column is renamed, the command tag is created
+ * from its relation type
+ */
+ tag = AlterObjectTypeCommandTag(
+ ((RenameStmt *) parsetree)->renameType == OBJECT_COLUMN ?
+ ((RenameStmt *) parsetree)->relationType :
+ ((RenameStmt *) parsetree)->renameType);
break;
case T_AlterObjectDependsStmt:
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /