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