Class BaseTable<IMPL_TYPE extends BaseTable<IMPL_TYPE>>
- All Implemented Interfaces:
TableOperations<Table,,Table> TableOperationsDefaults<Table,,Table> LogOutputAppendable,LivenessManager,LivenessNode,LivenessReferent,AttributeMap<Table>,GridAttributes<Table>,HasParentPerformanceIds,NotificationStepReceiver,NotificationStepSource,TableDefaults,Table,DynamicNode,NotificationQueue.Dependency,SystemicObject<Table>,LongSizedDataStructure,Serializable
- Direct Known Subclasses:
QueryTable,UncoalescedTable
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumstatic classSimplest appropriate InstrumentedShiftAwareListener implementation for BaseTable and descendants.static classSimplest appropriate legacy ShiftObliviousInstrumentedListener implementation for BaseTable and descendants.static interface -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final TableDefinitionThis table's definition.static final booleanprotected final UpdateGraphThis table's update graph.static final booleanFields inherited from interface io.deephaven.engine.table.GridAttributes
COLUMN_DESCRIPTIONS_ATTRIBUTE, DESCRIPTION_ATTRIBUTE, LAYOUT_HINTS_ATTRIBUTE, SORTABLE_COLUMNS_ATTRIBUTEFields inherited from interface io.deephaven.engine.table.impl.NotificationStepReceiver
NULL_NOTIFICATION_STEPFields inherited from interface io.deephaven.engine.table.Table
ADD_ONLY_TABLE_ATTRIBUTE, AGGREGATION_ROW_LOOKUP_ATTRIBUTE, APPEND_ONLY_TABLE_ATTRIBUTE, BARRAGE_PERFORMANCE_KEY_ATTRIBUTE, BARRAGE_SCHEMA_ATTRIBUTE, BLINK_TABLE_ATTRIBUTE, FILTERABLE_COLUMNS_ATTRIBUTE, INITIALLY_EMPTY_COALESCED_SOURCE_TABLE_ATTRIBUTE, INPUT_TABLE_ATTRIBUTE, KEY_COLUMNS_ATTRIBUTE, MERGED_TABLE_ATTRIBUTE, NON_DISPLAY_TABLE, PLUGIN_NAME, PREVIEW_PARENT_TABLE, SNAPSHOT_VIEWPORT_TYPE, SORT_REVERSE_LOOKUP_ATTRIBUTE, SORT_ROW_REDIRECTION_ATTRIBUTE, SORTED_COLUMNS_ATTRIBUTE, SYSTEMIC_TABLE_ATTRIBUTE, TEST_SOURCE_TABLE_ATTRIBUTE, TOTALS_TABLE_ATTRIBUTE, UNIQUE_KEYS_ATTRIBUTEFields inherited from interface io.deephaven.engine.table.impl.TableDefaults
ZERO_LENGTH_TABLE_ARRAYFields inherited from interface io.deephaven.api.TableOperations
AGG_BY_PRESERVE_EMPTY_DEFAULTFields inherited from interface io.deephaven.api.TableOperationsDefaults
ZERO_LENGTH_COLUMNNAME_ARRAY, ZERO_LENGTH_FILTER_ARRAY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal voidaddParentReference(@NotNull Object parent) Called on a dependent node to ensure that a strong reference is maintained to any parent object that is required for the proper maintenance and functioning of the dependent.voidaddUpdateListener(@NotNull TableUpdateListener listener) Subscribe for updates to this table.booleanaddUpdateListener(@NotNull TableUpdateListener listener, long requiredLastNotificationStep) Subscribe for updates to this table if its last notification step matchesrequiredLastNotificationStep.voidaddUpdateListener(ShiftObliviousListener listener, boolean replayInitialImage) Subscribe for updates to this table.voidWait for updates to this Table.booleanawaitUpdate(long timeout) Wait for updates to this Table.final voidcheckAvailableColumns(@NotNull Collection<String> columns) Check this grid to ensure that allcolumnsare present.voidcopyAttributes(BaseTable<?> dest, BaseTable.CopyAttributeOperation copyType) Copy this table's attributes to the specified table.voidcopyAttributes(BaseTable<?> dest, Predicate<String> shouldCopy) Copy this table's attributes to the specified table.voidcopySortableColumns(@NotNull BaseGridAttributes<?, ?> destination, @NotNull Predicate<String> shouldCopy) <T extends OperationSnapshotControl>
TIf we are a refreshing table, then we should create a snapshot control to validate the snapshot.protected voiddestroy()Attempt to release (destructively when necessary) resources held by this object.longGet the last logical clock step on which this element dispatched a notification.protected NotificationQueueGet the notification queue to insert notifications into as they are generated by listeners duringnotifyListeners(io.deephaven.engine.rowset.RowSet, io.deephaven.engine.rowset.RowSet, io.deephaven.engine.rowset.RowSet)andnotifyListenersOnError(Throwable, TableListener.Entry).booleanstatic voidinitializeWithSnapshot(@NotNull String logPrefix, ConstructSnapshot.SnapshotControl snapshotControl, ConstructSnapshot.SnapshotFunction snapshotFunction) booleanReturns true if this table is static, or has an attribute asserting that no modifies, shifts, or removals are generated.booleanReturns true if this table is append-only, or has an attribute asserting that no modifies, shifts, or removals are generated and that all new rows are added to the end of the table.booleanisBlink()Returns true if this table is a blink table.booleanisFailed()final booleanIs the node updating?booleanReturns true if this is a systemically important object (seeSystemicObjectTracker).Mark this object as systemically important.final voidnotifyListeners(RowSet added, RowSet removed, RowSet modified) Initiate update delivery to this table's listeners by enqueueing update notifications.final voidnotifyListeners(TableUpdate update) Initiate update delivery to this table's listeners by enqueueing update notifications.final voidnotifyListenersOnError(Throwable e, TableListener.Entry sourceEntry) Initiate failure delivery to this table's listeners by enqueueing error notifications.Get a LongStream ofPerformanceEntryidentifiersfor this table.If this table is a blink table, i.e.voidremoveUpdateListener(ShiftObliviousListener listenerToRemove) Unsubscribe the supplied listener.voidremoveUpdateListener(TableUpdateListener listenerToRemove) Unsubscribe the supplied listener.booleansatisfied(long step) Is this ancestor satisfied? Note that this method must be safe to call on any thread.voidsetLastNotificationStep(long lastNotificationStep) Deliver a last notification step to this receiver.final booleansetRefreshing(boolean refreshing) Change the node's run mode.setTotalsTable(String directive) Set a totals table for this Table.static booleanshouldCopyAttribute(String attrName, BaseTable.CopyAttributeOperation copyType) toString()Set the table's key columns.withUniqueKeys(String... columns) Set the table's key columns and indicate that each key set will be unique.Methods inherited from class io.deephaven.engine.table.impl.BaseGridAttributes
clearSortingRestrictions, getSortableColumns, restrictSortTo, setColumnDescriptions, setLayoutHints, setSortableColumns, withColumnDescription, withColumnDescriptions, withDescriptionMethods inherited from class io.deephaven.engine.table.impl.LiveAttributeMap
copy, copyAttributes, getAttribute, getAttributeKeys, getAttributes, getAttributes, hasAttribute, prepareReturnCopy, prepareReturnThis, published, retainingAttributes, setAttribute, setAttribute, withAttributes, withAttributes, withoutAttributesMethods inherited from class io.deephaven.engine.liveness.LivenessArtifact
manageWithCurrentScopeMethods inherited from class io.deephaven.engine.liveness.ReferenceCountedLivenessNode
getWeakReference, initializeTransientFieldsForLiveness, onReferenceCountAtZero, tryManage, tryUnmanage, tryUnmanageMethods inherited from class io.deephaven.engine.liveness.ReferenceCountedLivenessReferent
dropReference, tryRetainReferenceMethods inherited from class io.deephaven.util.referencecounting.ReferenceCounted
decrementReferenceCount, forceReferenceCountToZero, getReferenceCountDebug, incrementReferenceCount, resetReferenceCount, tryDecrementReferenceCount, tryIncrementReferenceCountMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface io.deephaven.engine.table.AttributeMap
getAttribute, getAttributeKeys, getAttributes, getAttributes, hasAttribute, retainingAttributes, withAttributes, withAttributes, withoutAttributesMethods inherited from interface io.deephaven.engine.table.GridAttributes
clearSortingRestrictions, restrictSortTo, setLayoutHints, withColumnDescription, withColumnDescriptions, withDescriptionMethods inherited from interface io.deephaven.engine.liveness.LivenessManager
manage, tryManage, tryUnmanage, tryUnmanage, unmanage, unmanageMethods inherited from interface io.deephaven.engine.liveness.LivenessReferent
dropReference, getReferentDescription, getWeakReference, retainReference, tryRetainReferenceMethods inherited from interface io.deephaven.util.datastructures.LongSizedDataStructure
intSize, intSize, sizeMethods inherited from interface io.deephaven.engine.updategraph.NotificationQueue.Dependency
getUpdateGraphMethods inherited from interface io.deephaven.engine.table.impl.NotificationStepReceiver
initializeLastNotificationStepMethods inherited from interface io.deephaven.engine.table.Table
apply, byteColumnIterator, characterColumnIterator, columnIterator, doubleColumnIterator, flatten, floatColumnIterator, getColumnSource, getColumnSourceMap, getColumnSources, getRowSet, getSubTable, headBy, headPct, integerColumnIterator, isFlat, longColumnIterator, moveColumns, objectColumnIterator, objectColumnIterator, partitionBy, partitionedAggBy, renameColumns, rollup, shortColumnIterator, slicePct, tailBy, tailPct, tree, wouldMatchMethods inherited from interface io.deephaven.engine.table.impl.TableDefaults
addUpdateListener, applyToAllBy, applyToAllBy, applyToAllBy, close, coalesce, dropColumnFormats, formatColumns, formatColumnWhere, formatRowWhere, getColumnSource, getColumnSource, hasColumns, hasColumns, headBy, isEmpty, join, meta, moveColumnsDown, moveColumnsUp, numColumns, partitionBy, releaseCachedResources, renameAllColumns, renameColumns, rollup, rollup, rollup, rollup, rollup, selectDistinct, sizeForInstrumentation, snapshotWhen, snapshotWhen, tailBy, wouldMatchMethods inherited from interface io.deephaven.api.TableOperations
aggAllBy, aggBy, asOfJoin, dropColumns, exactJoin, head, join, lazyUpdate, naturalJoin, rangeJoin, reverse, select, selectDistinct, slice, snapshot, snapshotWhen, sort, tail, ungroup, update, updateBy, updateView, view, where, whereIn, whereNotInMethods inherited from interface io.deephaven.api.TableOperationsDefaults
absSumBy, absSumBy, absSumBy, absSumBy, aggAllBy, aggAllBy, aggAllBy, aggBy, aggBy, aggBy, aggBy, aggBy, aggBy, aggBy, aj, aj, avgBy, avgBy, avgBy, avgBy, countBy, countBy, countBy, countBy, dropColumns, dropColumns, exactJoin, exactJoin, firstBy, firstBy, firstBy, firstBy, groupBy, groupBy, groupBy, join, join, join, lastBy, lastBy, lastBy, lastBy, lazyUpdate, maxBy, maxBy, maxBy, maxBy, medianBy, medianBy, medianBy, medianBy, minBy, minBy, minBy, minBy, naturalJoin, naturalJoin, naturalJoin, naturalJoin, naturalJoin, raj, raj, rangeJoin, select, select, selectDistinct, sort, sortDescending, stdBy, stdBy, stdBy, stdBy, sumBy, sumBy, sumBy, sumBy, ungroup, ungroup, ungroup, ungroup, update, updateBy, updateBy, updateBy, updateBy, updateBy, updateBy, updateBy, updateBy, updateView, varBy, varBy, varBy, varBy, view, wavgBy, wavgBy, wavgBy, wavgBy, where, whereIn, whereNotIn, wsumBy, wsumBy, wsumBy, wsumBy
-
Field Details
-
VALIDATE_UPDATE_OVERLAPS
public static final boolean VALIDATE_UPDATE_OVERLAPS -
PRINT_SERIALIZED_UPDATE_OVERLAPS
public static final boolean PRINT_SERIALIZED_UPDATE_OVERLAPS -
definition
This table's definition. -
updateGraph
This table's update graph.
-
-
Constructor Details
-
BaseTable
public BaseTable(@NotNull @NotNull TableDefinition definition, @NotNull @NotNull String description, @Nullable @Nullable Map<String, Object> attributes) - Parameters:
definition- The definition for this tabledescription- A description of this tableattributes- The attributes map to use, or elsenullto allocate a new one
-
-
Method Details
-
getDefinition
- Specified by:
getDefinitionin interfaceTable
-
getDescription
- Specified by:
getDescriptionin interfaceTable
-
getUpdateGraph
- Specified by:
getUpdateGraphin interfaceNotificationQueue.Dependency- Returns:
- the update graph that this dependency is a part of
-
toString
- Overrides:
toStringin classReferenceCounted
-
append
- Specified by:
appendin interfaceLogOutputAppendable- Overrides:
appendin classReferenceCounted
-
shouldCopyAttribute
public static boolean shouldCopyAttribute(String attrName, BaseTable.CopyAttributeOperation copyType) -
copyAttributes
Copy this table's attributes to the specified table. Attributes will be copied based upon the inputBaseTable.CopyAttributeOperation.- Parameters:
dest- The table to copy attributes tocopyType- The operation being performed that requires attributes to be copied.
-
copyAttributes
Copy this table's attributes to the specified table. Attributes are copied based on a predicate.- Parameters:
dest- The table to copy attributes toshouldCopy- should we copy this attribute?
-
isAddOnly
public boolean isAddOnly()Returns true if this table is static, or has an attribute asserting that no modifies, shifts, or removals are generated.- Returns:
- true if this table does not produce modifications, shifts, or removals
-
isAppendOnly
public boolean isAppendOnly()Returns true if this table is append-only, or has an attribute asserting that no modifies, shifts, or removals are generated and that all new rows are added to the end of the table.- Returns:
- true if this table may only append rows at the end of the table
-
isBlink
public boolean isBlink()Returns true if this table is a blink table.- Returns:
- Whether this table is a blink table
- See Also:
-
removeBlink
Description copied from interface:TableIf this table is a blink table, i.e. it hasTable.BLINK_TABLE_ATTRIBUTEset totrue, return a child without the attribute, restoring standard semantics for aggregation operations.Removing the
blink attributedoes not change the underlying update pattern of the table. On each cycle, all existing rows are removed. When used with an aggregation this has the effect of providing the aggregated values for only this cycle, because aggregating the result table will no longer apply special blink semantics.Some aggregations (in particular
TableOperations.groupBy()andTable.partitionBy(boolean, java.lang.String...)cannot provide the desired blink table aggregation semantics because doing so would require storing the entire stream of blink updates in memory. If that behavior is desired, useblinkToAppendOnly. If on the other hand, you would like to group or partition only values from the current update, remove the blink attribute with this method.To add the blink attribute to a table that generates updates consistent with blink semantics, use
Table.assertBlink().- Specified by:
removeBlinkin interfaceTable- Returns:
- A non-blink child table, or this table if it is not a blink table
-
assertBlink
Description copied from interface:TableReturnsthisor a child Table withTable.BLINK_TABLE_ATTRIBUTEset totrue.This table must already produce an update pattern that conforms to blink semantics. If it produces an update that does not conform to blink semantics, then the returned table will notify of an error and cease updating.
- Specified by:
assertBlinkin interfaceTable- Returns:
- A child table with the blink attribute set, or this table if already a blink table.
-
assertAddOnly
Description copied from interface:TableReturnsthisor a child Table withTable.ADD_ONLY_TABLE_ATTRIBUTEset totrue.This table must already produce an update pattern that conforms to add-only semantics. If it produces an update that does not conform to add-only semantics, then the returned table will notify of an error and cease updating.
If the engine can identify a table as add only, then some query operations may be optimized (for example, a lastBy operation need only track the current last row per-group rather than all of the rows in a group). In formulas, the
kvariable (for the current row key) can be used safely.- Specified by:
assertAddOnlyin interfaceTable- Returns:
- A child table with the add-only attribute set, or this table if the attribute is already set.
-
assertAppendOnly
Description copied from interface:TableReturnsthisor a child Table withTable.APPEND_ONLY_TABLE_ATTRIBUTEset totrue.This table must already produce an update pattern that conforms to append-only semantics. If it produces an update that does not conform to append-only semantics, then the returned table will notify of an error and cease updating.
If the engine can identify a table as append only, then some query operations may be optimized (for example, a lastBy operation need only track the current last row per-group rather than all of the rows in a group). In formulas, the
i(for the current row position),ii(for the current row position), andk(for the current row key) variables can be used safely.- Specified by:
assertAppendOnlyin interfaceTable- Returns:
- A child table with the append-only attribute set, or this table if the attribute is already set.
-
addParentReference
Description copied from interface:DynamicNodeCalled on a dependent node to ensure that a strong reference is maintained to any parent object that is required for the proper maintenance and functioning of the dependent. In the most common case, the parent object is a child listener to a parent node. The parent node only keeps a weak reference to its child listener, but the listener maintains a strong reference to the parent node. In this scenario, the only strong reference to the listener (and thus indirectly to the parent node itself) is the reference kept by the dependent node.- Specified by:
addParentReferencein interfaceDynamicNode- Parameters:
parent- A parent of this node
-
satisfied
public boolean satisfied(long step) Description copied from interface:NotificationQueue.DependencyIs this ancestor satisfied? Note that this method must be safe to call on any thread.- Specified by:
satisfiedin 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)
-
awaitUpdate
Description copied from interface:TableWait for updates to this Table. Should not be invoked from a
TableListeneror othernotificationon this Table'supdate graph. It may be suitable to wait from another update graph if doing so does not introduce any cycles.In some implementations, this call may also terminate in case of interrupt or spurious wakeup.
- Specified by:
awaitUpdatein interfaceTable- Throws:
InterruptedException- In the event this thread is interrupted- See Also:
-
awaitUpdate
Description copied from interface:TableWait for updates to this Table. Should not be invoked from a
TableListeneror othernotificationon this Table'supdate graph. It may be suitable to wait from another update graph if doing so does not introduce any cycles.In some implementations, this call may also terminate in case of interrupt or spurious wakeup.
- Specified by:
awaitUpdatein interfaceTable- Parameters:
timeout- The maximum time to wait in milliseconds.- Returns:
- false if the timeout elapses without notification, true otherwise.
- Throws:
InterruptedException- In the event this thread is interrupted- See Also:
-
addUpdateListener
Description copied from interface:TableSubscribe for updates to this table. After the optional initial image,listenerwill be invoked via theNotificationQueueassociated with this Table.- Specified by:
addUpdateListenerin interfaceTable- Parameters:
listener- listener for updatesreplayInitialImage- true to process updates for all initial rows in the table plus all changes; false to only process changes
-
addUpdateListener
Description copied from interface:TableSubscribe for updates to this table.listenerwill be invoked via theNotificationQueueassociated with this Table.- Specified by:
addUpdateListenerin interfaceTable- Parameters:
listener- listener for updates
-
addUpdateListener
public boolean addUpdateListener(@NotNull @NotNull TableUpdateListener listener, long requiredLastNotificationStep) Description copied from interface:TableSubscribe for updates to this table if its last notification step matchesrequiredLastNotificationStep.listenerwill be invoked via theNotificationQueueassociated with this Table.- Specified by:
addUpdateListenerin interfaceTable- Parameters:
listener- listener for updatesrequiredLastNotificationStep- the expected last notification step to match- Returns:
- true if the listener was added, false if the last notification step requirement was not met
-
removeUpdateListener
Description copied from interface:TableUnsubscribe the supplied listener.- Specified by:
removeUpdateListenerin interfaceTable- Parameters:
listenerToRemove- listener for updates
-
removeUpdateListener
Description copied from interface:TableUnsubscribe the supplied listener.- Specified by:
removeUpdateListenerin interfaceTable- Parameters:
listenerToRemove- listener for updates
-
isRefreshing
public final boolean isRefreshing()Description copied from interface:DynamicNodeIs the node updating?- Specified by:
isRefreshingin interfaceDynamicNode- Specified by:
isRefreshingin interfaceTable- Returns:
- true if the node is updating; false otherwise.
-
setRefreshing
public final boolean setRefreshing(boolean refreshing) Description copied from interface:DynamicNodeChange the node's run mode.- Specified by:
setRefreshingin interfaceDynamicNode- Parameters:
refreshing- true to cause the node to update; false otherwise.- Returns:
- new refreshing state
-
isFailed
public boolean isFailed() -
hasListeners
public boolean hasListeners() -
notifyListeners
Initiate update delivery to this table's listeners by enqueueing update notifications.- Parameters:
added- Row keys added to the tableremoved- Row keys removed from the tablemodified- Row keys modified in the table
-
notifyListeners
Initiate update delivery to this table's listeners by enqueueing update notifications.- Parameters:
update- The set of table changes to propagate. The caller gives this update object away; the invocation ofnotifyListenerstakes ownership, and will callreleaseon it once it is not used anymore; callers should pass acopyfor updates they intend to further use.
-
notifyListenersOnError
Initiate failure delivery to this table's listeners by enqueueing error notifications.- Parameters:
e- errorsourceEntry- performance tracking
-
getNotificationQueue
Get the notification queue to insert notifications into as they are generated by listeners duringnotifyListeners(io.deephaven.engine.rowset.RowSet, io.deephaven.engine.rowset.RowSet, io.deephaven.engine.rowset.RowSet)andnotifyListenersOnError(Throwable, TableListener.Entry). This method may be overridden to provide a different notification queue than the table'sPeriodicUpdateGraphinstance for more complex behavior.- Returns:
- The
NotificationQueueto add to
-
getLastNotificationStep
public long getLastNotificationStep()Description copied from interface:NotificationStepSourceGet the last logical clock step on which this element dispatched a notification.- Specified by:
getLastNotificationStepin interfaceNotificationStepSource- Returns:
- The last notification step
-
setLastNotificationStep
public void setLastNotificationStep(long lastNotificationStep) Description copied from interface:NotificationStepReceiverDeliver a last notification step to this receiver.- Specified by:
setLastNotificationStepin interfaceNotificationStepReceiver- Parameters:
lastNotificationStep- The last notification step to be delivered
-
isSystemicObject
public boolean isSystemicObject()Description copied from interface:SystemicObjectReturns true if this is a systemically important object (seeSystemicObjectTracker).- Specified by:
isSystemicObjectin interfaceSystemicObject<IMPL_TYPE extends BaseTable<IMPL_TYPE>>- Returns:
- true if this is a systemically important object, false otherwise.
-
markSystemic
Description copied from interface:SystemicObjectMark this object as systemically important.- Specified by:
markSystemicin interfaceSystemicObject<IMPL_TYPE extends BaseTable<IMPL_TYPE>>
-
withKeys
Description copied from interface:TableSet the table's key columns. -
withUniqueKeys
Description copied from interface:TableSet the table's key columns and indicate that each key set will be unique.- Specified by:
withUniqueKeysin interfaceTable- Returns:
- A copy of this table with the unique key columns specified, or this if no change was needed
-
checkAvailableColumns
Description copied from class:BaseGridAttributesCheck this grid to ensure that allcolumnsare present.- Specified by:
checkAvailableColumnsin classBaseGridAttributes<Table,IMPL_TYPE extends BaseTable<IMPL_TYPE>> - Parameters:
columns- The column names to check
-
copySortableColumns
public void copySortableColumns(@NotNull @NotNull BaseGridAttributes<?, ?> destination, @NotNull @NotNull Predicate<String> shouldCopy) -
setTotalsTable
Description copied from interface:TableSet a totals table for this Table.- Specified by:
setTotalsTablein interfaceTable- Parameters:
directive- A packed string of totals table instructions- Returns:
- A copy of this Table with the
totals table attributeset
-
initializeWithSnapshot
public static void initializeWithSnapshot(@NotNull @NotNull String logPrefix, @Nullable ConstructSnapshot.SnapshotControl snapshotControl, @NotNull ConstructSnapshot.SnapshotFunction snapshotFunction) -
createSnapshotControlIfRefreshing
@Nullable public <T extends OperationSnapshotControl> T createSnapshotControlIfRefreshing(BaseTable.SnapshotControlFactory<T> factory) If we are a refreshing table, then we should create a snapshot control to validate the snapshot.Otherwise, we return null.
- Returns:
- a snapshot control to snapshot this table (or null)
-
destroy
@OverridingMethodsMustInvokeSuper protected void destroy()Description copied from class:ReferenceCountedLivenessReferentAttempt to release (destructively when necessary) resources held by this object. This may render the object unusable for subsequent operations. Implementations should be sure to call super.destroy().This is intended to only ever be used as a side effect of decreasing the reference count to 0.
- Overrides:
destroyin classReferenceCountedLivenessReferent
-
parentPerformanceEntryIds
Get a LongStream ofPerformanceEntryidentifiersfor this table.- Specified by:
parentPerformanceEntryIdsin interfaceHasParentPerformanceIds- Returns:
- a stream of performance entry ids
-