Back-patch fix for problems with oversize pg_statistic tuples when both

the min and max values of a column are long.
This commit is contained in:
Tom Lane 2000-01-04 17:27:26 +00:00
parent 621e372189
commit 6580668392

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.110.2.3 1999/08/25 12:01:45 ishii Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.110.2.4 2000/01/04 17:27:26 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -2405,10 +2405,21 @@ vc_updstats(Oid relid, int num_pages, int num_tuples, bool hasindex, VRelStats *
stup = heap_formtuple(sd->rd_att, values, nulls);
/* ----------------
* insert the tuple in the relation and get the tuple's oid.
* Watch out for oversize tuple, which can happen if
* both of the saved data values are long.
* Our fallback strategy is just to not store the
* pg_statistic tuple at all in that case. (We could
* replace the values by NULLs and still store the
* numeric stats, but presently selfuncs.c couldn't
* do anything useful with that case anyway.)
* ----------------
*/
heap_insert(sd, stup);
if (MAXALIGN(stup->t_len) <= MaxTupleSize)
{
/* OK to store tuple */
heap_insert(sd, stup);
}
pfree(DatumGetPointer(values[3]));
pfree(DatumGetPointer(values[4]));
pfree(stup);