Class SqlExplain

  • All Implemented Interfaces:

    public class SqlExplain
    extends SqlCall
    A SqlExplain is a node of a parse tree which represents an EXPLAIN PLAN statement.
    • Method Detail

      • setOperand

        public void setOperand​(int i,
                               SqlNode operand)
        Description copied from class: SqlCall
        Changes the value of an operand. Allows some rewrite by SqlValidator; use sparingly.
        setOperand in class SqlCall
        i - Operand index
        operand - Operand value
      • getExplicandum

        public SqlNode getExplicandum()
        the underlying SQL statement to be explained
      • getDetailLevel

        public SqlExplainLevel getDetailLevel()
        detail level to be generated
      • getDepth

        public SqlExplain.Depth getDepth()
        Returns the level of abstraction at which this plan should be displayed.
      • getDynamicParamCount

        public int getDynamicParamCount()
        the number of dynamic parameters in the statement
      • withImplementation

        public boolean withImplementation()
        whether physical plan implementation should be returned
      • withType

        public boolean withType()
        whether type should be returned
      • getFormat

        public SqlExplainFormat getFormat()
        Returns the desired output format.
      • isXml

        public boolean isXml()
        Returns whether result is to be in XML format.
      • isJson

        public boolean isJson()
        Returns whether result is to be in JSON format.
      • unparse

        public void unparse​(SqlWriter writer,
                            int leftPrec,
                            int rightPrec)
        Description copied from class: SqlNode
        Writes a SQL representation of this node to a writer.

        The leftPrec and rightPrec parameters give us enough context to decide whether we need to enclose the expression in parentheses. For example, we need parentheses around "2 + 3" if preceded by "5 *". This is because the precedence of the "*" operator is greater than the precedence of the "+" operator.

        The algorithm handles left- and right-associative operators by giving them slightly different left- and right-precedence.

        If SqlWriter.isAlwaysUseParentheses() is true, we use parentheses even when they are not required by the precedence rules.

        For the details of this algorithm, see SqlCall.unparse(org.apache.calcite.sql.SqlWriter, int, int).

        unparse in class SqlCall
        writer - Target writer
        leftPrec - The precedence of the SqlNode immediately preceding this node in a depth-first scan of the parse tree
        rightPrec - The precedence of the SqlNode immediately