Class DynamicWhereFilter
java.lang.Object
io.deephaven.util.referencecounting.ReferenceCounted
io.deephaven.engine.liveness.ReferenceCountedLivenessReferent
io.deephaven.engine.liveness.ReferenceCountedLivenessNode
io.deephaven.engine.liveness.LivenessArtifact
io.deephaven.engine.table.impl.select.WhereFilterLivenessArtifactImpl
io.deephaven.engine.table.impl.select.DynamicWhereFilter
- All Implemented Interfaces:
Expression
,Filter
,LogOutputAppendable
,LivenessManager
,LivenessNode
,LivenessReferent
,WhereFilter
,NotificationQueue.Dependency
,Serializable
public class DynamicWhereFilter
extends WhereFilterLivenessArtifactImpl
implements NotificationQueue.Dependency
A where filter that extracts a set of inclusion or exclusion keys from a set table.
Each time the set table ticks, the entire where filter is recalculated.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface io.deephaven.api.filter.Filter
Filter.Visitor<T>
Nested classes/interfaces inherited from interface io.deephaven.engine.table.impl.select.WhereFilter
WhereFilter.PreviousFilteringNotSupported, WhereFilter.RecomputeListener
-
Field Summary
Fields inherited from class io.deephaven.engine.table.impl.select.WhereFilterLivenessArtifactImpl
updateGraph
Fields inherited from interface io.deephaven.engine.table.impl.select.WhereFilter
ZERO_LENGTH_WHERE_FILTER_ARRAY
-
Constructor Summary
ConstructorDescriptionDynamicWhereFilter
(@NotNull QueryTable setTable, boolean inclusion, MatchPair... sourceToSetColumnNamePairs) -
Method Summary
Modifier and TypeMethodDescriptionbeginOperation
(@NotNull Table sourceTable) Perform any operation-level initialization necessary using theTable
that will be filtered with this WhereFilter, e.g.copy()
Create a copy of this WhereFilter.@NotNull WritableRowSet
Filter selection to only matching rows.Get the array columns required by this select filter.Get the columns required by this select filter.void
init
(@NotNull TableDefinition tableDefinition) Initialize this filter given the table definition.boolean
Is this filter refreshing?boolean
boolean
satisfied
(long step) Is this ancestor satisfied? Note that this method must be safe to call on any thread.void
Set theWhereFilter.RecomputeListener
that should be notified if results based on this WhereFilter must be recomputed.Methods inherited from class io.deephaven.engine.table.impl.select.WhereFilterLivenessArtifactImpl
isAutomatedFilter, setAutomatedFilter
Methods inherited from class io.deephaven.engine.liveness.LivenessArtifact
manageWithCurrentScope
Methods inherited from class io.deephaven.engine.liveness.ReferenceCountedLivenessNode
getWeakReference, initializeTransientFieldsForLiveness, onReferenceCountAtZero, tryManage, tryUnmanage, tryUnmanage
Methods inherited from class io.deephaven.engine.liveness.ReferenceCountedLivenessReferent
destroy, dropReference, tryRetainReference
Methods inherited from class io.deephaven.util.referencecounting.ReferenceCounted
decrementReferenceCount, forceReferenceCountToZero, getReferenceCountDebug, incrementReferenceCount, resetReferenceCount, toString, tryDecrementReferenceCount, tryIncrementReferenceCount
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface io.deephaven.engine.liveness.LivenessManager
manage
Methods inherited from interface io.deephaven.engine.liveness.LivenessNode
unmanage, unmanage
Methods inherited from interface io.deephaven.engine.liveness.LivenessReferent
dropReference, getReferentDescription, retainReference, tryRetainReference
Methods inherited from interface io.deephaven.engine.updategraph.NotificationQueue.Dependency
getUpdateGraph
Methods inherited from interface io.deephaven.engine.table.impl.select.WhereFilter
canMemoize, filter, filterInverse, init, invert, permitParallelization, validateSafeForRefresh, walk, walk
-
Constructor Details
-
DynamicWhereFilter
public DynamicWhereFilter(@NotNull @NotNull QueryTable setTable, boolean inclusion, MatchPair... sourceToSetColumnNamePairs)
-
-
Method Details
-
getUpdateGraph
- Specified by:
getUpdateGraph
in interfaceNotificationQueue.Dependency
- Returns:
- the update graph that this dependency is a part of
-
beginOperation
Perform any operation-level initialization necessary using theTable
that will be filtered with this WhereFilter, e.g. gatheringdata indexes
. This method will always be called exactly once, before gathering any dependencies or filtering data.If
sourceTable#isRefreshing()
, this method must only be invoked when it'ssafe
to initialize serial table operations.- Specified by:
beginOperation
in interfaceWhereFilter
- Parameters:
sourceTable
- TheTable
that will be filtered with this WhereFilter- Returns:
- A
SafeCloseable
that will beclosed
when the operation is complete, whether successful or not
-
getColumns
Description copied from interface:WhereFilter
Get the columns required by this select filter.This filter must already be initialized before calling this method.
- Specified by:
getColumns
in interfaceWhereFilter
- Returns:
- the columns used as input by this select filter.
-
getColumnArrays
Description copied from interface:WhereFilter
Get the array columns required by this select filter.This filter must already be initialized before calling this method.
- Specified by:
getColumnArrays
in interfaceWhereFilter
- Returns:
- the columns used as array input by this select filter.
-
init
Description copied from interface:WhereFilter
Initialize this filter given the table definition. If this filter has already been initialized, this should be a no-op, or optionally validate that the table definition is compatible with previous initialization.- Specified by:
init
in interfaceWhereFilter
- Parameters:
tableDefinition
- the definition of the table that will be filtered
-
filter
@NotNull public @NotNull WritableRowSet filter(@NotNull @NotNull RowSet selection, @NotNull @NotNull RowSet fullSet, @NotNull @NotNull Table table, boolean usePrev) Description copied from interface:WhereFilter
Filter selection to only matching rows.- Specified by:
filter
in interfaceWhereFilter
- Parameters:
selection
- the indices that should be filtered. The selection must be a subset of fullSet, and may include rows that the engine determines need not be evaluated to produce the result. Implementations may not mutate orclose
selection
.fullSet
- the complete RowSet of the table to filter. The fullSet is used for calculating variables like "i" or "ii". Implementations may not mutate orclose
fullSet
.table
- the table to filterusePrev
- true if previous values should be used. Implementing previous value filtering is optional, and aWhereFilter.PreviousFilteringNotSupported
exception may be thrown. If a PreviousFiltering exception is thrown, then the caller must acquire the PeriodicUpdateGraph lock.- Returns:
- The subset of selection accepted by this filter; ownership passes to the caller
-
isSimpleFilter
public boolean isSimpleFilter()- Specified by:
isSimpleFilter
in interfaceWhereFilter
- Returns:
- true if this is a filter that does not require any code execution, but rather is handled entirely within the database engine.
-
isRefreshing
public boolean isRefreshing()Description copied from interface:WhereFilter
Is this filter refreshing?- Specified by:
isRefreshing
in interfaceWhereFilter
- Returns:
- if this filter is refreshing
-
setRecomputeListener
Description copied from interface:WhereFilter
Set theWhereFilter.RecomputeListener
that should be notified if results based on this WhereFilter must be recomputed.- Specified by:
setRecomputeListener
in interfaceWhereFilter
- Parameters:
listener
- TheWhereFilter.RecomputeListener
to notify
-
copy
Description copied from interface:WhereFilter
Create a copy of this WhereFilter.- Specified by:
copy
in interfaceWhereFilter
- Returns:
- an independent copy of this WhereFilter.
-
satisfied
public boolean satisfied(long step) Description copied from interface:NotificationQueue.Dependency
Is this ancestor satisfied? Note that this method must be safe to call on any thread.- Specified by:
satisfied
in interfaceNotificationQueue.Dependency
- Parameters:
step
- The step for which we are testing satisfaction- Returns:
- Whether the dependency is satisfied on
step
(and will not fire subsequent notifications)
-
append
- Specified by:
append
in interfaceLogOutputAppendable
- Overrides:
append
in classReferenceCounted
-