Package org.apache.calcite.sql.validate
Class ParameterScope
java.lang.Object
org.apache.calcite.sql.validate.ParameterScope
- All Implemented Interfaces:
SqlValidatorScope
A scope which contains nothing besides a few parameters. Like
EmptyScope
(which is its base class), it has no parent scope.- See Also:
-
ParameterNamespace
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.calcite.sql.validate.SqlValidatorScope
SqlValidatorScope.EmptyPath, SqlValidatorScope.Path, SqlValidatorScope.Resolve, SqlValidatorScope.Resolved, SqlValidatorScope.ResolvedImpl, SqlValidatorScope.Step
-
Field Summary
-
Constructor Summary
ConstructorDescriptionParameterScope
(SqlValidatorImpl validator, Map<String, RelDataType> nameToTypeMap) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addChild
(SqlValidatorNamespace ns, String alias, boolean nullable) Registers a relation in this scope.void
findAliases
(Collection<SqlMoniker> result) Collects theSqlMoniker
s of all table aliases (uses of tables in query FROM clauses) available in this scope.void
findAllColumnNames
(List<SqlMoniker> result) Collects theSqlMoniker
s of all possible columns in this scope.void
findAllTableNames
(List<SqlMoniker> result) findQualifyingTableName
(String columnName, SqlNode ctx) findQualifyingTableNames
(String columnName, SqlNode ctx, SqlNameMatcher nameMatcher) Finds all table aliases which are implicitly qualifying an unqualified column name.fullyQualify
(SqlIdentifier identifier) Converts an identifier into a fully-qualified identifier.getMonotonicity
(SqlNode expr) Returns whether an expression is monotonic in this scope.getNode()
Returns the root node of this scope.getOperandScope
(SqlCall call) Returns the scope within which operands to a call are to be validated.@Nullable SqlNodeList
Returns the expressions by which the rows in this scope are sorted.@Nullable SqlValidatorNamespace
getTableNamespace
(List<String> names) Returns the validator which created this scope.@Nullable SqlWindow
lookupWindow
(String name) Finds a window with a given name.nullifyType
(SqlNode node, RelDataType type) Converts the type of an expression to nullable, if the context warrants it.void
resolve
(List<String> names, SqlNameMatcher nameMatcher, boolean deep, SqlValidatorScope.Resolved resolved) Looks up a node with a given name.@Nullable RelDataType
resolveColumn
(String name, SqlNode ctx) Resolves a single identifier to a column, and returns the datatype of that column.void
resolveTable
(List<String> names, SqlNameMatcher nameMatcher, SqlValidatorScope.Path path, SqlValidatorScope.Resolved resolved) Looks up a table in this scope from its name.void
validateExpr
(SqlNode expr) Performs any scope-specific validation of an expression.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.calcite.sql.validate.SqlValidatorScope
isMeasureRef, isWithin
-
Field Details
-
validator
-
-
Constructor Details
-
ParameterScope
-
-
Method Details
-
fullyQualify
Description copied from interface:SqlValidatorScope
Converts an identifier into a fully-qualified identifier. For example, the "empno" in "select empno from emp natural join dept" becomes "emp.empno".- Specified by:
fullyQualify
in interfaceSqlValidatorScope
- Returns:
- A qualified identifier, never null
-
getOperandScope
Description copied from interface:SqlValidatorScope
Returns the scope within which operands to a call are to be validated. Usually it is this scope, but when the call is to an aggregate function and this is an aggregating scope, it will be a a different scope.- Specified by:
getOperandScope
in interfaceSqlValidatorScope
- Parameters:
call
- Call- Returns:
- Scope within which to validate arguments to call.
-
resolveColumn
Description copied from interface:SqlValidatorScope
Resolves a single identifier to a column, and returns the datatype of that column.If it cannot find the column, returns null. If the column is ambiguous, throws an error with context
ctx
.- Specified by:
resolveColumn
in interfaceSqlValidatorScope
- Parameters:
name
- Name of columnctx
- Context for exception- Returns:
- Type of column, if found and unambiguous; null if not found
-
getValidator
Description copied from interface:SqlValidatorScope
Returns the validator which created this scope.- Specified by:
getValidator
in interfaceSqlValidatorScope
-
getNode
Description copied from interface:SqlValidatorScope
Returns the root node of this scope. Never null.- Specified by:
getNode
in interfaceSqlValidatorScope
-
resolve
public void resolve(List<String> names, SqlNameMatcher nameMatcher, boolean deep, SqlValidatorScope.Resolved resolved) Description copied from interface:SqlValidatorScope
Looks up a node with a given name. Returns null if none is found.- Specified by:
resolve
in interfaceSqlValidatorScope
- Parameters:
names
- Name of node to find, maybe partially or fully qualifiednameMatcher
- Name matcherdeep
- Whether to look more than one level deepresolved
- Callback wherein to write the match(es) we find
-
getTableNamespace
- Specified by:
getTableNamespace
in interfaceSqlValidatorScope
-
resolveTable
public void resolveTable(List<String> names, SqlNameMatcher nameMatcher, SqlValidatorScope.Path path, SqlValidatorScope.Resolved resolved) Description copied from interface:SqlValidatorScope
Looks up a table in this scope from its name. If found, callsSqlValidatorScope.resolve(List, SqlNameMatcher, boolean, Resolved)
.TableNamespace
that wraps it. If the "table" is defined in aWITH
clause it may be a query, not a table after all.The name matcher is not null, and one typically uses
SqlValidatorCatalogReader.nameMatcher()
.- Specified by:
resolveTable
in interfaceSqlValidatorScope
- Parameters:
names
- Name of table, may be qualified or fully-qualifiednameMatcher
- Name matcherpath
- List of names that we have traversed through so far
-
nullifyType
Description copied from interface:SqlValidatorScope
Converts the type of an expression to nullable, if the context warrants it.- Specified by:
nullifyType
in interfaceSqlValidatorScope
-
findAllColumnNames
Description copied from interface:SqlValidatorScope
Collects theSqlMoniker
s of all possible columns in this scope.- Specified by:
findAllColumnNames
in interfaceSqlValidatorScope
- Parameters:
result
- an array list of strings to add the result to
-
findAllTableNames
-
findAliases
Description copied from interface:SqlValidatorScope
Collects theSqlMoniker
s of all table aliases (uses of tables in query FROM clauses) available in this scope.- Specified by:
findAliases
in interfaceSqlValidatorScope
- Parameters:
result
- a list of monikers to add the result to
-
validateExpr
Description copied from interface:SqlValidatorScope
Performs any scope-specific validation of an expression. For example, an aggregating scope requires that expressions are valid aggregations. The expression has already been validated.- Specified by:
validateExpr
in interfaceSqlValidatorScope
-
findQualifyingTableName
- Specified by:
findQualifyingTableName
in interfaceSqlValidatorScope
-
findQualifyingTableNames
public Map<String,org.apache.calcite.sql.validate.ScopeChild> findQualifyingTableNames(String columnName, SqlNode ctx, SqlNameMatcher nameMatcher) Description copied from interface:SqlValidatorScope
Finds all table aliases which are implicitly qualifying an unqualified column name.This method is only implemented in scopes (such as
SelectScope
) which can be the context for name-resolution. In scopes such asIdentifierNamespace
, it throwsUnsupportedOperationException
.- Specified by:
findQualifyingTableNames
in interfaceSqlValidatorScope
- Parameters:
columnName
- Column namectx
- Validation context, to appear in any error thrownnameMatcher
- Name matcher- Returns:
- Map of applicable table alias and namespaces, never null, empty if no aliases found
-
addChild
Description copied from interface:SqlValidatorScope
Registers a relation in this scope.- Specified by:
addChild
in interfaceSqlValidatorScope
- Parameters:
ns
- Namespace representing the result-columns of the relationalias
- Alias with which to reference the relation, must not be nullnullable
- Whether this is a null-generating side of a join
-
lookupWindow
Description copied from interface:SqlValidatorScope
Finds a window with a given name. Returns null if not found.- Specified by:
lookupWindow
in interfaceSqlValidatorScope
-
getMonotonicity
Description copied from interface:SqlValidatorScope
Returns whether an expression is monotonic in this scope. For example, if the scope has previously been sorted by columns X, Y, then X is monotonic in this scope, but Y is not.- Specified by:
getMonotonicity
in interfaceSqlValidatorScope
-
getOrderList
Description copied from interface:SqlValidatorScope
Returns the expressions by which the rows in this scope are sorted. If the rows are unsorted, returns null.- Specified by:
getOrderList
in interfaceSqlValidatorScope
-