Package org.apache.calcite.rel.type
Class DynamicRecordTypeImpl
java.lang.Object
org.apache.calcite.rel.type.RelDataTypeImpl
org.apache.calcite.rel.type.DynamicRecordType
org.apache.calcite.rel.type.DynamicRecordTypeImpl
- All Implemented Interfaces:
RelDataType
,RelDataTypeFamily
- Direct Known Subclasses:
DynamicTupleRecordType
Implementation of
RelDataType
for a dynamic table.
It's used during SQL validation, where the field list is mutable for
the getField() call. After SQL validation, a normal RelDataTypeImpl
with an immutable field list takes the place of the DynamicRecordTypeImpl
instance.
-
Field Summary
Fields inherited from class org.apache.calcite.rel.type.DynamicRecordType
DYNAMIC_STAR_PREFIX
Fields inherited from class org.apache.calcite.rel.type.RelDataTypeImpl
digest, fieldList, NON_NULLABLE_SUFFIX
Fields inherited from interface org.apache.calcite.rel.type.RelDataType
PRECISION_NOT_SPECIFIED, SCALE_NOT_SPECIFIED
-
Constructor Summary
ConstructorsConstructorDescriptionDynamicRecordTypeImpl
(RelDataTypeFactory typeFactory) Creates a DynamicRecordTypeImpl. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
generateTypeString
(StringBuilder sb, boolean withDetail) Generates a string representation of this type.Gets a canonical object representing the family of this type.@Nullable RelDataTypeField
Looks up a field by name.int
Returns the number of fields in a struct type.Gets the fields in a struct type.Returns the names of the fields in a struct type.Returns the precedence list for this type.Gets theSqlTypeName
of this type.boolean
isStruct()
Queries whether this is a structured type.Methods inherited from class org.apache.calcite.rel.type.DynamicRecordType
isDynamicStarColName, isDynamicStruct
Methods inherited from class org.apache.calcite.rel.type.RelDataTypeImpl
computeDigest, equals, extra, getCharset, getCollation, getComparability, getComponentType, getFieldMap, getFullTypeString, getIntervalQualifier, getKeyType, getPrecision, getScale, getSqlIdentifier, getStructKind, getValueType, hashCode, isNullable, proto, proto, proto, proto, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.apache.calcite.rel.type.RelDataType
equalsSansFieldNames, equalsSansFieldNamesAndNullability, getMeasureElementType, isMeasure
-
Constructor Details
-
DynamicRecordTypeImpl
Creates a DynamicRecordTypeImpl.
-
-
Method Details
-
getFieldList
Description copied from interface:RelDataType
Gets the fields in a struct type. The field count is equal to the size of the returned list.- Specified by:
getFieldList
in interfaceRelDataType
- Overrides:
getFieldList
in classRelDataTypeImpl
- Returns:
- read-only list of fields
-
getFieldCount
public int getFieldCount()Description copied from interface:RelDataType
Returns the number of fields in a struct type.This method is equivalent to
.RelDataType.getFieldList()
.size()- Specified by:
getFieldCount
in interfaceRelDataType
- Overrides:
getFieldCount
in classRelDataTypeImpl
-
getField
public @Nullable RelDataTypeField getField(String fieldName, boolean caseSensitive, boolean elideRecord) Description copied from interface:RelDataType
Looks up a field by name.NOTE: Be careful choosing the value of
caseSensitive
:- If the field name was supplied by an end-user (e.g. as a column alias in SQL), use your session's case-sensitivity setting.
- Only hard-code
true
if you are sure that the field name is internally generated. - Hard-coding
false
is almost certainly wrong.
- Specified by:
getField
in interfaceRelDataType
- Overrides:
getField
in classRelDataTypeImpl
- Parameters:
fieldName
- Name of field to findcaseSensitive
- Whether match is case-sensitiveelideRecord
- Whether to find fields nested within records- Returns:
- named field, or null if not found
-
getFieldNames
Description copied from interface:RelDataType
Returns the names of the fields in a struct type. The field count is equal to the size of the returned list.- Specified by:
getFieldNames
in interfaceRelDataType
- Overrides:
getFieldNames
in classRelDataTypeImpl
- Returns:
- read-only list of field names
-
getSqlTypeName
Description copied from class:RelDataTypeImpl
Gets theSqlTypeName
of this type. Sub-classes must override the method to ensure the resulting value is non-nullable.- Specified by:
getSqlTypeName
in interfaceRelDataType
- Overrides:
getSqlTypeName
in classRelDataTypeImpl
- Returns:
- SqlTypeName, never null
-
getPrecedenceList
Description copied from interface:RelDataType
Returns the precedence list for this type.- Specified by:
getPrecedenceList
in interfaceRelDataType
- Overrides:
getPrecedenceList
in classRelDataTypeImpl
-
generateTypeString
Description copied from class:RelDataTypeImpl
Generates a string representation of this type.- Specified by:
generateTypeString
in classRelDataTypeImpl
- Parameters:
sb
- StringBuilder into which to generate the stringwithDetail
- when true, all detail information needed to compute a unique digest (and return from getFullTypeString) should be included;
-
isStruct
public boolean isStruct()Description copied from interface:RelDataType
Queries whether this is a structured type.- Specified by:
isStruct
in interfaceRelDataType
- Overrides:
isStruct
in classRelDataTypeImpl
- Returns:
- whether this type has fields; examples include rows and user-defined structured types in SQL, and classes in Java
-
getFamily
Description copied from interface:RelDataType
Gets a canonical object representing the family of this type. Two values can be compared if and only if their types are in the same family.- Specified by:
getFamily
in interfaceRelDataType
- Overrides:
getFamily
in classRelDataTypeImpl
- Returns:
- canonical object representing type family, never null
-