pgsql: Add copy/equal support for XID lists
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(-)
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
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
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"