Class TableViews

  • All Implemented Interfaces:
    java.lang.Iterable<View>, java.util.Collection<View>

    public class TableViews
    extends java.util.AbstractCollection<View>
    Groups all the views for a given table.
    • Constructor Detail

      • TableViews

        public TableViews​(TableId id)
    • Method Detail

      • hasViews

        public boolean hasViews()
      • size

        public int size()
        Specified by:
        size in interface java.util.Collection<View>
        Specified by:
        size in class java.util.AbstractCollection<View>
      • iterator

        public java.util.Iterator<View> iterator()
        Specified by:
        iterator in interface java.util.Collection<View>
        Specified by:
        iterator in interface java.lang.Iterable<View>
        Specified by:
        iterator in class java.util.AbstractCollection<View>
      • contains

        public boolean contains​(java.lang.String viewName)
      • add

        public boolean add​(View view)
        Specified by:
        add in interface java.util.Collection<View>
        Overrides:
        add in class java.util.AbstractCollection<View>
      • build

        public void build()
      • stopBuild

        public void stopBuild()
      • dumpMemtables

        public void dumpMemtables()
      • truncateBlocking

        public void truncateBlocking​(CommitLogPosition replayAfter,
                                     long truncatedAt)
      • removeByName

        public void removeByName​(java.lang.String viewName)
      • pushViewReplicaUpdates

        public void pushViewReplicaUpdates​(PartitionUpdate update,
                                           boolean writeCommitLog,
                                           java.util.concurrent.atomic.AtomicLong baseComplete)
        Calculates and pushes updates to the views replicas. The replicas are determined by ViewUtils#getViewNaturalEndpoint(String, Token, Token).
        Parameters:
        update - an update on the base table represented by this object.
        writeCommitLog - whether we should write the commit log for the view updates.
        baseComplete - time from epoch in ms that the local base mutation was (or will be) completed
      • generateViewUpdates

        public java.util.Iterator<java.util.Collection<Mutation>> generateViewUpdates​(java.util.Collection<View> views,
                                                                                      UnfilteredRowIterator updates,
                                                                                      UnfilteredRowIterator existings,
                                                                                      long nowInSec,
                                                                                      boolean separateUpdates)
        Given some updates on the base table of this object and the existing values for the rows affected by that update, generates the mutation to be applied to the provided views.
        Parameters:
        views - the views potentially affected by updates.
        updates - the base table updates being applied.
        existings - the existing values for the rows affected by updates. This is used to decide if a view is obsoleted by the update and should be removed, gather the values for columns that may not be part of the update if a new view entry needs to be created, and compute the minimal updates to be applied if the view entry isn't changed but has simply some updated values. This will be empty for view building as we want to assume anything we'll pass to updates is new.
        nowInSec - the current time in seconds.
        separateUpdates - if false, mutation is per partition.
        Returns:
        the mutations to apply to the views. This can be empty.
      • updatedViews

        public java.util.Collection<View> updatedViews​(PartitionUpdate updates)
        Return the views that are potentially updated by the provided updates.
        Parameters:
        updates - the updates applied to the base table.
        Returns:
        the views affected by updates.