CREATE OPERATOR and precedence
Hi,
I just got caught by a precedence problem with CREATE OPERATOR.
Obviously, it was mostly my fault (I didn't think of the precedence of my
operator at all), but I didn't find anything in the CREATE OPERATOR
documentation about it either.
From looking at the code, I think I understood that it has a very low
precedence, but shouldn't it be specified in the documentation (so that at
least distracted people like me think of precedence next time they create an
operator :) ) ?
Cheers
Marc
Marc Cousin <cousinmarc@gmail.com> writes:
I just got caught by a precedence problem with CREATE OPERATOR.
Obviously, it was mostly my fault (I didn't think of the precedence of my
operator at all), but I didn't find anything in the CREATE OPERATOR
documentation about it either.
CREATE OPERATOR has nothing to say on the subject because operator
precedences are hard-wired into the parser and can't be changed by
CREATE OPERATOR. See
http://www.postgresql.org/docs/8.4/static/sql-syntax-lexical.html#SQL-PRECEDENCE
regards, tom lane
The Thursday 08 July 2010 16:31:41, Tom Lane wrote :
Marc Cousin <cousinmarc@gmail.com> writes:
I just got caught by a precedence problem with CREATE OPERATOR.
Obviously, it was mostly my fault (I didn't think of the precedence of my
operator at all), but I didn't find anything in the CREATE OPERATOR
documentation about it either.CREATE OPERATOR has nothing to say on the subject because operator
precedences are hard-wired into the parser and can't be changed by
CREATE OPERATOR. Seehttp://www.postgresql.org/docs/8.4/static/sql-syntax-lexical.html#SQL-PRECE
DENCEregards, tom lane
Yes, that's what I found out, afterwards.
From a technical point of view, I obviously totally agree, operators have no
control over precedence, but I was only reporting this because I thought that
it might be helpful to put something like a pointer to this table in the
CREATE OPERATOR doc.
From the user's point of view, even if precedence is hard-wired in the parser,
a note about it could help here, if only as a reminder. The first thing I
thought when facing the problem was : "how do I specify the precedence ?". I
found out I couldn't, but a pointer or a note would have been even easier.
Marc Cousin <cousinmarc@gmail.com> writes:
From a technical point of view, I obviously totally agree, operators
have no control over precedence, but I was only reporting this because
I thought that it might be helpful to put something like a pointer to
this table in the CREATE OPERATOR doc.
Oh, that's a reasonable idea. Done in HEAD.
regards, tom lane