fix: remove buggy global filter extraction

This commit is contained in:
Zach Daniel 2024-02-24 17:20:03 -05:00
parent 8fa10ac6ec
commit 7c3b60b942

View file

@ -753,8 +753,9 @@ defmodule AshPostgres.DataLayer do
end end
@impl true @impl true
def run_aggregate_query(original_query, aggregates, resource) do def run_aggregate_query(query, aggregates, resource) do
original_query = default_bindings(original_query, resource) query = default_bindings(query, resource)
original_query = query
{can_group, cant_group} = {can_group, cant_group} =
aggregates aggregates
@ -764,23 +765,6 @@ defmodule AshPostgres.DataLayer do
{can_group, cant_group} -> {can_group, cant_group} {can_group, cant_group} -> {can_group, cant_group}
end end
{global_filter, can_group} =
AshPostgres.Aggregate.extract_shared_filters(can_group)
query =
case global_filter do
{:ok, global_filter} ->
filter(original_query, global_filter, resource)
:error ->
{:ok, original_query}
end
case query do
{:error, error} ->
{:error, error}
{:ok, query} ->
query = query =
if query.distinct || query.limit do if query.distinct || query.limit do
query = query =
@ -828,7 +812,6 @@ defmodule AshPostgres.DataLayer do
{:ok, add_single_aggs(result, resource, original_query, cant_group)} {:ok, add_single_aggs(result, resource, original_query, cant_group)}
end end
end
defp add_single_aggs(result, resource, query, cant_group) do defp add_single_aggs(result, resource, query, cant_group) do
query = query =
@ -960,25 +943,8 @@ defmodule AshPostgres.DataLayer do
subquery = from(row in subquery(lateral_join_query), as: ^0, select: %{}) subquery = from(row in subquery(lateral_join_query), as: ^0, select: %{})
subquery = default_bindings(subquery, source_resource) subquery = default_bindings(subquery, source_resource)
{global_filter, can_group} =
AshPostgres.Aggregate.extract_shared_filters(can_group)
original_subquery = subquery original_subquery = subquery
subquery =
case global_filter do
{:ok, global_filter} ->
filter(subquery, global_filter, destination_resource)
:error ->
{:ok, subquery}
end
case subquery do
{:error, error} ->
{:error, error}
{:ok, subquery} ->
query = query =
Enum.reduce( Enum.reduce(
can_group, can_group,
@ -1020,7 +986,6 @@ defmodule AshPostgres.DataLayer do
end end
{:ok, add_single_aggs(result, source_resource, original_subquery, cant_group)} {:ok, add_single_aggs(result, source_resource, original_subquery, cant_group)}
end
{:error, error} -> {:error, error} ->
{:error, error} {:error, error}