mirror of
https://github.com/ash-project/ash.git
synced 2024-09-20 21:43:02 +12:00
fix: fix nested boolean expression optimization
This commit is contained in:
parent
9c685feeda
commit
2f8074ff88
2 changed files with 11 additions and 7 deletions
|
@ -720,6 +720,9 @@ defmodule Ash.Engine.Request do
|
||||||
request.changeset.data
|
request.changeset.data
|
||||||
|> Map.take(pkey)
|
|> Map.take(pkey)
|
||||||
|> Map.to_list()
|
|> Map.to_list()
|
||||||
|
|> IO.inspect()
|
||||||
|
|
||||||
|
IO.inspect(filter)
|
||||||
|
|
||||||
new_query =
|
new_query =
|
||||||
request.resource
|
request.resource
|
||||||
|
@ -728,6 +731,7 @@ defmodule Ash.Engine.Request do
|
||||||
|> Ash.Query.filter(^pkey)
|
|> Ash.Query.filter(^pkey)
|
||||||
|> Ash.Query.filter(^filter)
|
|> Ash.Query.filter(^filter)
|
||||||
|> Ash.Query.limit(1)
|
|> Ash.Query.limit(1)
|
||||||
|
|> IO.inspect()
|
||||||
|
|
||||||
new_query
|
new_query
|
||||||
|> Ash.Actions.Read.unpaginated_read()
|
|> Ash.Actions.Read.unpaginated_read()
|
||||||
|
|
|
@ -123,10 +123,10 @@ defmodule Ash.Query.BooleanExpression do
|
||||||
if MapSet.member?(mapset, value) do
|
if MapSet.member?(mapset, value) do
|
||||||
left_expr
|
left_expr
|
||||||
else
|
else
|
||||||
do_new(:or, left_expr, right)
|
do_new(:and, left_expr, right)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
do_new(:or, left_expr, right)
|
do_new(:and, left_expr, right)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ defmodule Ash.Query.BooleanExpression do
|
||||||
if can_optimize?(value) do
|
if can_optimize?(value) do
|
||||||
%{right_expr | right: MapSet.delete(mapset, value)}
|
%{right_expr | right: MapSet.delete(mapset, value)}
|
||||||
else
|
else
|
||||||
do_new(:or, left_op, right_expr)
|
do_new(:and, left_op, right_expr)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -232,10 +232,10 @@ defmodule Ash.Query.BooleanExpression do
|
||||||
do_new(op, left_expr, in_op)
|
do_new(op, left_expr, in_op)
|
||||||
else
|
else
|
||||||
{:left, _} ->
|
{:left, _} ->
|
||||||
%{left_expr | left: optimized_new(:or, left, in_op)}
|
%{left_expr | left: optimized_new(op, left, in_op)}
|
||||||
|
|
||||||
{:right, _} ->
|
{:right, _} ->
|
||||||
%{left_expr | right: optimized_new(:or, right, in_op)}
|
%{left_expr | right: optimized_new(op, right, in_op)}
|
||||||
end
|
end
|
||||||
|
|
||||||
%Eq{} = eq_op ->
|
%Eq{} = eq_op ->
|
||||||
|
@ -244,10 +244,10 @@ defmodule Ash.Query.BooleanExpression do
|
||||||
do_new(op, left_expr, eq_op)
|
do_new(op, left_expr, eq_op)
|
||||||
else
|
else
|
||||||
{:left, _} ->
|
{:left, _} ->
|
||||||
%{left_expr | left: optimized_new(:or, left, eq_op)}
|
%{left_expr | left: optimized_new(op, left, eq_op)}
|
||||||
|
|
||||||
{:right, _} ->
|
{:right, _} ->
|
||||||
%{left_expr | right: optimized_new(:or, right, eq_op)}
|
%{left_expr | right: optimized_new(op, right, eq_op)}
|
||||||
end
|
end
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
|
|
Loading…
Reference in a new issue