Thread: Maximum len of data fit into the tuple

Maximum len of data fit into the tuple

From
Denis Perchine
Date:
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
----------------------------------


Re: Maximum len of data fit into the tuple

From
Tom Lane
Date:
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