|
13 | 13 | *
|
14 | 14 | *
|
15 | 15 | * IDENTIFICATION
|
16 |
| - * $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.364 2008/02/11 19:14:30 tgl Exp $ |
| 16 | + * $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.365 2008/02/2014:31:35 alvherre Exp $ |
17 | 17 | *
|
18 | 18 | *-------------------------------------------------------------------------
|
19 | 19 | */
|
|
30 | 30 | #include"access/xlog.h"
|
31 | 31 | #include"catalog/namespace.h"
|
32 | 32 | #include"catalog/pg_database.h"
|
| 33 | +#include"catalog/pg_namespace.h" |
33 | 34 | #include"commands/dbcommands.h"
|
34 | 35 | #include"commands/vacuum.h"
|
35 | 36 | #include"executor/executor.h"
|
@@ -1048,9 +1049,18 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, char expected_relkind)
|
1048 | 1049 | if (!(pg_class_ownercheck(RelationGetRelid(onerel),GetUserId())||
|
1049 | 1050 | (pg_database_ownercheck(MyDatabaseId,GetUserId())&& !onerel->rd_rel->relisshared)))
|
1050 | 1051 | {
|
1051 |
| -ereport(WARNING, |
1052 |
| -(errmsg("skipping \"%s\" --- only table or database owner can vacuum it", |
1053 |
| -RelationGetRelationName(onerel)))); |
| 1052 | +if (onerel->rd_rel->relisshared) |
| 1053 | +ereport(WARNING, |
| 1054 | +(errmsg("skipping \"%s\" --- only superuser can vacuum it", |
| 1055 | +RelationGetRelationName(onerel)))); |
| 1056 | +elseif (onerel->rd_rel->relnamespace==PG_CATALOG_NAMESPACE) |
| 1057 | +ereport(WARNING, |
| 1058 | +(errmsg("skipping \"%s\" --- only superuser or database owner can vacuum it", |
| 1059 | +RelationGetRelationName(onerel)))); |
| 1060 | +else |
| 1061 | +ereport(WARNING, |
| 1062 | +(errmsg("skipping \"%s\" --- only table or database owner can vacuum it", |
| 1063 | +RelationGetRelationName(onerel)))); |
1054 | 1064 | relation_close(onerel,lmode);
|
1055 | 1065 | CommitTransactionCommand();
|
1056 | 1066 | return;
|
|