Class org::apache::calcite::sql2rel::SqlToRelConverter::Blackboard

class Blackboard : public SqlRexContext, public org::apache::calcite::sql::util::SqlVisitor<RexNode>, public InitializerContext

Workspace for translating an individual SELECT statement (or sub-SELECT).

Public Functions

SqlNode org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.getTopNode()
void org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.setPatternVarRef(boolean isVarRef)
RexNode org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.register(RelNode rel, JoinRelType joinType)
RexNode org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.register(RelNode rel, JoinRelType joinType, List< RexNode > leftKeys)

Registers a relational expression.

Return

Expression with which to refer to the row (or partial row) coming from this relational expression’s side of the join

Parameters
  • rel: Relational expression

  • joinType: Join type

  • leftKeys: LHS of IN clause, or null for expressions other than IN

void org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.setRoot(RelNode root, boolean leaf)

Sets a new root relational expression, as the translation process backs its way further up the tree.

Parameters
  • root: New root relational expression

  • leaf: Whether the relational expression is a leaf, that is, derived from an atomic relational expression such as a table name in the from clause, or the projection on top of a select-sub-query. In particular, relational expressions derived from JOIN operators are not leaves, but set expressions are.

void org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.setDataset(String datasetName)

Notifies this Blackboard that the root just set using setRoot(RelNode, boolean) was derived using dataset substitution.

The default implementation is not interested in such notifications, and does nothing.

Parameters
  • datasetName: Dataset name

Public Members

final SqlValidatorScope org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.scope

Collection of RelNode objects which correspond to a SELECT statement.

RelNode org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.root

Protected Functions

org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.Blackboard(SqlValidatorScope scope, Map< String, RexNode > nameToNodeMap, boolean top)

Creates a Blackboard.

Parameters
  • scope: Name-resolution scope for expressions validated within this query. Can be null if this Blackboard is for a leaf node, say

  • nameToNodeMap: Map which translates the expression to map a given parameter into, if translating expressions; null otherwise

  • top: Whether this is the root of the query

Private Functions

void org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.setRoot(List< RelNode > inputs, RelNode root, boolean hasSystemFields)

Private Members

final Map<String, RexNode> org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.nameToNodeMap
List<RelNode> org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.inputs
final Map<CorrelationId, RexFieldAccess> org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.mapCorrelateToRex = new HashMap<>()
boolean org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.isPatternVarRef = false
final List<SubQuery> org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.subQueryList = new ArrayList<>()

List of IN and EXISTS nodes inside this SELECT statement (but not inside sub-queries).

final Map<RelNode, Map<Integer, Integer> > org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.mapRootRelToFieldProjection= new HashMap<>()

Project the groupby expressions out of the root of this sub-select. Sub-queries can reference group by expressions projected from the “right” to the sub-query.

final List<SqlMonotonicity> org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.columnMonotonicities = new ArrayList<>()
final List<RelDataTypeField> org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.systemFieldList = new ArrayList<>()
final InitializerExpressionFactory org.apache.calcite.sql2rel.SqlToRelConverter.Blackboard.initializerExpressionFactory= new NullInitializerExpressionFactory()