Class Snapshot

All Implemented Interfaces:
Cloneable, RelOptNode, RelNode
Direct Known Subclasses:

public abstract class Snapshot
extends SingleRel
Relational expression that returns the contents of a relation expression as it was at a given time in the past.

For example, if Products is a temporal table, and TableScan(Products) is a relational operator that returns all versions of the contents of the table, then Snapshot(TableScan(Products)) is a relational operator that only returns the contents whose versions that overlap with the given specific period (i.e. those that started before given period and ended after it).

  • Constructor Details

    • Snapshot

      protected Snapshot​(RelOptCluster cluster, RelTraitSet traitSet, RelNode input, RexNode period)
      Creates a Snapshot.
      cluster - Cluster that this relational expression belongs to
      traitSet - The traits of this relational expression
      input - Input relational expression
      period - Timestamp expression which as the table was at the given time in the past
  • Method Details

    • copy

      public final RelNode copy​(RelTraitSet traitSet, List<RelNode> inputs)
      Description copied from interface: RelNode
      Creates a copy of this relational expression, perhaps changing traits and inputs.

      Sub-classes with other important attributes are encouraged to create variants of this method with more parameters.

      Specified by:
      copy in interface RelNode
      copy in class AbstractRelNode
      traitSet - Trait set
      inputs - Inputs
      Copy of this relational expression, substituting traits and inputs
    • copy

      public abstract Snapshot copy​(RelTraitSet traitSet, RelNode input, RexNode period)
    • accept

      public RelNode accept​(RexShuttle shuttle)
      Description copied from interface: RelNode
      Accepts a visit from a shuttle. If the shuttle updates expression, then a copy of the relation should be created. This new relation might have a different row-type.
      Specified by:
      accept in interface RelNode
      accept in class AbstractRelNode
      shuttle - Shuttle
      A copy of this node incorporating changes made by the shuttle to this node's children
    • explainTerms

      public RelWriter explainTerms​(RelWriter pw)
      Description copied from class: AbstractRelNode
      Describes the inputs and attributes of this relational expression. Each node should call super.explainTerms, then call the RelWriter.input(String, RelNode) and RelWriterImpl.item(String, Object) methods for each input and attribute.
      explainTerms in class SingleRel
      pw - Plan writer
      Plan writer for fluent-explain pattern
    • getPeriod

      public RexNode getPeriod()
    • isValid

      public boolean isValid​(Litmus litmus, RelNode.Context context)
      Description copied from interface: RelNode
      Returns whether this relational expression is valid.

      If assertions are enabled, this method is typically called with litmus = THROW, as follows:

      assert rel.isValid(Litmus.THROW)

      This signals that the method can throw an AssertionError if it is not valid.

      Specified by:
      isValid in interface RelNode
      isValid in class AbstractRelNode
      litmus - What to do if invalid
      context - Context for validity checking
      Whether relational expression is valid