As you mentioned, attinmeta will be automatically freed when the memory context is destroyed. If our concern here is that repeated calls to walrcv_exec in some section of the code are causing a large number of attinmeta objects to remain unreleased(I’m not sure if anyone would use walrcv_exec to do something like this), this would seem to imply that we are repeatedly constructing identical attinmeta instances – for example:
while (loop_condition) { sprintf(query, "xxx where xx = %d", index++); res = walrcv_exec(conn, query, ...); }
It is rare to encounter a scenario where walrcv_exec is called multiple times and each invocation uses a query with different attrs. Therefore, if this loop scenario is indeed the case, should we consider avoiding the repeated construction of tupdesc/attinmeta?