Clodoaldo escribió: > > > fahstats=> analyze; > > > WARNING: skipping "pg_authid" --- only table or database owner can analyze it > The problem with that warning message is that it implies that the db > owner can analyze them which can not be done according to your > comment. The message, if emited, should say then that only superuser > can analyze those tables. How about this patch. -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support
Index: src/backend/commands/analyze.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/commands/analyze.c,v retrieving revision 1.114 diff -c -p -r1.114 analyze.c *** src/backend/commands/analyze.c 3 Jan 2008 21:23:15 -0000 1.114 --- src/backend/commands/analyze.c 15 Jan 2008 22:50:24 -0000 *************** *** 22,27 **** --- 22,28 ---- #include "catalog/index.h" #include "catalog/indexing.h" #include "catalog/namespace.h" + #include "catalog/pg_namespace.h" #include "commands/dbcommands.h" #include "commands/vacuum.h" #include "executor/executor.h" *************** analyze_rel(Oid relid, VacuumStmt *vacst *** 161,169 **** { /* No need for a WARNING if we already complained during VACUUM */ if (!vacstmt->vacuum) ! ereport(WARNING, ! (errmsg("skipping \"%s\" --- only table or database owner can analyze it", ! RelationGetRelationName(onerel)))); relation_close(onerel, ShareUpdateExclusiveLock); return; } --- 162,181 ---- { /* No need for a WARNING if we already complained during VACUUM */ if (!vacstmt->vacuum) ! { ! if (onerel->rd_rel->relisshared) ! ereport(WARNING, ! (errmsg("skipping \"%s\" --- only superuser can analyze it", ! RelationGetRelationName(onerel)))); ! else if (onerel->rd_rel->relnamespace == PG_CATALOG_NAMESPACE) ! ereport(WARNING, ! (errmsg("skipping \"%s\" --- only superuser or database owner can analyze it", ! RelationGetRelationName(onerel)))); ! else ! ereport(WARNING, ! (errmsg("skipping \"%s\" --- only table or database owner can analyze it", ! RelationGetRelationName(onerel)))); ! } relation_close(onerel, ShareUpdateExclusiveLock); return; } Index: src/backend/commands/vacuum.c =================================================================== RCS file: /home/alvherre/Code/cvs/pgsql/src/backend/commands/vacuum.c,v retrieving revision 1.363 diff -c -p -r1.363 vacuum.c *** src/backend/commands/vacuum.c 3 Jan 2008 21:23:15 -0000 1.363 --- src/backend/commands/vacuum.c 15 Jan 2008 22:50:01 -0000 *************** *** 30,35 **** --- 30,36 ---- #include "access/xlog.h" #include "catalog/namespace.h" #include "catalog/pg_database.h" + #include "catalog/pg_namespace.h" #include "commands/dbcommands.h" #include "commands/vacuum.h" #include "executor/executor.h" *************** vacuum_rel(Oid relid, VacuumStmt *vacstm *** 1048,1056 **** if (!(pg_class_ownercheck(RelationGetRelid(onerel), GetUserId()) || (pg_database_ownercheck(MyDatabaseId, GetUserId()) && !onerel->rd_rel->relisshared))) { ! ereport(WARNING, ! (errmsg("skipping \"%s\" --- only table or database owner can vacuum it", ! RelationGetRelationName(onerel)))); relation_close(onerel, lmode); CommitTransactionCommand(); return; --- 1049,1066 ---- if (!(pg_class_ownercheck(RelationGetRelid(onerel), GetUserId()) || (pg_database_ownercheck(MyDatabaseId, GetUserId()) && !onerel->rd_rel->relisshared))) { ! if (onerel->rd_rel->relisshared) ! ereport(WARNING, ! (errmsg("skipping \"%s\" --- only superuser can vacuum it", ! RelationGetRelationName(onerel)))); ! else if (onerel->rd_rel->relnamespace == PG_CATALOG_NAMESPACE) ! ereport(WARNING, ! (errmsg("skipping \"%s\" --- only superuser or database owner can vacuum it", ! RelationGetRelationName(onerel)))); ! else ! ereport(WARNING, ! (errmsg("skipping \"%s\" --- only table or database owner can vacuum it", ! RelationGetRelationName(onerel)))); relation_close(onerel, lmode); CommitTransactionCommand(); return;
---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings