On Wed Sep 2, 2026 at 11:36 AM UTC, Matthias van de Meent wrote: > Hi, > > I'd like to track the size of a dlist for data structure validation > purposes[^0]. Normally, one would use a dclist, as this tracks a > count of list elements contained therein, but because this code would > not be called in most normal production builds using a dclist would > waste precious memory. > Manually tracking the length is possible, but tedious, and a local > wrapper around the used dclist/dlist APIs (with different > implementations conditioned with #ifdefs to use the right types) would > also be a significant amount of effort, that'd be duplicated every > time . > > Attached is a patch that adds glist_* macros, which wrap several > dlist/dclist_* APIs, so that developers can use dlist/dclist > selectively in different environments, without significant visual > overhead in the code. I'm planning to use this in the Proxy memory > contexts over at [1]. > > I've considered also adding slist_* to the macros, but I've never > needed selective slist vs dlist/dclist before, so I ignored that list > type for now. > > > Kind regards, > > Matthias van de Meent > Databricks (https://www.databricks.com) > > > [^0]: This case for builds with MEMORY_CONTEXT_CHECKING, but builds > with USE_ASSERT_CHECKING or WRITE_READ_PARSE_PLAN_TREES -like options > may also want this. > > [1]: > https://www.postgresql.org/message-id/flat/CAEze2WiPyruOtUOSyRUV8mQssjmYwno0M6hkxC_iUpH-=w8...@mail.gmail.com
I can't speak much to the purpose, but the patch itself looks correct given my understanding of _Generic. I also checked that the dlist/dclist function names match up with the glist function names. Do you think it makes sense to add a comment of how one might use glist? There is a large comment at the top of ilist.h where it could make sense to add one if you think it would be useful. Maybe dglist would be a better name to keep it more scoped to doubly linked lists? -- Tristan Partin PostgreSQL Contributors Team AWS (https://aws.amazon.com)
