Maximum len of data fit into the tuple

Started by Denis Perchineover 25 years ago2 messages
#1Denis Perchine
dyp@perchine.com

Hello all,

I try to write large objects in one table support for postgres and have
following problem:

I should calculate maximum amount of data I can put into the bytea field.
Table scheme is:

create table pg_largeobject {
loid oid,
lastbyte int4,
data bytea
);

If I will assume that oid == int4 I will have 4 * 2 + 4 (size of vl_len in bytea) = 12.
Plus 36 bytes of header (as noted in FAQ). It will be 48 bytes... But I still get
error that tuple is out too big... And that my size is 8188, but should be 8140.

It would be great if someone will clarify the way I should do such calculations.

--
Sincerely Yours,
Denis Perchine

----------------------------------
E-Mail: dyp@perchine.com
HomePage: http://www.perchine.com/dyp/
FidoNet: 2:5000/120.5
----------------------------------

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Denis Perchine (#1)
Re: Maximum len of data fit into the tuple

Denis Perchine <dyp@perchine.com> writes:

If I will assume that oid == int4 I will have 4 * 2 + 4 (size of
vl_len in bytea) = 12. Plus 36 bytes of header (as noted in FAQ). It
will be 48 bytes... But I still get error that tuple is out too
big... And that my size is 8188, but should be 8140.

It would be great if someone will clarify the way I should do such
calculations.

You forgot the per-page overhead.

Offhand 36 seems too small for the per-tuple overhead, anyway, but I'm
too lazy to count bytes in include/access/htup.h right now...

regards, tom lane