Package org.apache.calcite.rel.rel2sql
Class SqlImplementor
- java.lang.Object
-
- org.apache.calcite.rel.rel2sql.SqlImplementor
-
- Direct Known Subclasses:
RelToSqlConverter
public abstract class SqlImplementor extends java.lang.Object
State for generating a SQL statement.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
SqlImplementor.AliasContext
Implementation of Context that precedes field references with their "table alias" based on the current sub-query's FROM clause.protected class
SqlImplementor.BaseContext
Implementation ofSqlImplementor.Context
that has an enclosingSqlImplementor
and can therefore do non-trivial expressions.class
SqlImplementor.Builder
Builder.static class
SqlImplementor.Clause
Clauses in a SQL query.static class
SqlImplementor.Context
(package private) class
SqlImplementor.JoinContext
class
SqlImplementor.MatchRecognizeContext
Context for translating MATCH_RECOGNIZE clauseclass
SqlImplementor.Result
Result of implementing a node.static class
SqlImplementor.SimpleContext
Simple implementation ofSqlImplementor.Context
that cannot handle sub-queries or correlations.
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Set<java.lang.String>
aliasSet
protected java.util.Map<CorrelationId,SqlImplementor.Context>
correlTableMap
SqlDialect
dialect
protected java.util.Map<java.lang.String,SqlNode>
ordinalMap
static SqlParserPos
POS
-
Constructor Summary
Constructors Modifier Constructor Description protected
SqlImplementor(SqlDialect dialect)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
addSelect(java.util.List<SqlNode> selectList, SqlNode node, RelDataType rowType)
SqlImplementor.Context
aliasContext(java.util.Map<java.lang.String,RelDataType> aliases, boolean qualified)
private void
collectAliases(com.google.common.collect.ImmutableMap.Builder<java.lang.String,RelDataType> builder, SqlNode node, java.util.Iterator<RelDataType> aliases)
private static int
computeFieldCount(java.util.Map<java.lang.String,RelDataType> aliases)
static SqlNode
convertConditionToSqlNode(RexNode node, SqlImplementor.Context leftContext, SqlImplementor.Context rightContext, int leftFieldCount)
static boolean
isStar(java.util.List<RexNode> exps, RelDataType inputRowType, RelDataType projectRowType)
Returns whether a list of expressions projects all fields, in order, from the input, with the same names.static boolean
isStar(RexProgram program)
SqlImplementor.Context
joinContext(SqlImplementor.Context leftContext, SqlImplementor.Context rightContext)
static JoinType
joinType(JoinRelType joinType)
SqlImplementor.Context
matchRecognizeContext(SqlImplementor.Context context)
SqlImplementor.Result
result(SqlNode node, java.util.Collection<SqlImplementor.Clause> clauses, RelNode rel, java.util.Map<java.lang.String,RelDataType> aliases)
Creates a result based on a single relational expression.SqlImplementor.Result
result(SqlNode join, SqlImplementor.Result leftResult, SqlImplementor.Result rightResult)
Creates a result based on a join.private static SqlOperator
reverseOperatorDirection(SqlOperator op)
SqlImplementor.Result
setOpToSql(SqlSetOperator operator, RelNode rel)
private static RexNode
stripCastFromString(RexNode node)
Removes cast from string.abstract SqlImplementor.Result
visitChild(int i, RelNode e)
(package private) SqlSelect
wrapSelect(SqlNode node)
Wraps a node in a SELECT statement that has no clauses: "SELECT ...
-
-
-
Field Detail
-
POS
public static final SqlParserPos POS
-
dialect
public final SqlDialect dialect
-
aliasSet
protected final java.util.Set<java.lang.String> aliasSet
-
ordinalMap
protected final java.util.Map<java.lang.String,SqlNode> ordinalMap
-
correlTableMap
protected final java.util.Map<CorrelationId,SqlImplementor.Context> correlTableMap
-
-
Constructor Detail
-
SqlImplementor
protected SqlImplementor(SqlDialect dialect)
-
-
Method Detail
-
visitChild
public abstract SqlImplementor.Result visitChild(int i, RelNode e)
-
addSelect
public void addSelect(java.util.List<SqlNode> selectList, SqlNode node, RelDataType rowType)
-
isStar
public static boolean isStar(java.util.List<RexNode> exps, RelDataType inputRowType, RelDataType projectRowType)
Returns whether a list of expressions projects all fields, in order, from the input, with the same names.
-
isStar
public static boolean isStar(RexProgram program)
-
setOpToSql
public SqlImplementor.Result setOpToSql(SqlSetOperator operator, RelNode rel)
-
convertConditionToSqlNode
public static SqlNode convertConditionToSqlNode(RexNode node, SqlImplementor.Context leftContext, SqlImplementor.Context rightContext, int leftFieldCount)
- Parameters:
node
- Join conditionleftContext
- Left contextrightContext
- Right contextleftFieldCount
- Number of fields on left result- Returns:
- SqlNode that represents the condition
-
stripCastFromString
private static RexNode stripCastFromString(RexNode node)
Removes cast from string.For example,
x > CAST('2015-01-07' AS DATE)
becomesx > '2015-01-07'
.
-
reverseOperatorDirection
private static SqlOperator reverseOperatorDirection(SqlOperator op)
-
joinType
public static JoinType joinType(JoinRelType joinType)
-
result
public SqlImplementor.Result result(SqlNode node, java.util.Collection<SqlImplementor.Clause> clauses, RelNode rel, java.util.Map<java.lang.String,RelDataType> aliases)
Creates a result based on a single relational expression.
-
result
public SqlImplementor.Result result(SqlNode join, SqlImplementor.Result leftResult, SqlImplementor.Result rightResult)
Creates a result based on a join. (Each join could contain one or more relational expressions.)
-
collectAliases
private void collectAliases(com.google.common.collect.ImmutableMap.Builder<java.lang.String,RelDataType> builder, SqlNode node, java.util.Iterator<RelDataType> aliases)
-
wrapSelect
SqlSelect wrapSelect(SqlNode node)
Wraps a node in a SELECT statement that has no clauses: "SELECT ... FROM (node)".
-
computeFieldCount
private static int computeFieldCount(java.util.Map<java.lang.String,RelDataType> aliases)
-
aliasContext
public SqlImplementor.Context aliasContext(java.util.Map<java.lang.String,RelDataType> aliases, boolean qualified)
-
joinContext
public SqlImplementor.Context joinContext(SqlImplementor.Context leftContext, SqlImplementor.Context rightContext)
-
matchRecognizeContext
public SqlImplementor.Context matchRecognizeContext(SqlImplementor.Context context)
-
-