From da90363c126cc7d6381f7e5c1530ff99647e4fa4 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 6 Mar 1997 18:38:35 +0000 Subject: [PATCH] Fix vacuum bug Vadim found with text fields. --- src/backend/commands/vacuum.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 74df108c63..85e1941d18 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.21 1997/03/06 11:41:09 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.22 1997/03/06 18:38:35 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -427,8 +427,8 @@ vc_vacone (Oid relid) memmove(stats->attr,attr[i],ATTRIBUTE_TUPLE_SIZE); stats->best = stats->guess1 = stats->guess2 = 0; stats->max = stats->min = 0; - stats->best_len = stats->guess1_len = stats->guess2_len = 0; - stats->max_len = stats->min_len = 0; + stats->best_len = stats->guess1_len = stats->guess2_len = -1; + stats->max_len = stats->min_len = -1; stats->initialized = false; stats->best_cnt = stats->guess1_cnt = stats->guess1_hits = stats->guess2_hits = 0; stats->max_cnt = stats->min_cnt = stats->null_cnt = stats->nonnull_cnt = 0; @@ -1628,14 +1628,14 @@ vc_bucketcpy(AttributeTupleForm attr, Datum value, Datum *bucket, int16 *bucket_ else { int len = (attr->attlen != -1 ? attr->attlen : VARSIZE(value)); - if (len > *bucket_len) + if (len > *bucket_len) /* bucket_len only grows, prevents thrashing */ { - if (*bucket_len != 0) + if (*bucket_len != -1) /* have we allocated before? */ pfree(DatumGetPointer(*bucket)); - *bucket = PointerGetDatum(palloc(len)); + *bucket = PointerGetDatum(palloc(len+VARHDRSZ)); + *bucket_len = len; } - *bucket_len = len; - memmove(DatumGetPointer(*bucket), DatumGetPointer(value), len); + memmove(DatumGetPointer(*bucket), DatumGetPointer(value), len+VARHDRSZ); } } -- 2.40.0