Package org.apache.calcite.sql.validate
Class SqlValidatorImpl.DmlNamespace
java.lang.Object
org.apache.calcite.sql.validate.IdentifierNamespace
org.apache.calcite.sql.validate.SqlValidatorImpl.DmlNamespace
- All Implemented Interfaces:
SqlValidatorNamespace
- Enclosing class:
SqlValidatorImpl
Common base class for DML statement namespaces.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final @Nullable SqlNodeprotected FilterRequirementInformation about what fields need to be filtered and what bypass fields can defuse the errors if they are filtered on as an alternative.protected @Nullable RelDataTypeType of the output row, which comprises the name and type of each output column.protected @Nullable RelDataTypeAsrowType, but not necessarily a struct.protected final SqlValidatorImplFields inherited from class org.apache.calcite.sql.validate.IdentifierNamespace
extendList -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedDmlNamespace(SqlValidatorImpl validator, SqlNode id, SqlNode enclosingNode, SqlValidatorScope parentScope) -
Method Summary
Modifier and TypeMethodDescriptionprotected RelDataTypeconvertToStruct(RelDataType type) @Nullable RelDataTypeFieldReturns a field of a given name, or null.@Nullable SqlNodeReturns the parse tree node that at is at the root of this namespace and includes all decorations.Returns aFilterRequirementobject describing the "must-filter" fields of this namespace (fields that must be filtered in a query) and "bypass" fields that can remove the requirement that fields are filtered.Returns the row type of this namespace, which comprises a list of names and types of the output columns.Returns the row type of this namespace, sans any system columns.getType()Returns the type of this namespace.Returns the validator.booleanisWrapperFor(Class<?> clazz) Returns whether this namespace implements a given interface, or wraps a class which does.@Nullable SqlValidatorNamespacelookupChild(String name) Looks up a child namespace of a given name.voidvoidsetType(RelDataType type) Sets the type of this namespace.protected RelDataTypetoStruct(RelDataType type, @Nullable SqlNode unnest) Converts a type to a struct if it is not already.<T> @Nullable TReturns this namespace, or a wrapped namespace, cast to a particular class.final voidvalidate(RelDataType targetRowType) Validates this namespace.Methods inherited from class org.apache.calcite.sql.validate.IdentifierNamespace
getId, getMonotonicExprs, getMonotonicity, getNode, getTable, resolve, split, supportsModality, validateImplMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.calcite.sql.validate.SqlValidatorNamespace
fieldExists
-
Field Details
-
validator
-
rowType
Type of the output row, which comprises the name and type of each output column. Set on validate. -
type
AsrowType, but not necessarily a struct. -
filterRequirement
Information about what fields need to be filtered and what bypass fields can defuse the errors if they are filtered on as an alternative. Initialized as an empty object, but typically re-assigned during validation. -
enclosingNode
-
-
Constructor Details
-
DmlNamespace
protected DmlNamespace(SqlValidatorImpl validator, SqlNode id, SqlNode enclosingNode, SqlValidatorScope parentScope)
-
-
Method Details
-
getValidator
Description copied from interface:SqlValidatorNamespaceReturns the validator.- Specified by:
getValidatorin interfaceSqlValidatorNamespace- Returns:
- validator
-
validate
Description copied from interface:SqlValidatorNamespaceValidates this namespace.If the scope has already been validated, does nothing.
Please call
SqlValidatorImpl.validateNamespace(org.apache.calcite.sql.validate.SqlValidatorNamespace, org.apache.calcite.rel.type.RelDataType)rather than calling this method directly.- Specified by:
validatein interfaceSqlValidatorNamespace- Parameters:
targetRowType- Desired row type, must not be null, may be the data type 'unknown'.
-
getRowType
Description copied from interface:SqlValidatorNamespaceReturns the row type of this namespace, which comprises a list of names and types of the output columns. If the scope's type has not yet been derived, derives it.- Specified by:
getRowTypein interfaceSqlValidatorNamespace- Returns:
- Row type of this namespace, never null, always a struct
-
getRowTypeSansSystemColumns
Description copied from interface:SqlValidatorNamespaceReturns the row type of this namespace, sans any system columns.- Specified by:
getRowTypeSansSystemColumnsin interfaceSqlValidatorNamespace- Returns:
- Row type sans system columns
-
getType
Description copied from interface:SqlValidatorNamespaceReturns the type of this namespace.- Specified by:
getTypein interfaceSqlValidatorNamespace- Returns:
- Row type converted to struct
-
setType
Description copied from interface:SqlValidatorNamespaceSets the type of this namespace.Allows the type for the namespace to be explicitly set, but usually is called during
SqlValidatorNamespace.validate(RelDataType).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.
- Specified by:
setTypein interfaceSqlValidatorNamespace
-
getEnclosingNode
Description copied from interface:SqlValidatorNamespaceReturns the parse tree node that at is at the root of this namespace and includes all decorations. If there are no decorations, returns the same asSqlValidatorNamespace.getNode().- Specified by:
getEnclosingNodein interfaceSqlValidatorNamespace
-
lookupChild
Description copied from interface:SqlValidatorNamespaceLooks up a child namespace of a given name.For example, in the query
select e.name from emps as e,eis anIdentifierNamespacewhich has a childnamewhich is aFieldNamespace.- Specified by:
lookupChildin interfaceSqlValidatorNamespace- Parameters:
name- Name of namespace- Returns:
- Namespace
-
field
Description copied from interface:SqlValidatorNamespaceReturns a field of a given name, or null.- Specified by:
fieldin interfaceSqlValidatorNamespace- Parameters:
name- Field name- Returns:
- Field, or null
-
getFilterRequirement
Description copied from interface:SqlValidatorNamespaceReturns aFilterRequirementobject describing the "must-filter" fields of this namespace (fields that must be filtered in a query) and "bypass" fields that can remove the requirement that fields are filtered.- Specified by:
getFilterRequirementin interfaceSqlValidatorNamespace
-
makeNullable
public void makeNullable()- Specified by:
makeNullablein interfaceSqlValidatorNamespace
-
translate
-
unwrap
Description copied from interface:SqlValidatorNamespaceReturns this namespace, or a wrapped namespace, cast to a particular class.- Specified by:
unwrapin interfaceSqlValidatorNamespace- Parameters:
clazz- Desired type- Returns:
- This namespace cast to desired type
-
isWrapperFor
Description copied from interface:SqlValidatorNamespaceReturns whether this namespace implements a given interface, or wraps a class which does.- Specified by:
isWrapperForin interfaceSqlValidatorNamespace- Parameters:
clazz- Interface- Returns:
- Whether namespace implements given interface
-
convertToStruct
-
toStruct
Converts a type to a struct if it is not already.
-