Skip to content

Commit 04523da

Browse files
committed
Optimise Filter by having reverse index per node
1 parent 459abb9 commit 04523da

File tree

16 files changed

+811
-915
lines changed

16 files changed

+811
-915
lines changed

packages/sync-service/lib/electric/shapes/consumer.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ defmodule Electric.Shapes.Consumer do
77
alias Electric.Shapes.Consumer.PlanExecutor
88
alias Electric.Shapes.Consumer.State
99
alias Electric.Shapes.DnfPlan
10-
alias Electric.Shapes.Filter.SubqueryIndex
10+
alias Electric.Shapes.Filter.Indexes.SubqueryIndex
1111

1212
import Electric.Shapes.Consumer.State, only: :macros
1313
require Electric.Replication.LogOffset

packages/sync-service/lib/electric/shapes/consumer/plan_executor.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule Electric.Shapes.Consumer.PlanExecutor do
66
alias Electric.Shapes.Consumer.Plan
77
alias Electric.Shapes.Consumer.Subqueries
88
alias Electric.Shapes.Consumer.Subqueries.QueryRow
9-
alias Electric.Shapes.Filter.SubqueryIndex
9+
alias Electric.Shapes.Filter.Indexes.SubqueryIndex
1010
alias Electric.LogItems
1111
alias Electric.Replication.LogOffset
1212
alias Electric.ShapeCache

packages/sync-service/lib/electric/shapes/filter.ex

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ defmodule Electric.Shapes.Filter do
2020
alias Electric.Replication.Changes.UpdatedRecord
2121
alias Electric.Shapes.DnfPlan
2222
alias Electric.Shapes.Filter
23-
alias Electric.Shapes.Filter.SubqueryIndex
23+
alias Electric.Shapes.Filter.Indexes.SubqueryIndex
2424
alias Electric.Shapes.Filter.WhereCondition
2525
alias Electric.Shapes.Shape
2626
alias Electric.Telemetry.OpenTelemetry
@@ -33,7 +33,6 @@ defmodule Electric.Shapes.Filter do
3333
:where_cond_table,
3434
:eq_index_table,
3535
:incl_index_table,
36-
:subquery_cond_table,
3736
:subquery_index
3837
]
3938

@@ -48,7 +47,6 @@ defmodule Electric.Shapes.Filter do
4847
where_cond_table: :ets.new(:filter_where, [:set, :private]),
4948
eq_index_table: :ets.new(:filter_eq, [:set, :private]),
5049
incl_index_table: :ets.new(:filter_incl, [:set, :private]),
51-
subquery_cond_table: :ets.new(:filter_subquery_cond, [:set, :private]),
5250
subquery_index: SubqueryIndex.new(Keyword.take(opts, [:stack_id]))
5351
}
5452
end

packages/sync-service/lib/electric/shapes/filter/index.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ defmodule Electric.Shapes.Filter.Index do
1010
alias Electric.Shapes.Filter
1111
alias Electric.Shapes.Filter.Indexes.EqualityIndex
1212
alias Electric.Shapes.Filter.Indexes.InclusionIndex
13-
alias Electric.Shapes.Filter.Indexes.SubqueryNode
13+
alias Electric.Shapes.Filter.Indexes.SubqueryIndex
1414

1515
defp module_for("="), do: EqualityIndex
1616
defp module_for("@>"), do: InclusionIndex
17-
defp module_for("subquery"), do: SubqueryNode
17+
defp module_for("subquery"), do: SubqueryIndex
1818

1919
# "in" delegates to EqualityIndex, registering the shape under each value
2020
def add_shape(%Filter{} = filter, where_cond_id, shape_id, %{operation: "in"} = optimisation) do

0 commit comments

Comments
 (0)