Skip to content

Commit 07a03f3

Browse files
committed
Simplify negations
1 parent 27a1aa4 commit 07a03f3

File tree

3 files changed

+11
-33
lines changed

3 files changed

+11
-33
lines changed

deps/rabbit/src/rabbit_amqp_filter_jms.erl

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -162,39 +162,19 @@ eval0({'between', Expr, From, To}, Msg) ->
162162
FromVal = eval0(From, Msg),
163163
ToVal = eval0(To, Msg),
164164
between(Value, FromVal, ToVal);
165-
eval0({'not_between', Expr, From, To}, Msg) ->
166-
case eval0({'between', Expr, From, To}, Msg) of
167-
true -> false;
168-
false -> true;
169-
_ -> undefined
170-
end;
171165

172166
eval0({'in', Expr, ValueList}, Msg) ->
173167
Value = eval0(Expr, Msg),
174168
is_in(Value, ValueList);
175-
eval0({'not_in', Expr, ValueList}, Msg) ->
176-
case eval0({'in', Expr, ValueList}, Msg) of
177-
true -> false;
178-
false -> true;
179-
_ -> undefined
180-
end;
181169

182170
eval0({'is_null', Expr}, Msg) ->
183171
eval0(Expr, Msg) =:= undefined;
184-
eval0({'is_not_null', Expr}, Msg) ->
185-
eval0(Expr, Msg) =/= undefined;
186172

187173
eval0({'like', Expr, {pattern, Pattern}}, Msg) ->
188174
Subject = eval0(Expr, Msg),
189175
case is_binary(Subject) of
190176
true -> like(Subject, Pattern);
191177
false -> undefined
192-
end;
193-
eval0({'not_like', Expr, Pattern}, Msg) ->
194-
case eval0({'like', Expr, Pattern}, Msg) of
195-
true -> false;
196-
false -> true;
197-
_ -> undefined
198178
end.
199179

200180
%% "Comparison or arithmetic with an unknown value always yields an unknown value."
@@ -361,9 +341,7 @@ transform_ast(Ast0, JmsSelector) ->
361341
fun({identifier, Ident})
362342
when is_binary(Ident) ->
363343
{identifier, rabbit_amqp_util:section_field_name_to_atom(Ident)};
364-
({Op, _Ident, _Pattern, _Escape} = Node)
365-
when Op =:= 'like' orelse
366-
Op =:= 'not_like' ->
344+
({'like', _Ident, _Pattern, _Escape} = Node) ->
367345
transform_pattern_node(Node);
368346
(Node) ->
369347
Node

deps/rabbit/src/rabbit_jms_selector_parser.erl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1600,7 +1600,7 @@ yeccpars2_49_(__Stack0) ->
16001600
[___4,___3,___2,___1 | __Stack] = __Stack0,
16011601
[begin
16021602

1603-
{'not_like', ___1, process_like_pattern(___4), no_escape}
1603+
{'not', {'like', ___1, process_like_pattern(___4), no_escape}}
16041604
end | __Stack].
16051605

16061606
-compile({inline,yeccpars2_51_/1}).
@@ -1611,7 +1611,7 @@ yeccpars2_51_(__Stack0) ->
16111611
[___6,___5,___4,___3,___2,___1 | __Stack] = __Stack0,
16121612
[begin
16131613

1614-
{'not_like', ___1, process_like_pattern(___4), process_escape_char(___6)}
1614+
{'not', {'like', ___1, process_like_pattern(___4), process_escape_char(___6)}}
16151615
end | __Stack].
16161616

16171617
-compile({inline,yeccpars2_54_/1}).
@@ -1651,7 +1651,7 @@ yeccpars2_57_(__Stack0) ->
16511651
yeccpars2_58_(__Stack0) ->
16521652
[___6,___5,___4,___3,___2,___1 | __Stack] = __Stack0,
16531653
[begin
1654-
{'not_in', ___1, lists:uniq(___5)}
1654+
{'not', {'in', ___1, lists:uniq(___5)}}
16551655
end | __Stack].
16561656

