aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1997-01-13 03:45:33 +0000
committerBruce Momjian <bruce@momjian.us>1997-01-13 03:45:33 +0000
commit0d3bf78e0b23a876de558f7d11f12350d7fa673a (patch)
treecace0404478b97edbccca053964d28e5083c1284
parentfebfe447a77c101fec49f93ef22ef37e94939d4d (diff)
downloadpostgresql-0d3bf78e0b23a876de558f7d11f12350d7fa673a.tar.gz
postgresql-0d3bf78e0b23a876de558f7d11f12350d7fa673a.zip
Added VERBOSE option to vacuum command.
-rw-r--r--src/backend/commands/vacuum.c16
-rw-r--r--src/backend/parser/gram.y22
-rw-r--r--src/backend/parser/keywords.c3
-rw-r--r--src/backend/tcop/utility.c5
-rw-r--r--src/include/commands/vacuum.h4
-rw-r--r--src/include/nodes/parsenodes.h3
-rw-r--r--src/man/vacuum.l6
7 files changed, 36 insertions, 23 deletions
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
index 62609ad1af1..8fa7afd1295 100644
--- a/src/backend/commands/vacuum.c
+++ b/src/backend/commands/vacuum.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.13 1997/01/10 09:57:16 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.14 1997/01/13 03:43:59 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -46,12 +46,7 @@
#endif /* NEED_RUSAGE */
bool VacuumRunning = false;
-
-#ifdef VACUUM_QUIET
-static int MESSLEV = DEBUG;
-#else
-static int MESSLEV = NOTICE;
-#endif
+static int MESSLEV; /* message level */
typedef struct {
FuncIndexInfo finfo;
@@ -90,10 +85,15 @@ static bool _vc_enough_space (VPageDescr vpd, Size len);
void
-vacuum(char *vacrel)
+vacuum(char *vacrel, bool verbose)
{
NameData VacRel;
+ if (verbose)
+ MESSLEV = NOTICE;
+ else
+ MESSLEV = DEBUG;
+
/* vacrel gets de-allocated on transaction commit */
/* initialize vacuum cleaner */
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index fd5a05f0c40..a7809b61ccc 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.23 1996/12/20 20:33:12 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.24 1997/01/13 03:44:18 momjian Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@@ -133,7 +133,8 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
expr_list, attrs, res_target_list, res_target_list2,
def_list, opt_indirection, group_clause, groupby_list, explain_options
-%type <boolean> opt_inh_star, opt_binary, opt_instead, opt_with_copy, index_opt_unique
+%type <boolean> opt_inh_star, opt_binary, opt_instead, opt_with_copy,
+ index_opt_unique, opt_verbose
%type <ival> copy_dirn, archive_type, OptArchiveType, OptArchiveLocation,
def_type, opt_direction, remove_type, opt_column, event
@@ -187,7 +188,7 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
RENAME, REPLACE, RETRIEVE, RETURNS, REVOKE, ROLLBACK, RULE,
SELECT, SET, SETOF, STDIN, STDOUT, STORE,
TABLE, TO, TRANSACTION, UNIQUE, UPDATE, USING, VACUUM, VALUES
- VERSION, VIEW, WHERE, WITH, WORK
+ VERBOSE, VERSION, VIEW, WHERE, WITH, WORK
%token EXECUTE, RECIPE, EXPLAIN, LIKE
/* Special keywords, not in the query language - see the "lex" file */
@@ -1200,18 +1201,25 @@ ClusterStmt: CLUSTER index_name ON relation_name
*
*****************************************************************************/
-VacuumStmt: VACUUM
+VacuumStmt: VACUUM opt_verbose
{
- $$ = (Node *)makeNode(VacuumStmt);
+ VacuumStmt *n = makeNode(VacuumStmt);
+ n->verbose = $2;
+ $$ = (Node *)n;
}
- | VACUUM relation_name
+ | VACUUM opt_verbose relation_name
{
VacuumStmt *n = makeNode(VacuumStmt);
- n->vacrel = $2;
+ n->verbose = $2;
+ n->vacrel = $3;
$$ = (Node *)n;
}
;
+opt_verbose: VERBOSE { $$ = TRUE; }
+ | /* EMPTY */ { $$ = FALSE; }
+ ;
+
/*****************************************************************************
*
* QUERY:
diff --git a/src/backend/parser/keywords.c b/src/backend/parser/keywords.c
index 8f6ab83bc57..80705dee9ce 100644
--- a/src/backend/parser/keywords.c
+++ b/src/backend/parser/keywords.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.5 1996/11/30 03:38:07 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.6 1997/01/13 03:44:25 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -136,6 +136,7 @@ static ScanKeyword ScanKeywords[] = {
{ "using", USING },
{ "vacuum", VACUUM },
{ "values", VALUES },
+ { "verbose", VERBOSE },
{ "version", VERSION },
{ "view", VIEW },
{ "where", WHERE },
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 26bb04d751e..0c5756c1e2b 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.9 1996/11/13 20:49:50 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.10 1997/01/13 03:44:38 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -580,7 +580,8 @@ ProcessUtility(Node *parsetree,
case T_VacuumStmt:
commandTag = "VACUUM";
CHECK_IF_ABORTED();
- vacuum(((VacuumStmt *) parsetree)->vacrel);
+ vacuum( ((VacuumStmt *) parsetree)->vacrel,
+ ((VacuumStmt *) parsetree)->verbose);
break;
case T_ExplainStmt:
diff --git a/src/include/commands/vacuum.h b/src/include/commands/vacuum.h
index 0a34170dddf..8cf220d9cdd 100644
--- a/src/include/commands/vacuum.h
+++ b/src/include/commands/vacuum.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: vacuum.h,v 1.4 1996/11/29 10:29:45 vadim Exp $
+ * $Id: vacuum.h,v 1.5 1997/01/13 03:44:54 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -54,7 +54,7 @@ typedef VRelListData *VRelList;
extern bool VacuumRunning;
extern void vc_abort(void);
-extern void vacuum(char *vacrel);
+extern void vacuum(char *vacrel, bool verbose);
#endif /* VACUUM_H */
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index 9c6500135c9..32929b7bb13 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: parsenodes.h,v 1.8 1996/12/17 01:53:43 momjian Exp $
+ * $Id: parsenodes.h,v 1.9 1997/01/13 03:45:02 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -397,6 +397,7 @@ typedef struct ClusterStmt {
*/
typedef struct VacuumStmt {
NodeTag type;
+ bool verbose; /* print status info */
char *vacrel; /* table to vacuum */
} VacuumStmt;
diff --git a/src/man/vacuum.l b/src/man/vacuum.l
index b36f95c3058..9137442df9b 100644
--- a/src/man/vacuum.l
+++ b/src/man/vacuum.l
@@ -1,12 +1,12 @@
.\" This is -*-nroff-*-
.\" XXX standard disclaimer belongs here....
-.\" $Header: /cvsroot/pgsql/src/man/Attic/vacuum.l,v 1.2 1996/12/11 00:28:15 momjian Exp $
+.\" $Header: /cvsroot/pgsql/src/man/Attic/vacuum.l,v 1.3 1997/01/13 03:45:33 momjian Exp $
.TH VACUUM SQL 11/05/95 PostgreSQL PostgreSQL
.SH NAME
vacuum \(em vacuum a database
.SH SYNOPSIS
.nf
-\fBvacuum [table]\fP
+\fBvacuum [verbose] [\fPtable\fB]\fP
.fi
.SH DESCRIPTION
.BR Vacuum
@@ -18,6 +18,8 @@ tuples and number of pages stored in all classes. Running
.BR vacuum
periodically will increase Postgres's speed in processing user queries.
.PP
+\fBverbose\fP prints a detailed vacuum activity report for each table.
+.PP
The open database is the one that is vacuumed.
.PP
We recommend that production databases be vacuumed nightly, in order