Commit d8dbbc8c authored by Bruce Momjian's avatar Bruce Momjian

vacuum fix.

parent a53ea467
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.56 1998/08/28 03:36:25 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.57 1998/08/28 04:57:19 momjian Exp $
* *
* *
* INTERFACE ROUTINES * INTERFACE ROUTINES
...@@ -1267,6 +1267,7 @@ FormIndexDatum(int numberOfAttributes, ...@@ -1267,6 +1267,7 @@ FormIndexDatum(int numberOfAttributes,
FuncIndexInfoPtr fInfo) FuncIndexInfoPtr fInfo)
{ {
AttrNumber i; AttrNumber i;
int offset;
bool isNull; bool isNull;
/* ---------------- /* ----------------
...@@ -1276,16 +1277,19 @@ FormIndexDatum(int numberOfAttributes, ...@@ -1276,16 +1277,19 @@ FormIndexDatum(int numberOfAttributes,
* ---------------- * ----------------
*/ */
for (i = 0; i < numberOfAttributes; i++) for (i = 1; i <= numberOfAttributes; i++)
{ {
datum[i] = PointerGetDatum(GetIndexValue(heapTuple, offset = AttrNumberGetAttrOffset(i);
datum[offset] =
PointerGetDatum(GetIndexValue(heapTuple,
heapDescriptor, heapDescriptor,
i, offset,
attributeNumber, attributeNumber,
fInfo, fInfo,
&isNull)); &isNull));
nullv[i] = (isNull) ? 'n' : ' '; nullv[offset] = (isNull) ? 'n' : ' ';
} }
} }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.77 1998/08/28 03:36:26 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.78 1998/08/28 04:57:21 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include "postgres.h" #include "postgres.h"
#include "miscadmin.h"
#include "access/genam.h" #include "access/genam.h"
#include "access/heapam.h" #include "access/heapam.h"
#include "access/transam.h" #include "access/transam.h"
...@@ -189,8 +190,8 @@ vc_init() ...@@ -189,8 +190,8 @@ vc_init()
if ((fd = open("pg_vlock", O_CREAT | O_EXCL, 0600)) < 0) if ((fd = open("pg_vlock", O_CREAT | O_EXCL, 0600)) < 0)
{ {
elog(ERROR, "Can't create lock file. Is another vacuum cleaner running?\n\ elog(ERROR, "Can't create lock file. Is another vacuum cleaner running?\n\
\tIf not, you may remove the pg_vlock file in the pgsql/data/base/your_db\n\ \tIf not, you may remove the pg_vlock file in the %s\n\
\tdirectory"); \tdirectory", DatabasePath);
} }
close(fd); close(fd);
...@@ -2202,11 +2203,10 @@ static void ...@@ -2202,11 +2203,10 @@ static void
vc_mkindesc(Relation onerel, int nindices, Relation *Irel, IndDesc **Idesc) vc_mkindesc(Relation onerel, int nindices, Relation *Irel, IndDesc **Idesc)
{ {
IndDesc *idcur; IndDesc *idcur;
HeapTuple tuple, cachetuple; HeapTuple cachetuple;
AttrNumber *attnumP; AttrNumber *attnumP;
int natts; int natts;
int i; int i;
Buffer buffer;
*Idesc = (IndDesc *) palloc(nindices * sizeof(IndDesc)); *Idesc = (IndDesc *) palloc(nindices * sizeof(IndDesc));
...@@ -2216,13 +2216,8 @@ vc_mkindesc(Relation onerel, int nindices, Relation *Irel, IndDesc **Idesc) ...@@ -2216,13 +2216,8 @@ vc_mkindesc(Relation onerel, int nindices, Relation *Irel, IndDesc **Idesc)
ObjectIdGetDatum(RelationGetRelid(Irel[i])), ObjectIdGetDatum(RelationGetRelid(Irel[i])),
0, 0, 0); 0, 0, 0);
Assert(cachetuple); Assert(cachetuple);
/* we never free the copy we make, because Idesc needs it for later */
/* get the buffer cache tuple */ idcur->tform = (IndexTupleForm) GETSTRUCT(cachetuple);
tuple = heap_fetch(onerel, SnapshotNow, &cachetuple->t_ctid, &buffer);
Assert(tuple);
pfree(cachetuple);
idcur->tform = (IndexTupleForm) GETSTRUCT(tuple);
for (attnumP = &(idcur->tform->indkey[0]), natts = 0; for (attnumP = &(idcur->tform->indkey[0]), natts = 0;
*attnumP != InvalidAttrNumber && natts != INDEX_MAX_KEYS; *attnumP != InvalidAttrNumber && natts != INDEX_MAX_KEYS;
attnumP++, natts++); attnumP++, natts++);
...@@ -2238,7 +2233,6 @@ vc_mkindesc(Relation onerel, int nindices, Relation *Irel, IndDesc **Idesc) ...@@ -2238,7 +2233,6 @@ vc_mkindesc(Relation onerel, int nindices, Relation *Irel, IndDesc **Idesc)
idcur->finfoP = (FuncIndexInfo *) NULL; idcur->finfoP = (FuncIndexInfo *) NULL;
idcur->natts = natts; idcur->natts = natts;
ReleaseBuffer(buffer);
} }
} /* vc_mkindesc */ } /* vc_mkindesc */
......
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