diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2023-01-15 17:32:09 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2023-01-15 17:32:09 -0500 |
commit | 647fa500547fdf2a967412633a9f6f21ba69e144 (patch) | |
tree | b895eec537674d20058d3c757f942217d28475db /src/backend/access/gist/gistbuildbuffers.c | |
parent | 3f244d020fbf0b4f01d71e1b7620930be4bf9dc5 (diff) | |
download | postgresql-647fa500547fdf2a967412633a9f6f21ba69e144.tar.gz postgresql-647fa500547fdf2a967412633a9f6f21ba69e144.zip |
Remove arbitrary FUNC_MAX_ARGS limit in int2vectorin and oidvectorin.
int2vectorin limited the number of array elements it'd take to
FUNC_MAX_ARGS, which is probably fine for the traditional use-cases.
But now that pg_publication_rel.prattrs is an int2vector, it's not
fine at all: it's easy to construct cases where that can have up to
about MaxTupleAttributeNumber entries. Trying to replicate such
tables leads to logical-replication failures.
As long as we have to touch this code anyway, let's just remove
the a-priori limit altogether, and let it accept any size that'll
be allowed by repalloc. (Note that since int2vector isn't toastable,
we cannot store arrays longer than about BLCKSZ/2; but there is no
good excuse for letting int2vectorin depend on that. Perhaps we
will lift the no-toast restriction someday.)
While at it, also improve the equivalent logic in oidvectorin.
I don't know of any practical use-case for long oidvectors right
now, but doing it right actually makes the code shorter.
Per report from Erik Rijkers. Back-patch to v15 where
pg_publication_rel.prattrs was added.
Discussion: https://postgr.es/m/668ba539-33c5-8190-ca11-def2913cb94b@xs4all.nl
Diffstat (limited to 'src/backend/access/gist/gistbuildbuffers.c')
0 files changed, 0 insertions, 0 deletions