Andrus Adamchik created CAY-2972:
------------------------------------
Summary: Fewer parentheses in generated SQL
Key: CAY-2972
URL: https://issues.apache.org/jira/browse/CAY-2972
Project: Cayenne
Issue Type: Task
Reporter: Andrus Adamchik
Assignee: Andrus Adamchik
Fix For: 5.0-M3
Cayenne's fluent SQL generator (used by ObjectSelect, DELETE, UPDATE, CASE,
join ON clauses, etc.) wraps every expression node in parentheses unless its
parent is a top-level clause. There is no operator-precedence awareness. This
produces noisy SQL like:
{noformat}
DELETE FROM test WHERE ((col1 = 1) AND (col2 = 'test')) AND (col3 IS
NULL){noformat}
So, let's do this:
1. Drop parens around all comparison operators (=, <>, <, <=, >, >=, LIKE,
BETWEEN) when they sit directly under AND/OR.
2. Drop parens for chained same-operator logical connectives (AND under AND,
OR under OR).
3. Keep parens for mixed AND/OR combinations (e.g. (a OR b) AND c) and for
everything else (arithmetic, bitwise, custom ops, NOT)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)