Commit aefb294e authored by Bruce Momjian's avatar Bruce Momjian

Added restriction to tables vacuum'able.

Added NOTICE messages for bad table names.
parent 487e9148
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.2 1996/10/03 04:19:29 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.3 1996/10/03 20:11:41 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -200,9 +200,11 @@ _vc_getrels(Portal p, NameData *VacRelP) ...@@ -200,9 +200,11 @@ _vc_getrels(Portal p, NameData *VacRelP)
VRelList vrl, cur; VRelList vrl, cur;
Datum d; Datum d;
char *rname; char *rname;
char rkind;
int16 smgrno; int16 smgrno;
bool n; bool n;
ScanKeyData pgckey; ScanKeyData pgckey;
bool found = false;
StartTransactionCommand(); StartTransactionCommand();
...@@ -225,6 +227,8 @@ _vc_getrels(Portal p, NameData *VacRelP) ...@@ -225,6 +227,8 @@ _vc_getrels(Portal p, NameData *VacRelP)
while (HeapTupleIsValid(pgctup = heap_getnext(pgcscan, 0, &buf))) { while (HeapTupleIsValid(pgctup = heap_getnext(pgcscan, 0, &buf))) {
found = true;
/* /*
* We have to be careful not to vacuum the archive (since it * We have to be careful not to vacuum the archive (since it
* already contains vacuumed tuples), and not to vacuum * already contains vacuumed tuples), and not to vacuum
...@@ -252,6 +256,18 @@ _vc_getrels(Portal p, NameData *VacRelP) ...@@ -252,6 +256,18 @@ _vc_getrels(Portal p, NameData *VacRelP)
continue; continue;
} }
d = (Datum) heap_getattr(pgctup, buf, Anum_pg_class_relkind,
pgcdesc, &n);
rkind = DatumGetChar(d);
/* skip system relations */
if (rkind != 'r') {
ReleaseBuffer(buf);
elog(NOTICE, "Vacuum: can not process index and certain system tables" );
continue;
}
/* get a relation list entry for this guy */ /* get a relation list entry for this guy */
old = MemoryContextSwitchTo((MemoryContext)portalmem); old = MemoryContextSwitchTo((MemoryContext)portalmem);
if (vrl == (VRelList) NULL) { if (vrl == (VRelList) NULL) {
...@@ -272,7 +288,10 @@ _vc_getrels(Portal p, NameData *VacRelP) ...@@ -272,7 +288,10 @@ _vc_getrels(Portal p, NameData *VacRelP)
/* wei hates it if you forget to do this */ /* wei hates it if you forget to do this */
ReleaseBuffer(buf); ReleaseBuffer(buf);
} }
if (found == false)
elog(NOTICE, "Vacuum: table not found" );
heap_close(pgclass); heap_close(pgclass);
heap_endscan(pgcscan); heap_endscan(pgcscan);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment