Interface RelWriter

  • All Known Implementing Classes:
    RelJsonWriter, RelWriterImpl, RelXmlWriter

    public interface RelWriter
    Callback for an expression to dump itself to.

    It is used for generating EXPLAIN PLAN output, and also for serializing a tree of relational expressions to JSON.

    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      RelWriter done​(RelNode node)
      Writes the completed explanation.
      void explain​(RelNode rel, java.util.List<Pair<java.lang.String,​java.lang.Object>> valueList)
      Prints an explanation of a node, with a list of (term, value) pairs.
      SqlExplainLevel getDetailLevel()  
      RelWriter input​(java.lang.String term, RelNode input)
      Adds an input to the explanation of the current node.
      RelWriter item​(java.lang.String term, java.lang.Object value)
      Adds an attribute to the explanation of the current node.
      RelWriter itemIf​(java.lang.String term, java.lang.Object value, boolean condition)
      Adds an input to the explanation of the current node, if a condition holds.
      boolean nest()
      Returns whether the writer prefers nested values.
    • Method Detail

      • getDetailLevel

        SqlExplainLevel getDetailLevel()
        Returns:
        detail level at which plan should be generated
      • input

        RelWriter input​(java.lang.String term,
                        RelNode input)
        Adds an input to the explanation of the current node.
        Parameters:
        term - Term for input, e.g. "left" or "input #1".
        input - Input relational expression
      • item

        RelWriter item​(java.lang.String term,
                       java.lang.Object value)
        Adds an attribute to the explanation of the current node.
        Parameters:
        term - Term for attribute, e.g. "joinType"
        value - Attribute value
      • itemIf

        RelWriter itemIf​(java.lang.String term,
                         java.lang.Object value,
                         boolean condition)
        Adds an input to the explanation of the current node, if a condition holds.
      • nest

        boolean nest()
        Returns whether the writer prefers nested values. Traditional explain writers prefer flattened values.