From: Bruce Momjian Date: Mon, 13 Jan 1997 03:45:33 +0000 (+0000) Subject: Added VERBOSE option to vacuum command. X-Git-Tag: REL6_1~744 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0d3bf78e0b23a876de558f7d11f12350d7fa673a;p=postgresql Added VERBOSE option to vacuum command. --- diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 62609ad1af..8fa7afd129 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 fd5a05f0c4..a7809b61cc 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 opt_inh_star, opt_binary, opt_instead, opt_with_copy, index_opt_unique +%type opt_inh_star, opt_binary, opt_instead, opt_with_copy, + index_opt_unique, opt_verbose %type 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 8f6ab83bc5..80705dee9c 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 26bb04d751..0c5756c1e2 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 0a34170ddd..8cf220d9cd 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 9c6500135c..32929b7bb1 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 b36f95c305..9137442df9 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