pgsql: Add copy/equal support for XID lists

Started by Alvaro Herreraalmost 4 years ago5 messageshackers
Jump to latest
#1Alvaro Herrera
alvherre@2ndquadrant.com

Add copy/equal support for XID lists

Commit f10a025cfe97 added support for List to store Xids, but didn't
handle the new type in all cases. Add some obviously necessary pieces.
As far as I am aware, this is all dead code as far as core code is
concerned, but it seems unacceptable not to have it in case third-party
code wants to rely on this type of list. (Some parts of the List API
remain unimplemented, but that can be fixed as and when needed -- see
lack of list_intersection_oid, list_deduplicate_int as precedents.)

Discussion: /messages/by-id/20220708164534.nbejhgt4ajz35p65@alvherre.pgsql

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/5ca0fe5c8ad7987beee95669124c7e245f2816d8

Modified Files
--------------
src/backend/nodes/copyfuncs.c | 5 +++--
src/backend/nodes/equalfuncs.c | 8 ++++++++
src/test/modules/test_oat_hooks/test_oat_hooks.c | 3 +++
3 files changed, 14 insertions(+), 2 deletions(-)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#1)
Re: pgsql: Add copy/equal support for XID lists

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

Add copy/equal support for XID lists

What about outfuncs/readfuncs? I see that you fixed _outList,
but not its caller outNode:

else if (IsA(obj, List) || IsA(obj, IntList) || IsA(obj, OidList))
_outList(str, obj);

and the LEFT_PAREN case in nodeRead() doesn't know what to do either.

regards, tom lane

#3Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Tom Lane (#2)
test_oat_hooks bug (was: Re: pgsql: Add copy/equal support for XID lists)

While looking for a place to host a test for XID lists support, I
noticed a mistake in test_oat_hooks, fixed as per the attached.

--
Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/

Attachments:

0001-Fix-flag-tests-in-src-test-modules-test_oat_hooks.patchtext/x-diff; charset=us-asciiDownload+5-6
#4Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Tom Lane (#2)
Re: pgsql: Add copy/equal support for XID lists

On 2022-Jul-12, Tom Lane wrote:

What about outfuncs/readfuncs? I see that you fixed _outList,
but not its caller outNode:

else if (IsA(obj, List) || IsA(obj, IntList) || IsA(obj, OidList))
_outList(str, obj);

and the LEFT_PAREN case in nodeRead() doesn't know what to do either.

Hmm, true -- naively grepping for OidList wasn't enough (moreso when I
failed to notice one occurrence). This patch closes the holes you
mentioned. I haven't found any others yet.

--
Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/
"La vida es para el que se aventura"

Attachments:

0001-Fix-XID-list-support-some-more.patchtext/x-diff; charset=us-asciiDownload+24-3
#5Michael Paquier
michael@paquier.xyz
In reply to: Alvaro Herrera (#3)
Re: test_oat_hooks bug (was: Re: pgsql: Add copy/equal support for XID lists)

On Tue, Jul 12, 2022 at 05:20:59PM +0200, Alvaro Herrera wrote:

While looking for a place to host a test for XID lists support, I
noticed a mistake in test_oat_hooks, fixed as per the attached.

Indeed. Good catch.
--
Michael