Package org.apache.calcite.rel
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
-
explain
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.The term-value pairs are generally gathered by calling
RelNode.explain(RelWriter)
. Each sub-class ofRelNode
callsinput(String, org.apache.calcite.rel.RelNode)
anditem(String, Object)
to declare term-value pairs.- Parameters:
rel
- Relational expressionvalueList
- List of term-value pairs
-
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.
-
-