Package org.apache.calcite.sql
Class SqlExplain
- java.lang.Object
-
- org.apache.calcite.sql.SqlNode
-
- org.apache.calcite.sql.SqlCall
-
- org.apache.calcite.sql.SqlExplain
-
- All Implemented Interfaces:
java.lang.Cloneable
public class SqlExplain extends SqlCall
ASqlExplain
is a node of a parse tree which represents an EXPLAIN PLAN statement.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SqlExplain.Depth
The level of abstraction with which to display the plan.
-
Field Summary
Fields Modifier and Type Field Description (package private) SqlLiteral
depth
(package private) SqlLiteral
detailLevel
private int
dynamicParameterCount
(package private) SqlNode
explicandum
(package private) SqlLiteral
format
static SqlSpecialOperator
OPERATOR
-
Fields inherited from class org.apache.calcite.sql.SqlNode
EMPTY_ARRAY, pos
-
-
Constructor Summary
Constructors Constructor Description SqlExplain(SqlParserPos pos, SqlNode explicandum, SqlLiteral detailLevel, SqlLiteral depth, SqlLiteral format, int dynamicParameterCount)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description SqlExplain.Depth
getDepth()
Returns the level of abstraction at which this plan should be displayed.SqlExplainLevel
getDetailLevel()
int
getDynamicParamCount()
SqlNode
getExplicandum()
SqlExplainFormat
getFormat()
Returns the desired output format.SqlKind
getKind()
Returns the type of node this is, orSqlKind.OTHER
if it's nothing special.java.util.List<SqlNode>
getOperandList()
SqlOperator
getOperator()
boolean
isJson()
Returns whether result is to be in JSON format.boolean
isXml()
Deprecated.UsegetFormat()
void
setOperand(int i, SqlNode operand)
Changes the value of an operand.void
unparse(SqlWriter writer, int leftPrec, int rightPrec)
Writes a SQL representation of this node to a writer.boolean
withImplementation()
boolean
withType()
-
Methods inherited from class org.apache.calcite.sql.SqlCall
accept, clone, equalsDeep, findValidOptions, getCallSignature, getFunctionQuantifier, getMonotonicity, isCountStar, isExpanded, operand, operandCount, validate
-
Methods inherited from class org.apache.calcite.sql.SqlNode
clone, clone, cloneArray, equalDeep, equalDeep, equalsDeep, getParserPosition, isA, toSqlString, toSqlString, toString, validateExpr
-
-
-
-
Field Detail
-
OPERATOR
public static final SqlSpecialOperator OPERATOR
-
explicandum
SqlNode explicandum
-
detailLevel
SqlLiteral detailLevel
-
depth
SqlLiteral depth
-
format
SqlLiteral format
-
dynamicParameterCount
private final int dynamicParameterCount
-
-
Constructor Detail
-
SqlExplain
public SqlExplain(SqlParserPos pos, SqlNode explicandum, SqlLiteral detailLevel, SqlLiteral depth, SqlLiteral format, int dynamicParameterCount)
-
-
Method Detail
-
getKind
public SqlKind getKind()
Description copied from class:SqlNode
Returns the type of node this is, orSqlKind.OTHER
if it's nothing special.- Overrides:
getKind
in classSqlCall
- Returns:
- a
SqlKind
value, never null - See Also:
SqlNode.isA(java.util.Set<org.apache.calcite.sql.SqlKind>)
-
getOperator
public SqlOperator getOperator()
- Specified by:
getOperator
in classSqlCall
-
getOperandList
public java.util.List<SqlNode> getOperandList()
- Specified by:
getOperandList
in classSqlCall
-
setOperand
public void setOperand(int i, SqlNode operand)
Description copied from class:SqlCall
Changes the value of an operand. Allows some rewrite bySqlValidator
; use sparingly.- Overrides:
setOperand
in classSqlCall
- Parameters:
i
- Operand indexoperand
- Operand value
-
getExplicandum
public SqlNode getExplicandum()
- Returns:
- the underlying SQL statement to be explained
-
getDetailLevel
public SqlExplainLevel getDetailLevel()
- Returns:
- 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()
- Returns:
- the number of dynamic parameters in the statement
-
withImplementation
public boolean withImplementation()
- Returns:
- whether physical plan implementation should be returned
-
withType
public boolean withType()
- Returns:
- whether type should be returned
-
getFormat
public SqlExplainFormat getFormat()
Returns the desired output format.
-
isXml
@Deprecated public boolean isXml()
Deprecated.UsegetFormat()
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
andrightPrec
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)
.
-
-