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: https://postgr.es/m/
20220708164534.nbejhgt4ajz35p65@alvherre.pgsql
break;
/*
- * Lists of integers and OIDs don't need to be deep-copied, so we
- * perform a shallow copy via list_copy()
+ * Lists of integers, OIDs and XIDs don't need to be deep-copied,
+ * so we perform a shallow copy via list_copy()
*/
case T_IntList:
case T_OidList:
+ case T_XidList:
retval = list_copy(from);
break;
return false;
}
break;
+ case T_XidList:
+ forboth(item_a, a, item_b, b)
+ {
+ if (lfirst_xid(item_a) != lfirst_xid(item_b))
+ return false;
+ }
+ break;
default:
elog(ERROR, "unrecognized list node type: %d",
(int) a->type);
case T_List:
case T_IntList:
case T_OidList:
+ case T_XidList:
retval = _equalList(a, b);
break;
case T_OidList:
return "OidList";
break;
+ case T_XidList:
+ return "XidList";
+ break;
case T_ExtensibleNode:
return "ExtensibleNode";
break;