public class RelToSqlConverter extends SqlImplementor implements ReflectiveVisitor
SqlImplementor.AliasContext, SqlImplementor.BaseContext, SqlImplementor.Builder, SqlImplementor.Clause, SqlImplementor.Context, SqlImplementor.MatchRecognizeContext, SqlImplementor.Result, SqlImplementor.SimpleContextaliasSet, correlTableMap, dialect, POS| Constructor and Description |
|---|
RelToSqlConverter(SqlDialect dialect)
Creates a RelToSqlConverter.
|
aliasContext, as, convertConditionToSqlNode, isStar, isStar, joinContext, joinType, matchRecognizeContext, result, result, setOpToSql, tableFunctionScanContext, toSql, toSql, visitChild, visitInput, visitInput, visitInput, visitRootpublic RelToSqlConverter(SqlDialect dialect)
protected SqlImplementor.Result dispatch(RelNode e)
visit(Xxx e) method where Xxx
most closely matches the runtime type of the argument.public SqlImplementor.Result visitInput(RelNode parent, int i, boolean anon, boolean ignoreClauses, Set<SqlImplementor.Clause> expectedClauses)
SqlImplementorith input of e, the current relational
expression.visitInput in class SqlImplementorparent - Current relational expressioni - Ordinal of input within eanon - Whether to remove trivial aliases such as "EXPR$0"ignoreClauses - Whether to ignore the expected clauses when deciding
whether a sub-query is requiredexpectedClauses - Set of clauses that we expect the builder that
consumes this result will createSqlImplementor.isAnon()protected boolean isAnon()
SqlImplementorFor example, INSERT does not care about field names; we would prefer to generate without the "EXPR$0" alias:
INSERT INTO t1 SELECT x, y + 1 FROM t2
rather than with it:
INSERT INTO t1 SELECT x, y + 1 AS EXPR$0 FROM t2
But JOIN does care about field names; we have to generate the "EXPR$0" alias:
SELECT *
FROM emp AS e
JOIN (SELECT x, y + 1 AS EXPR$0) AS d
ON e.deptno = d.EXPR$0
because if we omit "AS EXPR$0" we do not know the field we are joining to, and the following is invalid:
SELECT *
FROM emp AS e
JOIN (SELECT x, y + 1) AS d
ON e.deptno = d.EXPR$0
isAnon in class SqlImplementorprotected SqlImplementor.Result result(SqlNode node, Collection<SqlImplementor.Clause> clauses, @Nullable String neededAlias, @Nullable RelDataType neededType, Map<String,RelDataType> aliases)
SqlImplementorSqlImplementor.Result.
Call this method rather than creating a Result directly,
because sub-classes may override.
result in class SqlImplementorpublic SqlImplementor.Result visit(RelNode e)
dispatch(org.apache.calcite.rel.RelNode) via reflection.public SqlImplementor.Result visit(Join e)
dispatch(org.apache.calcite.rel.RelNode) via reflection.protected SqlImplementor.Result visitAntiOrSemiJoin(Join e)
public SqlImplementor.Result visit(Correlate e)
dispatch(org.apache.calcite.rel.RelNode) via reflection.public SqlImplementor.Result visit(Filter e)
dispatch(org.apache.calcite.rel.RelNode) via reflection.public SqlImplementor.Result visit(Project e)
dispatch(org.apache.calcite.rel.RelNode) via reflection.public SqlImplementor.Result visit(Window e)
dispatch(org.apache.calcite.rel.RelNode) via reflection.public SqlImplementor.Result visit(Aggregate e)
dispatch(org.apache.calcite.rel.RelNode) via reflection.protected void buildAggGroupList(Aggregate e, SqlImplementor.Builder builder, List<SqlNode> groupByList, List<SqlNode> selectList)
e - The Aggregate nodebuilder - The SQL buildergroupByList - output group listselectList - output select listprotected SqlImplementor.Builder buildAggregate(Aggregate e, SqlImplementor.Builder builder, List<SqlNode> selectList, List<SqlNode> groupByList)
e - The Aggregate nodebuilder - The SQL builderselectList - The precomputed group listgroupByList - The precomputed select listpublic SqlImplementor.Result visit(TableScan e)
dispatch(org.apache.calcite.rel.RelNode) via reflection.public SqlImplementor.Result visit(Union e)
dispatch(org.apache.calcite.rel.RelNode) via reflection.public SqlImplementor.Result visit(Intersect e)
dispatch(org.apache.calcite.rel.RelNode) via reflection.public SqlImplementor.Result visit(Minus e)
dispatch(org.apache.calcite.rel.RelNode) via reflection.public SqlImplementor.Result visit(Calc e)
dispatch(org.apache.calcite.rel.RelNode) via reflection.public SqlImplementor.Result visit(Values e)
dispatch(org.apache.calcite.rel.RelNode) via reflection.public SqlImplementor.Result visit(Sort e)
dispatch(org.apache.calcite.rel.RelNode) via reflection.public SqlImplementor.Result visit(TableModify modify)
dispatch(org.apache.calcite.rel.RelNode) via reflection.public SqlImplementor.Result visit(Match e)
dispatch(org.apache.calcite.rel.RelNode) via reflection.public SqlImplementor.Result visit(Uncollect e)
public SqlImplementor.Result visit(TableFunctionScan e)
public List<SqlNode> createAsFullOperands(RelDataType rowType, SqlNode leftOperand, String alias)
rowType - Row type of the SqlNodeleftOperand - SqlNodealias - aliaspublic void addSelect(List<SqlNode> selectList, SqlNode node, RelDataType rowType)
addSelect in class SqlImplementorCopyright © 2012-2022 Apache Software Foundation. All Rights Reserved.