Package org.apache.calcite.rel.rel2sql
Class SqlImplementor.Result
- java.lang.Object
-
- org.apache.calcite.rel.rel2sql.SqlImplementor.Result
-
- Enclosing class:
- SqlImplementor
public class SqlImplementor.Result extends java.lang.Object
Result of implementing a node.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<java.lang.String,RelDataType>
aliases
(package private) Expressions.FluentList<SqlImplementor.Clause>
clauses
private java.lang.String
neededAlias
private RelDataType
neededType
(package private) SqlNode
node
-
Constructor Summary
Constructors Constructor Description Result(SqlNode node, java.util.Collection<SqlImplementor.Clause> clauses, java.lang.String neededAlias, RelDataType neededType, java.util.Map<java.lang.String,RelDataType> aliases)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description SqlNode
asFrom()
Returns a node that can be included in the FROM clause or a JOIN.SqlNode
asQueryOrValues()
Converts a non-query node into a SELECT node.SqlSelect
asSelect()
Converts a non-query node into a SELECT node.SqlNode
asStatement()
Converts a non-query node into a SELECT node.SqlImplementor.Builder
builder(RelNode rel, SqlImplementor.Clause... clauses)
Once you have a Result of implementing a child relational expression, call this method to create a Builder to implement the current relational expression by adding additional clauses to the SQL query.private boolean
hasNestedAggregations(LogicalAggregate rel)
SqlImplementor.Clause
maxClause()
SqlImplementor.Context
qualifiedContext()
Returns a context that always qualifies identifiers.SqlImplementor.Result
resetAlias()
In join, when the left and right nodes have been generated, update their alias with 'neededAlias' if not null.SqlSelect
subSelect()
-
-
-
Field Detail
-
node
final SqlNode node
-
neededAlias
private final java.lang.String neededAlias
-
neededType
private final RelDataType neededType
-
aliases
private final java.util.Map<java.lang.String,RelDataType> aliases
-
clauses
final Expressions.FluentList<SqlImplementor.Clause> clauses
-
-
Constructor Detail
-
Result
public Result(SqlNode node, java.util.Collection<SqlImplementor.Clause> clauses, java.lang.String neededAlias, RelDataType neededType, java.util.Map<java.lang.String,RelDataType> aliases)
-
-
Method Detail
-
builder
public SqlImplementor.Builder builder(RelNode rel, SqlImplementor.Clause... clauses)
Once you have a Result of implementing a child relational expression, call this method to create a Builder to implement the current relational expression by adding additional clauses to the SQL query.You need to declare which clauses you intend to add. If the clauses are "later", you can add to the same query. For example, "GROUP BY" comes after "WHERE". But if they are the same or earlier, this method will start a new SELECT that wraps the previous result.
When you have called
SqlImplementor.Builder.setSelect(SqlNodeList)
,SqlImplementor.Builder.setWhere(SqlNode)
etc. callSqlImplementor.result(SqlNode, Collection, RelNode, Map)
to fix the new query.- Parameters:
rel
- Relational expression being implementedclauses
- Clauses that will be generated to implement current relational expression- Returns:
- A builder
-
hasNestedAggregations
private boolean hasNestedAggregations(LogicalAggregate rel)
-
maxClause
public SqlImplementor.Clause maxClause()
-
asFrom
public SqlNode asFrom()
Returns a node that can be included in the FROM clause or a JOIN. It has an alias that is unique within the query. The alias is implicit if it can be derived using the usual rules (For example, "SELECT * FROM emp" is equivalent to "SELECT * FROM emp AS emp".)
-
subSelect
public SqlSelect subSelect()
-
asSelect
public SqlSelect asSelect()
Converts a non-query node into a SELECT node. Set operators (UNION, INTERSECT, EXCEPT) remain as is.
-
asStatement
public SqlNode asStatement()
Converts a non-query node into a SELECT node. Set operators (UNION, INTERSECT, EXCEPT) and DML operators (INSERT, UPDATE, DELETE, MERGE) remain as is.
-
asQueryOrValues
public SqlNode asQueryOrValues()
Converts a non-query node into a SELECT node. Set operators (UNION, INTERSECT, EXCEPT) and VALUES remain as is.
-
qualifiedContext
public SqlImplementor.Context qualifiedContext()
Returns a context that always qualifies identifiers. Useful if the Context deals with just one arm of a join, yet we wish to generate a join condition that qualifies column names to disambiguate them.
-
resetAlias
public SqlImplementor.Result resetAlias()
In join, when the left and right nodes have been generated, update their alias with 'neededAlias' if not null.
-
-