Tom Lane <t...@sss.pgh.pa.us> writes: > Tracking it a bit further, the actual typmod limit is set by this: > > /* > * MaxAttrSize is a somewhat arbitrary upper limit on the declared size of > * data fields of char(n) and similar types. It need not have anything > * directly to do with the *actual* upper limit of varlena values, which > * is currently 1Gb (see TOAST structures in postgres.h). I've set it > * at 10Mb which seems like a reasonable number --- tgl 8/6/00. > */ > #define MaxAttrSize (10 * 1024 * 1024) > > So maybe that's something we *should* document, though we'd have to > explain that the limit on text and unconstrained varchar is different. > > regards, tom lane > > (From the writing style, I suspect the "tgl" here is me not Tom Lockhart. > I'm too lazy to dig in the git history to confirm it though.)
I was bored, and found this: commit 022417740094620880488dd9b04fbb96ff11694b Author: Tom Lane <t...@sss.pgh.pa.us> Date: 2000-08-07 20:16:13 +0000 TOAST mop-up work: update comments for tuple-size-related symbols such as MaxHeapAttributeNumber. Increase MaxAttrSize to something more reasonable (given what it's used for, namely checking char(n) declarations, I didn't make it the full 1G that it could theoretically be --- 10Mb seemed a more reasonable number). Improve calculation of MaxTupleSize. which added the above comment and changed MaxAttrSize: -#define MaxAttrSize (MaxTupleSize - MAXALIGN(sizeof(HeapTupleHeaderData))) +#define MaxAttrSize (10 * 1024 * 1024) - ilmari