Package org.apache.druid.segment.column
Class BaseTypeSignature<Type extends TypeDescriptor>
- java.lang.Object
-
- org.apache.druid.segment.column.BaseTypeSignature<Type>
-
- All Implemented Interfaces:
TypeSignature<Type>
- Direct Known Subclasses:
ColumnType
,ExpressionType
public abstract class BaseTypeSignature<Type extends TypeDescriptor> extends Object implements TypeSignature<Type>
-
-
Field Summary
Fields Modifier and Type Field Description protected String
complexTypeName
protected TypeSignature<Type>
elementType
protected Type
type
-
Constructor Summary
Constructors Constructor Description BaseTypeSignature(TypeFactory typeFactory, Type type, String complexTypeName, TypeSignature<Type> elementType)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object o)
String
getComplexTypeName()
Type name of 'complex' types (ValueType.COMPLEX
,ExprType.COMPLEX
), which are 'registered' by their name, acting as a key to get the correct set of serialization, deserialization, and other type specific handling facilties.TypeSignature<Type>
getElementType()
<T> NullableTypeStrategy<T>
getNullableStrategy()
ANullableTypeStrategy
is aTypeStrategy
which can handle reading and writing null values, at the very high cost of an additional byte per value, of which a single bit is used to storeNullHandling.IS_NULL_BYTE
orNullHandling.IS_NOT_NULL_BYTE
as appropriate.<T> TypeStrategy<T>
getStrategy()
ATypeStrategy
provides facilities to reading and writing values to buffers, as well as basic value comparators and byte size estimation.Type
getType()
TypeDescriptor
enumeration used to handle different classes of typesint
hashCode()
String
toString()
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.druid.segment.column.TypeSignature
anyOf, asTypeString, is, isArray, isNumeric, isPrimitive, isPrimitiveArray
-
-
-
-
Field Detail
-
type
protected final Type extends TypeDescriptor type
-
elementType
@Nullable protected final TypeSignature<Type extends TypeDescriptor> elementType
-
-
Constructor Detail
-
BaseTypeSignature
public BaseTypeSignature(TypeFactory typeFactory, Type type, @Nullable String complexTypeName, @Nullable TypeSignature<Type> elementType)
-
-
Method Detail
-
getType
public Type getType()
Description copied from interface:TypeSignature
TypeDescriptor
enumeration used to handle different classes of types- Specified by:
getType
in interfaceTypeSignature<Type extends TypeDescriptor>
- See Also:
ValueType
,ExprType
-
getComplexTypeName
@Nullable public String getComplexTypeName()
Description copied from interface:TypeSignature
Type name of 'complex' types (ValueType.COMPLEX
,ExprType.COMPLEX
), which are 'registered' by their name, acting as a key to get the correct set of serialization, deserialization, and other type specific handling facilties. For other types, this value will be null.- Specified by:
getComplexTypeName
in interfaceTypeSignature<Type extends TypeDescriptor>
-
getElementType
@Nullable public TypeSignature<Type> getElementType()
Description copied from interface:TypeSignature
TypeSignature
for the elements contained in an array type (ValueType.ARRAY
,ExprType.ARRAY
). For non-array types, this value will be null.- Specified by:
getElementType
in interfaceTypeSignature<Type extends TypeDescriptor>
-
getStrategy
public <T> TypeStrategy<T> getStrategy()
Description copied from interface:TypeSignature
ATypeStrategy
provides facilities to reading and writing values to buffers, as well as basic value comparators and byte size estimation. UseTypeSignature.getNullableStrategy()
if you need to read and write values which might possibly be null and aren't handling this in a different (probably better) way.- Specified by:
getStrategy
in interfaceTypeSignature<Type extends TypeDescriptor>
-
getNullableStrategy
public <T> NullableTypeStrategy<T> getNullableStrategy()
Description copied from interface:TypeSignature
ANullableTypeStrategy
is aTypeStrategy
which can handle reading and writing null values, at the very high cost of an additional byte per value, of which a single bit is used to storeNullHandling.IS_NULL_BYTE
orNullHandling.IS_NOT_NULL_BYTE
as appropriate. This pattern is common among buffer aggregators, which don't have access to an external memory location for more efficient tracking of null values and must store this information inline with the accumulated value.- Specified by:
getNullableStrategy
in interfaceTypeSignature<Type extends TypeDescriptor>
-
-