Chapman Flack <c...@anastigmatix.net> writes: > On 12/14/21 20:02, Tom Lane wrote: >> The API contract for lookup_rowtype_tupdesc specifies that you must "call >> ReleaseTupleDesc or DecrTupleDescRefCount when done using the tupdesc". >> It's safe to assume that the tupdesc will stick around as long as you >> haven't done that.
> I think what threw me was having a function whose API contract mentions > reference counts, but that sometimes gives me things that don't have them. That's supposed to be hidden under ReleaseTupleDesc; you shouldn't have to think about it. > Oh, hmm, maybe one thing in that API comment ought to be changed. It says > I must call ReleaseTupleDesc *or* DecrTupleDescRefCount. Maybe that dates > from before the shared registry? ReleaseTupleDesc is safe, but anybody who > uses DecrTupleDescRefCount on a lookup_rowtype_tupdesc result could be > in for an assertion failure if a non-refcounted tupdesc is returned. Yeah, I was just wondering the same. I think DecrTupleDescRefCount is safe if you know you are looking up a named composite type, but maybe that's still too much familiarity with typcache innards. regards, tom lane