storageTypes = new ArrayList<>(rowType.getFieldCount()); for (int i = 0; i < rowType.getFieldCount(); i++) { storageTypes.add(outputPhysType.getJavaFieldType(i));
storageTypes = new ArrayList<>(rowType.getFieldCount()); for (int i = 0; i < rowType.getFieldCount(); i++) { storageTypes.add(outputPhysType.getJavaFieldType(i));
Expression expression = inputPhysType.fieldReference(parameter, i, physType.getJavaFieldType(expressions.size())); if (joinType.generatesNullsOn(ord.i)) { expression =
Expression expression = inputPhysType.fieldReference(parameter, i, physType.getJavaFieldType(expressions.size())); if (joinType.generatesNullsOn(ord.i)) { expression =
Type aggHolderType = agg.context.returnType(); Type aggStorageType = outputPhysType.getJavaFieldType(outputRow.size()); if (Primitive.is(aggHolderType) && !Primitive.is(aggStorageType)) { aggHolderType = Primitive.box(aggHolderType);
private Expression fieldExpression(ParameterExpression row_, int i, PhysType physType, JavaRowFormat format) { final Expression e = format.field(row_, i, null, physType.getJavaFieldType(i)); final RelDataType relFieldType = physType.getRowType().getFieldList().get(i).getType(); switch (relFieldType.getSqlTypeName()) { case ARRAY: case MULTISET: // We can't represent a multiset or array as a List<Employee>, because // the consumer does not know the element type. // The standard element type is List. // We need to convert to a List<List>. final JavaTypeFactory typeFactory = (JavaTypeFactory) getCluster().getTypeFactory(); final PhysType elementPhysType = PhysTypeImpl.of( typeFactory, relFieldType.getComponentType(), JavaRowFormat.CUSTOM); final MethodCallExpression e2 = Expressions.call(BuiltInMethod.AS_ENUMERABLE2.method, e); final RelDataType dummyType = this.rowType; final Expression e3 = elementPhysType.convertTo(e2, PhysTypeImpl.of(typeFactory, dummyType, JavaRowFormat.LIST)); return Expressions.call(e3, BuiltInMethod.ENUMERABLE_TO_LIST.method); default: return e; } }
private Expression fieldExpression(ParameterExpression row_, int i, PhysType physType, JavaRowFormat format) { final Expression e = format.field(row_, i, null, physType.getJavaFieldType(i)); final RelDataType relFieldType = physType.getRowType().getFieldList().get(i).getType(); switch (relFieldType.getSqlTypeName()) { case ARRAY: case MULTISET: // We can't represent a multiset or array as a List<Employee>, because // the consumer does not know the element type. // The standard element type is List. // We need to convert to a List<List>. final JavaTypeFactory typeFactory = (JavaTypeFactory) getCluster().getTypeFactory(); final PhysType elementPhysType = PhysTypeImpl.of( typeFactory, relFieldType.getComponentType(), JavaRowFormat.CUSTOM); final MethodCallExpression e2 = Expressions.call(BuiltInMethod.AS_ENUMERABLE2.method, e); final RelDataType dummyType = this.rowType; final Expression e3 = elementPhysType.convertTo(e2, PhysTypeImpl.of(typeFactory, dummyType, JavaRowFormat.LIST)); return Expressions.call(e3, BuiltInMethod.ENUMERABLE_TO_LIST.method); default: return e; } }
Type aggHolderType = agg.context.returnType(); Type aggStorageType = outputPhysType.getJavaFieldType(outputRow.size()); if (Primitive.is(aggHolderType) && !Primitive.is(aggStorageType)) { aggHolderType = Primitive.box(aggHolderType);
for (int i = 0; i < fieldCount; i++) { expressionList.add( childPhysType.fieldReference(o_, i, physType.getJavaFieldType(i)));
for (int i = 0; i < fieldCount; i++) { expressionList.add( childPhysType.fieldReference(o_, i, physType.getJavaFieldType(i)));
inputPhysType.fieldReference( row_, i, outputPhysType.getJavaFieldType(i)));
inputPhysType.fieldReference( row_, i, outputPhysType.getJavaFieldType(i)));