|
7 | 7 | * Copyright (c) 1996-2010, PostgreSQL Global Development Group
|
8 | 8 | *
|
9 | 9 | * IDENTIFICATION
|
10 |
| - * $PostgreSQL: pgsql/src/backend/commands/comment.c,v 1.118 2010/08/27 11:47:41 rhaas Exp $ |
| 10 | + * $PostgreSQL: pgsql/src/backend/commands/comment.c,v 1.119 2010/09/17 02:49:10 rhaas Exp $ |
11 | 11 | *
|
12 | 12 | *-------------------------------------------------------------------------
|
13 | 13 | */
|
|
38 | 38 | * object types require something more complex; for those, we define helper
|
39 | 39 | * functions.
|
40 | 40 | */
|
41 |
| -static void CheckRelationComment(int objtype, Relation relation); |
42 | 41 | static void CheckAttributeComment(Relation relation);
|
43 | 42 | static void CheckCastComment(List *qualname, List *arguments);
|
44 | 43 |
|
@@ -92,7 +91,9 @@ CommentObject(CommentStmt *stmt)
|
92 | 91 | case OBJECT_SEQUENCE:
|
93 | 92 | case OBJECT_TABLE:
|
94 | 93 | case OBJECT_VIEW:
|
95 |
| - CheckRelationComment(stmt->objtype, relation); |
| 94 | + if (!pg_class_ownercheck(RelationGetRelid(relation), GetUserId())) |
| 95 | + aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CLASS, |
| 96 | + RelationGetRelationName(relation)); |
96 | 97 | break;
|
97 | 98 | case OBJECT_COLUMN:
|
98 | 99 | CheckAttributeComment(relation);
|
@@ -561,51 +562,6 @@ GetComment(Oid oid, Oid classoid, int32 subid)
|
561 | 562 | return comment;
|
562 | 563 | }
|
563 | 564 |
|
564 |
| -/* |
565 |
| - * Check whether the user is allowed to comment on this relation. |
566 |
| - */ |
567 |
| -static void |
568 |
| -CheckRelationComment(int objtype, Relation relation) |
569 |
| -{ |
570 |
| - /* Check object security */ |
571 |
| - if (!pg_class_ownercheck(RelationGetRelid(relation), GetUserId())) |
572 |
| - aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CLASS, |
573 |
| - RelationGetRelationName(relation)); |
574 |
| - |
575 |
| - /* Next, verify that the relation type matches the intent */ |
576 |
| - switch (objtype) |
577 |
| - { |
578 |
| - case OBJECT_INDEX: |
579 |
| - if (relation->rd_rel->relkind != RELKIND_INDEX) |
580 |
| - ereport(ERROR, |
581 |
| - (errcode(ERRCODE_WRONG_OBJECT_TYPE), |
582 |
| - errmsg("\"%s\" is not an index", |
583 |
| - RelationGetRelationName(relation)))); |
584 |
| - break; |
585 |
| - case OBJECT_SEQUENCE: |
586 |
| - if (relation->rd_rel->relkind != RELKIND_SEQUENCE) |
587 |
| - ereport(ERROR, |
588 |
| - (errcode(ERRCODE_WRONG_OBJECT_TYPE), |
589 |
| - errmsg("\"%s\" is not a sequence", |
590 |
| - RelationGetRelationName(relation)))); |
591 |
| - break; |
592 |
| - case OBJECT_TABLE: |
593 |
| - if (relation->rd_rel->relkind != RELKIND_RELATION) |
594 |
| - ereport(ERROR, |
595 |
| - (errcode(ERRCODE_WRONG_OBJECT_TYPE), |
596 |
| - errmsg("\"%s\" is not a table", |
597 |
| - RelationGetRelationName(relation)))); |
598 |
| - break; |
599 |
| - case OBJECT_VIEW: |
600 |
| - if (relation->rd_rel->relkind != RELKIND_VIEW) |
601 |
| - ereport(ERROR, |
602 |
| - (errcode(ERRCODE_WRONG_OBJECT_TYPE), |
603 |
| - errmsg("\"%s\" is not a view", |
604 |
| - RelationGetRelationName(relation)))); |
605 |
| - break; |
606 |
| - } |
607 |
| -} |
608 |
| - |
609 | 565 | /*
|
610 | 566 | * Check whether the user is allowed to comment on an attribute of the
|
611 | 567 | * specified relation.
|
|
0 commit comments