Hi Jian:

Thanks for the review!

compared with jsonb_numeric. I am wondering if you need a free *jb.
> elog(INFO,"jb=%p arg pointer=%p ", jb, PG_GETARG_POINTER(0));
> says there two are not the same.
>

Thanks for pointing this out,  I am not sure what to do right now.
Basically the question is that shall we free the memory which
is allocated in a function call.  The proof to do it is obvious, but the
proof to NOT do it may be usually the memory is allocated under
ExprContext  Memorycontext,  it will be reset once the current
tuple is proceed, and MemoryContextReset will be more effective
than pfrees;

I checked most of the functions to free its memory, besides the
ones you mentioned,  numeric_gt/ne/xxx function also free them
directly.  But the functions like jsonb_object_field_text,
jsonb_array_element,  jsonb_array_element_text don't.

I'd like to hear more options from more experienced people,
this issue also confused me before. and I'm neutral to this now.
after we get an agreement on this,  I will update the patch
accordingly.

-- 
Best Regards
Andy Fan

Reply via email to