mirror of
https://github.com/postgres/postgres.git
synced 2025-07-09 22:41:56 +03:00
Improve error messages emitted when VACUUM and ANALYZE skip a table.
Per gripe from Clodoaldo Pinto Neto on Message-ID: <a595de7a0801060326qbfc790ax2a60573043c2e2be@mail.gmail.com>
This commit is contained in:
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/commands/analyze.c,v 1.114 2008/01/03 21:23:15 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/commands/analyze.c,v 1.115 2008/02/20 14:31:35 alvherre Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -22,6 +22,7 @@
|
|||||||
#include "catalog/index.h"
|
#include "catalog/index.h"
|
||||||
#include "catalog/indexing.h"
|
#include "catalog/indexing.h"
|
||||||
#include "catalog/namespace.h"
|
#include "catalog/namespace.h"
|
||||||
|
#include "catalog/pg_namespace.h"
|
||||||
#include "commands/dbcommands.h"
|
#include "commands/dbcommands.h"
|
||||||
#include "commands/vacuum.h"
|
#include "commands/vacuum.h"
|
||||||
#include "executor/executor.h"
|
#include "executor/executor.h"
|
||||||
@ -161,9 +162,20 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt,
|
|||||||
{
|
{
|
||||||
/* No need for a WARNING if we already complained during VACUUM */
|
/* No need for a WARNING if we already complained during VACUUM */
|
||||||
if (!vacstmt->vacuum)
|
if (!vacstmt->vacuum)
|
||||||
ereport(WARNING,
|
{
|
||||||
(errmsg("skipping \"%s\" --- only table or database owner can analyze it",
|
if (onerel->rd_rel->relisshared)
|
||||||
RelationGetRelationName(onerel))));
|
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);
|
relation_close(onerel, ShareUpdateExclusiveLock);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.364 2008/02/11 19:14:30 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.365 2008/02/20 14:31:35 alvherre Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -30,6 +30,7 @@
|
|||||||
#include "access/xlog.h"
|
#include "access/xlog.h"
|
||||||
#include "catalog/namespace.h"
|
#include "catalog/namespace.h"
|
||||||
#include "catalog/pg_database.h"
|
#include "catalog/pg_database.h"
|
||||||
|
#include "catalog/pg_namespace.h"
|
||||||
#include "commands/dbcommands.h"
|
#include "commands/dbcommands.h"
|
||||||
#include "commands/vacuum.h"
|
#include "commands/vacuum.h"
|
||||||
#include "executor/executor.h"
|
#include "executor/executor.h"
|
||||||
@ -1048,9 +1049,18 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, char expected_relkind)
|
|||||||
if (!(pg_class_ownercheck(RelationGetRelid(onerel), GetUserId()) ||
|
if (!(pg_class_ownercheck(RelationGetRelid(onerel), GetUserId()) ||
|
||||||
(pg_database_ownercheck(MyDatabaseId, GetUserId()) && !onerel->rd_rel->relisshared)))
|
(pg_database_ownercheck(MyDatabaseId, GetUserId()) && !onerel->rd_rel->relisshared)))
|
||||||
{
|
{
|
||||||
ereport(WARNING,
|
if (onerel->rd_rel->relisshared)
|
||||||
(errmsg("skipping \"%s\" --- only table or database owner can vacuum it",
|
ereport(WARNING,
|
||||||
RelationGetRelationName(onerel))));
|
(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);
|
relation_close(onerel, lmode);
|
||||||
CommitTransactionCommand();
|
CommitTransactionCommand();
|
||||||
return;
|
return;
|
||||||
|
Reference in New Issue
Block a user