@@ -33,9 +33,8 @@ defmodule Ash.Query.BooleanExpression do
3333 # statements are contradictions. However, that would likely confuse users. For example:
3434 # `Ash.Query.filter(Resource, x == 1 and x in [2, 3])` becomes `#Ash.Query<filter: false>`
3535 # We may want to go down this route some day, but for now we simply use this to combine
36- # statements where possible, which helps with authorization logic that leverages the query
37- # For example, `x in [1, 2] or x == 3` becomes `x in [1, 2, 3]`, and `x in [1, 2, 3] and x != 1`
38- # becomes `x in [2, 3]`
36+ # statements where possible, which helps with authorization logic that leverages the query.
37+ # For example, `x in [1, 2, 3] and x != 1` becomes `x in [2, 3]`
3938 def optimized_new ( _ , nil , nil ) , do: false
4039 def optimized_new ( :and , false , _ ) , do: false
4140 def optimized_new ( :and , _ , false ) , do: false
@@ -94,18 +93,6 @@ defmodule Ash.Query.BooleanExpression do
9493 do_new ( op , left , right )
9594 end
9695
97- def optimized_new (
98- :or ,
99- % Eq { left: left , right: value } = left_op ,
100- % In { left: left , right: % MapSet { } = mapset } = right
101- ) do
102- if can_optimize? ( value ) do
103- % { right | right: MapSet . put ( mapset , value ) }
104- else
105- do_new ( :or , left_op , right )
106- end
107- end
108-
10996 def optimized_new (
11097 :and ,
11198 % Eq { left: left , right: value } = left_expr ,
@@ -142,18 +129,6 @@ defmodule Ash.Query.BooleanExpression do
142129 optimized_new ( op , right , left )
143130 end
144131
145- def optimized_new (
146- :or ,
147- % Eq { left: left , right: left_value } = left_expr ,
148- % Eq { left: left , right: right_value } = right_expr
149- ) do
150- if can_optimize? ( left_value ) && can_optimize? ( right_value ) do
151- % In { left: left , right: MapSet . new ( [ left_value , right_value ] ) }
152- else
153- do_new ( :or , left_expr , right_expr )
154- end
155- end
156-
157132 def optimized_new (
158133 :and ,
159134 % Eq { left: left , right: left_value } = left_expr ,
@@ -178,14 +153,6 @@ defmodule Ash.Query.BooleanExpression do
178153 end
179154 end
180155
181- def optimized_new (
182- :or ,
183- % In { left: left , right: % MapSet { } = left_values } ,
184- % In { left: left , right: % MapSet { } = right_values } = right_expr
185- ) do
186- % { right_expr | right: MapSet . union ( left_values , right_values ) }
187- end
188-
189156 def optimized_new (
190157 :and ,
191158 % In { left: left , right: left_values } = left_expr ,
@@ -204,41 +171,6 @@ defmodule Ash.Query.BooleanExpression do
204171 end
205172 end
206173
207- def optimized_new (
208- :or ,
209- % __MODULE__ { op: :or , left: left , right: right } = left_expr ,
210- right_expr
211- ) do
212- case right_expr do
213- % In { } = in_op ->
214- with { :left , nil } <- { :left , Ash.Filter . find ( left , & simplify? ( & 1 , in_op ) , true , false ) } ,
215- { :right , nil } <- { :right , Ash.Filter . find ( right , & simplify? ( & 1 , in_op ) , true , false ) } do
216- do_new ( :or , left_expr , in_op )
217- else
218- { :left , _ } ->
219- % { left_expr | left: optimized_new ( :or , left , in_op ) }
220-
221- { :right , _ } ->
222- % { left_expr | right: optimized_new ( :or , right , in_op ) }
223- end
224-
225- % Eq { } = eq_op ->
226- with { :left , nil } <- { :left , Ash.Filter . find ( left , & simplify? ( & 1 , eq_op ) , true , false ) } ,
227- { :right , nil } <- { :right , Ash.Filter . find ( right , & simplify? ( & 1 , eq_op ) , true , false ) } do
228- do_new ( :or , left_expr , eq_op )
229- else
230- { :left , _ } ->
231- % { left_expr | left: optimized_new ( :or , left , eq_op ) }
232-
233- { :right , _ } ->
234- % { left_expr | right: optimized_new ( :or , right , eq_op ) }
235- end
236-
237- _ ->
238- do_new ( :or , left_expr , right_expr )
239- end
240- end
241-
242174 def optimized_new (
243175 :and ,
244176 % __MODULE__ { op: :and , left: left , right: right } = left_expr ,
0 commit comments