Re: BUG #17855: Uninitialised memory used when the name type value processed in binary mode of Memoize

From: David Rowley <dgrowleyml(at)gmail(dot)com>
To: Alexander Lakhin <exclusion(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #17855: Uninitialised memory used when the name type value processed in binary mode of Memoize
Date: 2024-04-24 02:25:56
Message-ID: CAApHDvqqvkorexCuVkSJ16LcqGKfUdLAn3Y+YsqKNT3Pe56oOA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Sat, 9 Sept 2023 at 20:00, Alexander Lakhin <exclusion(at)gmail(dot)com> wrote:
> I've stumbled upon this issue one more time. With a query like this:
> CREATE TABLE t(id integer, node name);
> CREATE INDEX t_id_node_idx ON t(id, node);
> INSERT INTO t VALUES (1, 'node1');
>
> (Note that this time the error is triggered without the Memoize node.)

Yeah, it's really not a Memoize bug. It's an Index Only Scan bug.
I've added Robert to get his views.

> Maybe it makes sense to register the proposed patch on the commitfest at
> least to keep it in sight?

I've attached another patch which uses another method to fix this, per
an idea from Andres Freund. I'd class it as a hack, but I don't have
any better ideas aside from the mammoth task of making name variable
length. Indexes on name typed columns simply don't store all 64 bytes
of the name, so it's not safe to have code that assumes a name Datum
points to 64 bytes. The patch makes it so such a Datum *will* point to
64 bytes. I've tried to do this as cheaply as possible by saving the
indexes to name columns in a new array in IndexOnlyScanState. That
should make the overhead very small when indexes don't contain any
name-typed columns.

David

Attachment Content-Type Size
v2-0001-Ensure-we-allocate-NAMEDATALEN-bytes-for-names-in.patch text/plain 4.0 KB

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Kostiantyn Tomakh 2024-04-24 06:03:32 Re: BUG #18433: Logical replication timeout
Previous Message David Rowley 2024-04-24 02:05:04 Re: BUG #18305: Unexpected error: "WindowFunc not found in subplan target lists" triggered by subqueries