pgsql: Short-circuit slice requests that are for more than the object's

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Short-circuit slice requests that are for more than the object's
Date: 2021-03-22 18:01:31
Message-ID: E1lOOrr-0005pj-8k@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Short-circuit slice requests that are for more than the object's size.

substring(), and perhaps other callers, isn't careful to pass a
slice length that is no more than the datum's true size. Since
toast_decompress_datum_slice's children will palloc the requested
slice length, this can waste memory. Also, close study of the liblz4
documentation suggests that it is dependent on the caller to not ask
for more than the correct amount of decompressed data; this squares
with observed misbehavior with liblz4 1.8.3. Avoid these problems
by switching to the normal full-decompression code path if the
slice request is >= datum's decompressed size.

Tom Lane and Dilip Kumar

Discussion: https://postgr.es/m/507597.1616370729@sss.pgh.pa.us

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/063dd37ebc7644e8db6419565b50dca019e69e86

Modified Files
--------------
src/backend/access/common/detoast.c | 11 +++++++++++
src/include/access/toast_internals.h | 2 ++
2 files changed, 13 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Tomas Vondra 2021-03-22 23:55:22 pgsql: Optimize allocations in bringetbitmap
Previous Message Tom Lane 2021-03-22 15:20:54 pgsql: Remove useless configure probe for <lz4/lz4.h>.