You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Andrus Adamchik (Jira)" <ji...@apache.org> on 2026/07/04 19:32:00 UTC
[jira] [Created] (CAY-2972) Fewer parentheses in generated SQL
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)