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

Reply via email to