2015-07-11 18:02 GMT+02:00 Shulgin, Oleksandr <oleksandr.shul...@zalando.de>
:

> On Fri, Jul 10, 2015 at 5:16 PM, Pavel Stehule <pavel.steh...@gmail.com>
> wrote:
>
>>
>>> 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.
>>>
>>
>> Again - it is necessary? Postgres still use modular code, not OOP code. I
>> can understand the using of this technique, when I need a possibility to
>> change behave. But these function are used for printing JSON, not printing
>> any others.
>>
>
> No, it's not strictly necessary.
>
> For me it's not about procedural- vs. object- style, but rather about
> being able to override/extend the behavior consistently.  And for that I
> would prefer that if I override the value callback in a JSON output
> context, that it would be called for every value being printed, not only
> for some of them.
>

please, can me show any real use case? JSON is JSON, not  art work. Still I
don't see any value of this.


>
> Thank you for pointing out the case of Explain format, I've totally
> overlooked it in my first version.  Trying to apply the proposed approach
> in the explain printing code led me to reorganize things slightly.  I've
> added explicit functions for printing keys vs. values, thus no need to
> expose that key_scalar param anymore.  There are now separate before/after
> key and before/after value functions as well, but I believe it makes for a
> cleaner code.
>
> The most of the complexity is still in the code that decides whether or
> not to put spaces (between the values or for indentation) and newlines at
> certain points.  Should we decide to unify the style we emit ourselves,
> this could be simplified, while still leaving room for great flexibility if
> overridden by an extension, for example.
>
> Have a nice weekend.
>

you too

Regards

Pavel


> --
> Alex
>
>

Reply via email to