From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Peter Eisentraut <peter_e(at)gmx(dot)net> |
Cc: | pgsql-hackers(at)postgreSQL(dot)org |
Subject: | Re: Precedence of standard comparison operators |
Date: | 2015-02-25 05:56:30 |
Message-ID: | 16153.1424843790@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Here's a completed patch for this. This includes fixing the NOT LIKE
problem as discussed in the other thread.
I've done more-or-less-exhaustive testing on this to verify that it
produces warnings whenever necessary. It generates a few false-positive
warnings in corner cases that seem too complicated to model more precisely.
An example is that the production for "= ANY (sub-select)" clauses looks
like
a_expr subquery_Op sub_type select_with_parens %prec Op
but in point of fact its precedence against operators to its left is
not necessarily Op, but whatever actual operator appears --- for
example "= ANY" has the precedence of "=". This is because of the same
point noted in the other thread that Bison really implements that by
comparison to the lookahead token's precedence, not the rule's declared
precedence. The patch treats this as having precedence Op, which is
the highest possibility, so it will sometimes warn unnecessarily.
regards, tom lane
Attachment | Content-Type | Size |
---|---|---|
change-operator-precedence-1.0.patch | text/x-diff | 54.9 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Paquier | 2015-02-25 06:05:03 | Dereferenced pointer checks in data.c of ECPG |
Previous Message | Michael Paquier | 2015-02-25 05:53:55 | Re: CATUPDATE confusion? |