@@ -371,7 +371,6 @@ defmodule AshPostgres.DataLayer do
371371]
372372}
373373
374- alias Ash.Filter
375374alias Ash.Query . { BooleanExpression , Not , Ref }
376375
377376@ behaviour Ash.DataLayer
@@ -3211,29 +3210,36 @@ defmodule AshPostgres.DataLayer do
32113210end
32123211
32133212@ doc false
3214- def split_and_statements ( % Filter { expression: expression } ) do
3215- split_and_statements ( expression )
3213+ def split_and_statements ( nil ) , do: [ ]
3214+ def split_and_statements ( other ) , do: do_split_statements ( other )
3215+
3216+ def do_split_statements ( % Ash.Filter { expression: expression } ) do
3217+ do_split_statements ( expression )
32163218end
32173219
3218- def split_and_statements ( % BooleanExpression { op: :and , left: left , right: right } ) do
3219- split_and_statements ( left ) ++ split_and_statements ( right )
3220+ def do_split_statements (
3221+ % Not {
3222+ expression: % BooleanExpression { op: :or , left: left , right: right }
3223+ }
3224+ ) do
3225+ do_split_statements (
3226+ % BooleanExpression {
3227+ op: :and ,
3228+ left: % Not { expression: left } ,
3229+ right: % Not { expression: right }
3230+ }
3231+ )
32203232end
32213233
3222- def split_and_statements ( % Not { expression: % Not { expression: expression } } ) do
3223- split_and_statements ( expression )
3234+ def do_split_statements ( % Not { expression: % Not { expression: expression } } ) do
3235+ do_split_statements ( expression )
32243236end
32253237
3226- def split_and_statements ( % Not {
3227- expression: % BooleanExpression { op: :or , left: left , right: right }
3228- } ) do
3229- split_and_statements ( % BooleanExpression {
3230- op: :and ,
3231- left: % Not { expression: left } ,
3232- right: % Not { expression: right }
3233- } )
3238+ def do_split_statements ( % BooleanExpression { op: :and , left: left , right: right } ) do
3239+ do_split_statements ( left ) ++ do_split_statements ( right )
32343240end
32353241
3236- def split_and_statements ( other ) , do: [ other ]
3242+ def do_split_statements ( other ) , do: [ other ]
32373243
32383244@ doc false
32393245def add_binding ( query , data , additional_bindings \\ 0 ) do