Обсуждение: What's the point of json_extract_path_op etc?

Поиск
Список
Период
Сортировка

What's the point of json_extract_path_op etc?

От
Tom Lane
Дата:
Why do we have essentially duplicate pg_proc entries for json_extract_path
and json_extract_path_op?  The latter is undocumented and seems only to be
used as the infrastructure for the #> operator.  I see that only the
former is marked variadic, but AFAIK the operator machinery couldn't care
less about that, so it seems to me we could get rid of the
json_extract_path_op entry and point the operator at json_extract_path.

Likewise for json_extract_path_text_op, jsonb_extract_path_op, and
jsonb_extract_path_text_op.
        regards, tom lane



Re: What's the point of json_extract_path_op etc?

От
Andrew Dunstan
Дата:
On 06/25/2014 02:46 PM, Tom Lane wrote:
> Why do we have essentially duplicate pg_proc entries for json_extract_path
> and json_extract_path_op?  The latter is undocumented and seems only to be
> used as the infrastructure for the #> operator.  I see that only the
> former is marked variadic, but AFAIK the operator machinery couldn't care
> less about that, so it seems to me we could get rid of the
> json_extract_path_op entry and point the operator at json_extract_path.
>
> Likewise for json_extract_path_text_op, jsonb_extract_path_op, and
> jsonb_extract_path_text_op.
>
>             



ISTR trying that and running into problems, maybe with opr_sanity checks.

But if you can get rid of them cleanly then by all means do.

cheers

andrew



Re: What's the point of json_extract_path_op etc?

От
Tom Lane
Дата:
Andrew Dunstan <andrew@dunslane.net> writes:
> On 06/25/2014 02:46 PM, Tom Lane wrote:
>> Why do we have essentially duplicate pg_proc entries for json_extract_path
>> and json_extract_path_op?
>> Likewise for json_extract_path_text_op, jsonb_extract_path_op, and
>> jsonb_extract_path_text_op.

> ISTR trying that and running into problems, maybe with opr_sanity checks.

Well, the reason that opr_sanity is complaining is that there's a
violation of our general policy of documenting either the operator or
the underlying function, not both.  Using a separate pg_proc entry
like this doesn't mean you didn't violate the policy; you just hid the
violation from opr_sanity.

Do we actually want to document these things as both operators and
functions?  If we do, then the right answer is to list them as known
exceptions in the opr_sanity test, not to hide the fact that we're
violating the general documentation policy.
        regards, tom lane



Re: What's the point of json_extract_path_op etc?

От
Andrew Dunstan
Дата:
On 06/26/2014 03:11 PM, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>> On 06/25/2014 02:46 PM, Tom Lane wrote:
>>> Why do we have essentially duplicate pg_proc entries for json_extract_path
>>> and json_extract_path_op?
>>> Likewise for json_extract_path_text_op, jsonb_extract_path_op, and
>>> jsonb_extract_path_text_op.
>> ISTR trying that and running into problems, maybe with opr_sanity checks.
> Well, the reason that opr_sanity is complaining is that there's a
> violation of our general policy of documenting either the operator or
> the underlying function, not both.  Using a separate pg_proc entry
> like this doesn't mean you didn't violate the policy; you just hid the
> violation from opr_sanity.
>
> Do we actually want to document these things as both operators and
> functions?  If we do, then the right answer is to list them as known
> exceptions in the opr_sanity test, not to hide the fact that we're
> violating the general documentation policy.


It's quite important that we have the variadic functions exposed.

cheers

andrew



Re: What's the point of json_extract_path_op etc?

От
Tom Lane
Дата:
Andrew Dunstan <andrew@dunslane.net> writes:
> On 06/26/2014 03:11 PM, Tom Lane wrote:
>> Do we actually want to document these things as both operators and
>> functions?  If we do, then the right answer is to list them as known
>> exceptions in the opr_sanity test, not to hide the fact that we're
>> violating the general documentation policy.

> It's quite important that we have the variadic functions exposed.

Yeah, I suppose --- and at this point backwards compatibility would
demand it anyway.  I'll go fix the regression test.
        regards, tom lane