diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2009-12-22 23:54:17 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2009-12-22 23:54:17 +0000 |
commit | b7d67954456f15762c04e5269b64adc88dcd0860 (patch) | |
tree | 0b9adca664f334d753092ca52b1a2e5afb0e63ef /src/backend/commands/comment.c | |
parent | de0d75ea2416eb86f9d686432bd8961b04a8d9eb (diff) |
Disallow comments on columns of relation types other than tables, views,
and composite types, which are the only relkinds for which pg_dump support
exists for dumping column comments. There is no obvious usefulness for
comments on columns of sequences or toast tables; and while comments on
index columns might have some value, it's not worth the risk of compatibility
problems due to possible changes in the algorithm for assigning names to
index columns. Per discussion.
In consequence, remove now-dead code for copying such comments in CREATE TABLE
LIKE.
Diffstat (limited to 'src/backend/commands/comment.c')
-rw-r--r-- | src/backend/commands/comment.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c index 39cc1debc1e..59459fab0d5 100644 --- a/src/backend/commands/comment.c +++ b/src/backend/commands/comment.c @@ -7,7 +7,7 @@ * Copyright (c) 1996-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/comment.c,v 1.110 2009/12/21 01:34:11 rhaas Exp $ + * $PostgreSQL: pgsql/src/backend/commands/comment.c,v 1.111 2009/12/22 23:54:17 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -627,6 +627,22 @@ CommentAttribute(List *qualname, char *comment) aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CLASS, RelationGetRelationName(relation)); + /* + * Allow comments only on columns of tables, views, and composite types + * (which are the only relkinds for which pg_dump will dump per-column + * comments). In particular we wish to disallow comments on index + * columns, because the naming of an index's columns may change across + * PG versions, so dumping per-column comments could create reload + * failures. + */ + if (relation->rd_rel->relkind != RELKIND_RELATION && + relation->rd_rel->relkind != RELKIND_VIEW && + relation->rd_rel->relkind != RELKIND_COMPOSITE_TYPE) + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("\"%s\" is not a table, view, or composite type", + RelationGetRelationName(relation)))); + /* Now, fetch the attribute number from the system cache */ attnum = get_attnum(RelationGetRelid(relation), attrname); |