From 333414fe94941a6a58e7d8e45042548eb2d58119 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 30 Sep 2016 10:09:56 -0400 Subject: Add "eager_parenthesis" late-compilation rule, use w/ PG JSON/HSTORE Added compiler-level flags used by Postgresql to place additional parenthesis than would normally be generated by precedence rules around operations involving JSON, HSTORE indexing operators as well as within their operands since it has been observed that Postgresql's precedence rules for at least the HSTORE indexing operator is not consistent between 9.4 and 9.5. Fixes: #3806 Change-Id: I5899677b330595264543b055abd54f3c76bfabf2 --- lib/sqlalchemy/sql/operators.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'lib/sqlalchemy/sql/operators.py') diff --git a/lib/sqlalchemy/sql/operators.py b/lib/sqlalchemy/sql/operators.py index 142606680..69eee28ab 100644 --- a/lib/sqlalchemy/sql/operators.py +++ b/lib/sqlalchemy/sql/operators.py @@ -215,11 +215,12 @@ class custom_op(object): def __init__( self, opstring, precedence=0, is_comparison=False, - natural_self_precedent=False): + natural_self_precedent=False, eager_grouping=False): self.opstring = opstring self.precedence = precedence self.is_comparison = is_comparison self.natural_self_precedent = natural_self_precedent + self.eager_grouping = eager_grouping def __eq__(self, other): return isinstance(other, custom_op) and \ @@ -935,9 +936,10 @@ _PRECEDENCE = { from_: 15, any_op: 15, all_op: 15, + getitem: 15, json_getitem_op: 15, json_path_getitem_op: 15, - getitem: 15, + mul: 8, truediv: 8, div: 8, @@ -985,6 +987,7 @@ _PRECEDENCE = { as_: -1, exists: 0, + _asbool: -10, _smallest: _smallest, _largest: _largest -- cgit v1.2.1