Обсуждение: minor error message inconsistency in make_pathkey_from_sortinfo
hi. in make_pathkey_from_sortinfo equality_op = get_opfamily_member(opfamily, opcintype, opcintype, BTEqualStrategyNumber); if (!OidIsValid(equality_op)) /* shouldn't happen */ elog(ERROR, "missing operator %d(%u,%u) in opfamily %u", BTEqualStrategyNumber, opcintype, opcintype, opfamily); the error message seems not right? maybe if (!OidIsValid(equality_op)) /* shouldn't happen */ elog(ERROR, "missing operator =(%u,%u) in opfamily %u",opcintype, opcintype, opfamily); or if (!OidIsValid(equality_op)) /* shouldn't happen */ elog(ERROR, "missing equality operator for type %u in opfamily %u",opcintype, opcintype, opfamily);
On Wed, 24 Apr 2024 15:05:00 +0800
jian he <jian.universality@gmail.com> wrote:
> hi.
>
> in make_pathkey_from_sortinfo
>
> equality_op = get_opfamily_member(opfamily,
> opcintype,
> opcintype,
> BTEqualStrategyNumber);
> if (!OidIsValid(equality_op)) /* shouldn't happen */
> elog(ERROR, "missing operator %d(%u,%u) in opfamily %u",
> BTEqualStrategyNumber, opcintype, opcintype, opfamily);
>
> the error message seems not right?
This message was introduced by 278cb434110 which was aiming to
standardize the wording for similar errors. We can find the pattern
"missing {support function | operator} %d(%u,%u) in opfamily %u"
in several places.
Regards,
Yugo Nagata
>
> maybe
> if (!OidIsValid(equality_op)) /* shouldn't happen */
> elog(ERROR, "missing operator =(%u,%u) in opfamily %u",opcintype,
> opcintype, opfamily);
>
> or
>
> if (!OidIsValid(equality_op)) /* shouldn't happen */
> elog(ERROR, "missing equality operator for type %u in opfamily
> %u",opcintype, opcintype, opfamily);
>
>
--
Yugo NAGATA <nagata@sraoss.co.jp>
On Wed, Apr 24, 2024 at 5:47 PM Yugo NAGATA <nagata@sraoss.co.jp> wrote:
>
> On Wed, 24 Apr 2024 15:05:00 +0800
> jian he <jian.universality@gmail.com> wrote:
>
> > hi.
> >
> > in make_pathkey_from_sortinfo
> >
> > equality_op = get_opfamily_member(opfamily,
> > opcintype,
> > opcintype,
> > BTEqualStrategyNumber);
> > if (!OidIsValid(equality_op)) /* shouldn't happen */
> > elog(ERROR, "missing operator %d(%u,%u) in opfamily %u",
> > BTEqualStrategyNumber, opcintype, opcintype, opfamily);
> >
> > the error message seems not right?
>
> This message was introduced by 278cb434110 which was aiming to
> standardize the wording for similar errors. We can find the pattern
>
> "missing {support function | operator} %d(%u,%u) in opfamily %u"
>
> in several places.
>
the error message
` operator %d`
would translate to
` operator 3`
but there is oid as 3 operator in the catalog.
that's my confusion.
the discussion at [1] didn't explain my confusion.
[1] https://postgr.es/m/CAGPqQf2R9Nk8htpv0FFi+FP776EwMyGuORpc9zYkZKC8sFQE3g@mail.gmail.com
jian he <jian.universality@gmail.com> writes:
> On Wed, Apr 24, 2024 at 5:47 PM Yugo NAGATA <nagata@sraoss.co.jp> wrote:
>> This message was introduced by 278cb434110 which was aiming to
>> standardize the wording for similar errors. We can find the pattern
>> "missing {support function | operator} %d(%u,%u) in opfamily %u"
>> in several places.
> the error message
> ` operator %d`
> would translate to
> ` operator 3`
> but there is oid as 3 operator in the catalog.
> that's my confusion.
That number is the opclass' operator strategy number, not an OID
(which is why it's formatted as %d not %u). See
https://www.postgresql.org/docs/devel/xindex.html#XINDEX-STRATEGIES
regards, tom lane