Interface PhysType
-
- All Known Implementing Classes:
PhysTypeImpl
public interface PhysType
Physical type of a row.Consists of the SQL row type (returned by
getRowType()
), the Java type of the row (returned bygetJavaRowType()
), and methods to generate expressions to access fields, generate records, and so forth. Together, the records encapsulate how the logical type maps onto the physical type.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description java.util.List<Expression>
accessors(Expression parameter, java.util.List<java.lang.Integer> argList)
Expression
comparer()
Returns a expression that yields a comparer, or null if this type is comparable.PhysType
component(int field)
Returns the physical type of a given field's component type.Expression
convertTo(Expression expression, PhysType targetPhysType)
Converts an enumerable of this physical type to an enumerable that uses a given physical type for its rows.PhysType
field(int ordinal)
Returns the physical type of a field.java.lang.Class
fieldClass(int field)
Returns the Java class of the field with the given ordinal.boolean
fieldNullable(int index)
Returns whether a given field allows null values.Expression
fieldReference(Expression expression, int field)
Generates a reference to a given field in an expression.Expression
fieldReference(Expression expression, int field, java.lang.reflect.Type storageType)
Generates a reference to a given field in an expression.Expression
generateAccessor(java.util.List<java.lang.Integer> fields)
Generates an accessor function for a given list of fields.Pair<Expression,Expression>
generateCollationKey(java.util.List<RelFieldCollation> collations)
Returns a lambda to create a collation key and a comparator.Expression
generateComparator(RelCollation collation)
Returns a comparator.Expression
generateSelector(ParameterExpression parameter, java.util.List<java.lang.Integer> fields)
Generates a selector for the given fields from an expression, with the default row format.Expression
generateSelector(ParameterExpression parameter, java.util.List<java.lang.Integer> fields, java.util.List<java.lang.Integer> usedFields, JavaRowFormat targetFormat)
Generates a lambda expression that is a selector for the given fields from an expression.Expression
generateSelector(ParameterExpression parameter, java.util.List<java.lang.Integer> fields, JavaRowFormat targetFormat)
Generates a lambda expression that is a selector for the given fields from an expression.JavaRowFormat
getFormat()
Returns the format.java.lang.reflect.Type
getJavaFieldType(int field)
Returns the Java class that is used to store the field with the given ordinal.java.lang.reflect.Type
getJavaRowType()
Returns the Java type (often a Class) that represents a row.RelDataType
getRowType()
Returns the SQL row type.PhysType
makeNullable(boolean nullable)
Returns a copy of this type that allows nulls ifnullable
is true.PhysType
project(java.util.List<java.lang.Integer> integers, boolean indicator, JavaRowFormat format)
Projects a given collection of fields from this input record, optionally with indicator fields, into a particular preferred output format.PhysType
project(java.util.List<java.lang.Integer> integers, JavaRowFormat format)
Projects a given collection of fields from this input record, into a particular preferred output format.Expression
record(java.util.List<Expression> expressions)
Generates an expression that creates a record for a row, initializing its fields with the given expressions.Pair<java.lang.reflect.Type,java.util.List<Expression>>
selector(ParameterExpression parameter, java.util.List<java.lang.Integer> fields, JavaRowFormat targetFormat)
Generates a selector for the given fields from an expression.
-
-
-
Method Detail
-
getJavaRowType
java.lang.reflect.Type getJavaRowType()
Returns the Java type (often a Class) that represents a row. For example, in one row format, always returnsObject[].class
.
-
getJavaFieldType
java.lang.reflect.Type getJavaFieldType(int field)
Returns the Java class that is used to store the field with the given ordinal.For instance, when the java row type is
Object[]
, the java field type isObject
even if the field is not nullable.
-
field
PhysType field(int ordinal)
Returns the physical type of a field.
-
component
PhysType component(int field)
Returns the physical type of a given field's component type.
-
getRowType
RelDataType getRowType()
Returns the SQL row type.
-
fieldClass
java.lang.Class fieldClass(int field)
Returns the Java class of the field with the given ordinal.
-
fieldNullable
boolean fieldNullable(int index)
Returns whether a given field allows null values.
-
fieldReference
Expression fieldReference(Expression expression, int field)
Generates a reference to a given field in an expression.For example given
expression=employee
andfield=2
, generatesemployee.deptno
- Parameters:
expression
- Expressionfield
- Ordinal of field- Returns:
- Expression to access the field of the expression
-
fieldReference
Expression fieldReference(Expression expression, int field, java.lang.reflect.Type storageType)
Generates a reference to a given field in an expression.This method optimizes for the target storage type (i.e. avoids casts).
For example given
expression=employee
andfield=2
, generatesemployee.deptno
- Parameters:
expression
- Expressionfield
- Ordinal of fieldstorageType
- optional hint for storage class- Returns:
- Expression to access the field of the expression
-
generateAccessor
Expression generateAccessor(java.util.List<java.lang.Integer> fields)
Generates an accessor function for a given list of fields. The resulting object is aList
(implementingObject.hashCode()
andObject.equals(Object)
per that interface) and also implementsComparable
.For example:
new Function1<Employee, Object[]> { public Object[] apply(Employee v1) { return FlatLists.of(v1.<fieldN>, v1.<fieldM>); } } }
-
generateSelector
Expression generateSelector(ParameterExpression parameter, java.util.List<java.lang.Integer> fields)
Generates a selector for the given fields from an expression, with the default row format.
-
generateSelector
Expression generateSelector(ParameterExpression parameter, java.util.List<java.lang.Integer> fields, JavaRowFormat targetFormat)
Generates a lambda expression that is a selector for the given fields from an expression.
-
generateSelector
Expression generateSelector(ParameterExpression parameter, java.util.List<java.lang.Integer> fields, java.util.List<java.lang.Integer> usedFields, JavaRowFormat targetFormat)
Generates a lambda expression that is a selector for the given fields from an expression.usedFields
must be a subset offields
. For each field, there is a corresponding indicator field. If a field is used, its value is assigned and its indicator is leftfalse
. If a field is not used, its value is not assigned and its indicator is set totrue
; This will become a value of 1 whenGROUPING(field)
is called.
-
selector
Pair<java.lang.reflect.Type,java.util.List<Expression>> selector(ParameterExpression parameter, java.util.List<java.lang.Integer> fields, JavaRowFormat targetFormat)
Generates a selector for the given fields from an expression. Only used by EnumerableWindow.
-
project
PhysType project(java.util.List<java.lang.Integer> integers, JavaRowFormat format)
Projects a given collection of fields from this input record, into a particular preferred output format. The output format is optimized if there are 0 or 1 fields.
-
project
PhysType project(java.util.List<java.lang.Integer> integers, boolean indicator, JavaRowFormat format)
Projects a given collection of fields from this input record, optionally with indicator fields, into a particular preferred output format.The output format is optimized if there are 0 or 1 fields and indicators are disabled.
-
generateCollationKey
Pair<Expression,Expression> generateCollationKey(java.util.List<RelFieldCollation> collations)
Returns a lambda to create a collation key and a comparator. The comparator is sometimes null.
-
generateComparator
Expression generateComparator(RelCollation collation)
Returns a comparator. Unlike the comparator returned bygenerateCollationKey(java.util.List)
, this comparator acts on the whole element.
-
comparer
Expression comparer()
Returns a expression that yields a comparer, or null if this type is comparable.
-
record
Expression record(java.util.List<Expression> expressions)
Generates an expression that creates a record for a row, initializing its fields with the given expressions. There must be one expression per field.- Parameters:
expressions
- Expression to initialize each field- Returns:
- Expression to create a row
-
getFormat
JavaRowFormat getFormat()
Returns the format.
-
accessors
java.util.List<Expression> accessors(Expression parameter, java.util.List<java.lang.Integer> argList)
-
makeNullable
PhysType makeNullable(boolean nullable)
Returns a copy of this type that allows nulls ifnullable
is true.
-
convertTo
Expression convertTo(Expression expression, PhysType targetPhysType)
Converts an enumerable of this physical type to an enumerable that uses a given physical type for its rows.
-
-