Currently pg_list.h doesn't have a variant for uint32 list (like T_UIntList), is there a reason other than that that we don't need it till now? I see that one can use T_OidList instead (as Oid is uint32) but I am not sure if that is a good idea to say use it for maintaining a list of TransactionIds. We need to use such a variant of T_UIntlist at one place in the patch for the "streaming of in-progress transactions" [1].
The current use case is as below: typedef struct RelationSyncEntry { .. List *streamed_txns; /* streamed toplevel transactions with this * schema */ /* * We expect relatively small number of streamed transactions. */ static bool get_schema_sent_in_streamed_txn(RelationSyncEntry *entry, TransactionId xid) { .. foreach (lc, entry->streamed_txns) { if (xid == lfirst_int(lc)) return true; } .. } /* * Add the xid in the rel sync entry for which we have already sent the schema * of the relation. */ static void set_schema_sent_in_streamed_txn(RelationSyncEntry *entry, TransactionId xid) { .. entry->streamed_txns = lappend_int(entry->streamed_txns, xid); .. } Now, as far as I can see there is no problem in using T_IntList in such usage because we are not going to fetch stored unsigned value as a signed value, so the comparison in get_schema_sent_in_streamed_txn should work well. However, still, I thought it would be better if there is a built-in T_UIntList. Thoughts? [1] - https://www.postgresql.org/message-id/CAFiTN-u_4uvGjAPO536m-YsR%2Bk9J-%3Dwqx2K9CtrFOHcJPa7Szg%40mail.gmail.com -- With Regards, Amit Kapila.