Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit5ca0fe5

Browse files
committed
Add copy/equal support for XID lists
Commitf10a025 added support for List to store Xids, but didn'thandle 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 isconcerned, but it seems unacceptable not to have it in case third-partycode wants to rely on this type of list. (Some parts of the List APIremain unimplemented, but that can be fixed as and when needed -- seelack of list_intersection_oid, list_deduplicate_int as precedents.)Discussion:https://postgr.es/m/20220708164534.nbejhgt4ajz35p65@alvherre.pgsql
1 parentd3117fc commit5ca0fe5

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

‎src/backend/nodes/copyfuncs.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,11 +187,12 @@ copyObjectImpl(const void *from)
187187
break;
188188

189189
/*
190-
* Lists of integersandOIDs don't need to be deep-copied, so we
191-
* perform a shallow copy via list_copy()
190+
* Lists of integers, OIDsandXIDs don't need to be deep-copied,
191+
*so weperform a shallow copy via list_copy()
192192
*/
193193
caseT_IntList:
194194
caseT_OidList:
195+
caseT_XidList:
195196
retval=list_copy(from);
196197
break;
197198

‎src/backend/nodes/equalfuncs.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,13 @@ _equalList(const List *a, const List *b)
188188
return false;
189189
}
190190
break;
191+
caseT_XidList:
192+
forboth(item_a,a,item_b,b)
193+
{
194+
if (lfirst_xid(item_a)!=lfirst_xid(item_b))
195+
return false;
196+
}
197+
break;
191198
default:
192199
elog(ERROR,"unrecognized list node type: %d",
193200
(int)a->type);
@@ -238,6 +245,7 @@ equal(const void *a, const void *b)
238245
caseT_List:
239246
caseT_IntList:
240247
caseT_OidList:
248+
caseT_XidList:
241249
retval=_equalList(a,b);
242250
break;
243251

‎src/test/modules/test_oat_hooks/test_oat_hooks.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1122,6 +1122,9 @@ nodetag_to_string(NodeTag tag)
11221122
caseT_OidList:
11231123
return"OidList";
11241124
break;
1125+
caseT_XidList:
1126+
return"XidList";
1127+
break;
11251128
caseT_ExtensibleNode:
11261129
return"ExtensibleNode";
11271130
break;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp