public interface SqlValidatorNamespace
For example, in the query SELECT emp.deptno, age FROM emp,
dept, the FROM clause forms a namespace consisting of two tables EMP
and DEPT, and a row type consisting of the combined columns of those tables.
Other examples of namespaces include a table in the from list (the namespace contains the constituent columns) and a subquery (the namespace contains the columns in the SELECT clause of the subquery).
These various kinds of namespace are implemented by classes
IdentifierNamespace for table names, SelectNamespace for
SELECT queries, SetopNamespace for UNION, EXCEPT and INTERSECT, and
so forth. But if you are looking at a SELECT query and call
SqlValidator.getNamespace(org.apache.calcite.sql.SqlNode), you may
not get a SelectNamespace. Why? Because the validator is allowed to wrap
namespaces in other objects which implement
SqlValidatorNamespace. Your SelectNamespace will be there somewhere,
but might be one or two levels deep. Don't try to cast the namespace or use
instanceof; use unwrap(Class) and
isWrapperFor(Class) instead.
SqlValidator,
SqlValidatorScope| Modifier and Type | Method and Description |
|---|---|
boolean |
fieldExists(String name)
Returns whether this namespace has a field of a given name.
|
SqlNode |
getEnclosingNode()
Returns the parse tree node that at is at the root of this namespace and
includes all decorations.
|
List<Pair<SqlNode,SqlMonotonicity>> |
getMonotonicExprs()
Returns a list of expressions which are monotonic in this namespace.
|
SqlMonotonicity |
getMonotonicity(String columnName)
Returns whether and how a given column is sorted.
|
SqlNode |
getNode()
Returns the parse tree node at the root of this namespace.
|
RelDataType |
getRowType()
Returns the row type of this namespace, which comprises a list of names
and types of the output columns.
|
RelDataType |
getRowTypeSansSystemColumns()
Returns the row type of this namespace, sans any system columns.
|
SqlValidatorTable |
getTable()
Returns the underlying table, or null if there is none.
|
RelDataType |
getType()
Returns the type of this namespace.
|
SqlValidator |
getValidator()
Returns the validator.
|
boolean |
isWrapperFor(Class<?> clazz)
Returns whether this namespace implements a given interface, or wraps a
class which does.
|
SqlValidatorNamespace |
lookupChild(String name)
Looks up a child namespace of a given name.
|
void |
makeNullable()
Makes all fields in this namespace nullable (typically because it is on
the outer side of an outer join.
|
SqlValidatorNamespace |
resolve()
If this namespace resolves to another namespace, returns that namespace,
following links to the end of the chain.
|
void |
setType(RelDataType type)
Sets the type of this namespace.
|
boolean |
supportsModality(SqlModality modality)
Returns whether this namespace is capable of giving results of the desired
modality.
|
String |
translate(String name)
Translates a field name to the name in the underlying namespace.
|
<T> T |
unwrap(Class<T> clazz)
Returns this namespace, or a wrapped namespace, cast to a particular
class.
|
void |
validate()
Validates this namespace.
|
SqlValidator getValidator()
SqlValidatorTable getTable()
RelDataType getRowType()
RelDataType getType()
void setType(RelDataType type)
Allows the type for the namespace to be explicitly set, but usually is
called during validate().
Implicitly also sets the row type. If the type is not a struct, then the row type is the type wrapped as a struct with a single column, otherwise the type and row type are the same.
RelDataType getRowTypeSansSystemColumns()
void validate()
If the scope has already been validated, does nothing.
Please call SqlValidatorImpl.validateNamespace(org.apache.calcite.sql.validate.SqlValidatorNamespace) rather than
calling this method directly.
SqlNode getNode()
TableNamespaceSqlNode getEnclosingNode()
getNode().SqlValidatorNamespace lookupChild(String name)
For example, in the query select e.name from emps as e,
e is an IdentifierNamespace which has a child
name which is a FieldNamespace.
name - Name of namespaceboolean fieldExists(String name)
name - Field nameList<Pair<SqlNode,SqlMonotonicity>> getMonotonicExprs()
SqlIdentifier called "TIMESTAMP".SqlMonotonicity getMonotonicity(String columnName)
void makeNullable()
String translate(String name)
<T> T unwrap(Class<T> clazz)
clazz - Desired typeClassCastException - if no such interface is availableboolean isWrapperFor(Class<?> clazz)
clazz - InterfaceSqlValidatorNamespace resolve()
A WITH) clause defines table names that resolve to queries
(the body of the with-item). An IdentifierNamespace typically
resolves to a TableNamespace.
You must not call this method before validate() has
completed.
boolean supportsModality(SqlModality modality)
true means streaming, false means relational.modality - ModalityCopyright © 2012–2015 The Apache Software Foundation. All rights reserved.