On Fri, Jul 10, 2015 at 4:04 PM, Pavel Stehule <pavel.steh...@gmail.com> wrote:
> >> >>> 2. why you did indirect call via JsonOutContext? >>>> >>>> What is benefit >>>> >>>> dst.value(&dst, (Datum) 0, JSONTYPE_NULL, InvalidOid, InvalidOid, >>>> false); >>>> >>>> instead >>>> >>>> json_out_value(&dst, ....) >>>> >>> >> For consistency. Even though we initialize the output context ourselves, >> there might be some code introduced between json_out_init_context() and >> dst.value() calls that replaces some of the callbacks, and then there would >> be a difference. >> > > with this consistency? I didn't see this style everywhere in Postgres? > Isn't it premature optimization? > Well, one could call it premature pessimization due to dynamic call overhead. IMO, the fact that json_out_init_context() sets the value callback to json_out_value is an implementation detail, the other parts of code should not rely on. And for the Explain output, there definitely going to be *some* code between context initialization and output callbacks: these are done in a number of different functions. -- Alex