16571657
-compile({inline,yeccpars2_61_/1}).
@@ -1661,7 +1661,7 @@ yeccpars2_58_(__Stack0) ->
16611661
yeccpars2_61_(__Stack0) ->
16621662
[___6,___5,___4,___3,___2,___1 | __Stack] = __Stack0,
16631663
[begin
1664-
{'not_between', ___1, ___4, ___6}
1664+
{'not', {'between', ___1, ___4, ___6}}
16651665
end | __Stack].
16661666

16671667
-compile({inline,yeccpars2_62_/1}).
@@ -1823,7 +1823,7 @@ yeccpars2_85_(__Stack0) ->
18231823
yeccpars2_86_(__Stack0) ->
18241824
[___4,___3,___2,___1 | __Stack] = __Stack0,
18251825
[begin
1826-
{'is_not_null', ___1}
1826+
{'not', {'is_null', ___1}}
18271827
end | __Stack].
18281828

18291829

deps/rabbit/src/rabbit_jms_selector_parser.yrl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,28 +67,28 @@ comparison_expr -> additive_expr : '$1'.
6767

6868
%% BETWEEN expression
6969
between_expr -> additive_expr 'BETWEEN' additive_expr 'AND' additive_expr : {'between', '$1', '$3', '$5'}.
70-
between_expr -> additive_expr 'NOT' 'BETWEEN' additive_expr 'AND' additive_expr : {'not_between', '$1', '$4', '$6'}.
70+
between_expr -> additive_expr 'NOT' 'BETWEEN' additive_expr 'AND' additive_expr : {'not', {'between', '$1', '$4', '$6'}}.
7171

7272
%% LIKE expression
7373
like_expr -> additive_expr 'LIKE' string :
7474
{'like', '$1', process_like_pattern('$3'), no_escape}.
7575
like_expr -> additive_expr 'LIKE' string 'ESCAPE' string :
7676
{'like', '$1', process_like_pattern('$3'), process_escape_char('$5')}.
7777
like_expr -> additive_expr 'NOT' 'LIKE' string :
78-
{'not_like', '$1', process_like_pattern('$4'), no_escape}.
78+
{'not', {'like', '$1', process_like_pattern('$4'), no_escape}}.
7979
like_expr -> additive_expr 'NOT' 'LIKE' string 'ESCAPE' string :
80-
{'not_like', '$1', process_like_pattern('$4'), process_escape_char('$6')}.
80+
{'not', {'like', '$1', process_like_pattern('$4'), process_escape_char('$6')}}.
8181

8282
%% IN expression
8383
in_expr -> additive_expr 'IN' '(' string_list ')' : {'in', '$1', lists:uniq('$4')}.
84-
in_expr -> additive_expr 'NOT' 'IN' '(' string_list ')' : {'not_in', '$1', lists:uniq('$5')}.
84+
in_expr -> additive_expr 'NOT' 'IN' '(' string_list ')' : {'not', {'in', '$1', lists:uniq('$5')}}.
8585
string_list -> string_item : ['$1'].
8686
string_list -> string_item ',' string_list : ['$1'|'$3'].
8787
string_item -> string : extract_value('$1').
8888

8989
%% IS NULL expression
9090
is_null_expr -> identifier_expr 'IS' 'NULL' : {'is_null', '$1'}.
91-
is_null_expr -> identifier_expr 'IS' 'NOT' 'NULL' : {'is_not_null', '$1'}.
91+
is_null_expr -> identifier_expr 'IS' 'NOT' 'NULL' : {'not', {'is_null', '$1'}}.
9292

9393
%% Arithmetic expressions
9494
additive_expr -> additive_expr '+' multiplicative_expr : {'+', '$1', '$3'}.

0 commit comments

Comments
 (0)