Let us say that the datum of type Datum contains a Jsonb* type. Then after the call
Jsonb *jb = DatumGetJsonb(datum); the jb might point to a palloc'ed structure, in case detoasting took place. So the question is if this is the right way to free up the memory after checking that the jb was detoasted? if ((void *)jb != DatumGetPointer(datum)) pfree(jb); // free if detoasted