public PhysType project(List<Integer> integers, JavaRowFormat format) { return project(integers, false, format); }
public PhysType project(List<Integer> integers, JavaRowFormat format) { return project(integers, false, format); }
public Expression generateSelector(final ParameterExpression parameter, final List<Integer> fields, List<Integer> usedFields, JavaRowFormat targetFormat) { final PhysType targetPhysType = project(fields, true, targetFormat); final List<Expression> expressions = new ArrayList<>(); for (Ord<Integer> ord : Ord.zip(fields)) { final Integer field = ord.e; if (usedFields.contains(field)) { expressions.add(fieldReference(parameter, field)); } else { final Primitive primitive = Primitive.of(targetPhysType.fieldClass(ord.i)); expressions.add( Expressions.constant( primitive != null ? primitive.defaultValue : null)); } } for (Integer field : fields) { expressions.add(Expressions.constant(!usedFields.contains(field))); } return Expressions.lambda(Function1.class, targetPhysType.record(expressions), parameter); }
public Expression generateSelector(final ParameterExpression parameter, final List<Integer> fields, List<Integer> usedFields, JavaRowFormat targetFormat) { final PhysType targetPhysType = project(fields, true, targetFormat); final List<Expression> expressions = new ArrayList<>(); for (Ord<Integer> ord : Ord.zip(fields)) { final Integer field = ord.e; if (usedFields.contains(field)) { expressions.add(fieldReference(parameter, field)); } else { final Primitive primitive = Primitive.of(targetPhysType.fieldClass(ord.i)); expressions.add( Expressions.constant( primitive != null ? primitive.defaultValue : null)); } } for (Integer field : fields) { expressions.add(Expressions.constant(!usedFields.contains(field))); } return Expressions.lambda(Function1.class, targetPhysType.record(expressions), parameter); }
public Pair<Type, List<Expression>> selector( ParameterExpression parameter, List<Integer> fields, JavaRowFormat targetFormat) { // Optimize target format switch (fields.size()) { case 0: targetFormat = JavaRowFormat.LIST; break; case 1: targetFormat = JavaRowFormat.SCALAR; break; } final PhysType targetPhysType = project(fields, targetFormat); switch (format) { case SCALAR: return Pair.of(parameter.getType(), ImmutableList.of(parameter)); default: return Pair.of(targetPhysType.getJavaRowType(), fieldReferences(parameter, fields)); } }
public Pair<Type, List<Expression>> selector( ParameterExpression parameter, List<Integer> fields, JavaRowFormat targetFormat) { // Optimize target format switch (fields.size()) { case 0: targetFormat = JavaRowFormat.LIST; break; case 1: targetFormat = JavaRowFormat.SCALAR; break; } final PhysType targetPhysType = project(fields, targetFormat); switch (format) { case SCALAR: return Pair.of(parameter.getType(), ImmutableList.of(parameter)); default: return Pair.of(targetPhysType.getJavaRowType(), fieldReferences(parameter, fields)); } }
public Expression generateSelector( ParameterExpression parameter, List<Integer> fields, JavaRowFormat targetFormat) { // Optimize target format switch (fields.size()) { case 0: targetFormat = JavaRowFormat.LIST; break; case 1: targetFormat = JavaRowFormat.SCALAR; break; } final PhysType targetPhysType = project(fields, targetFormat); switch (format) { case SCALAR: return Expressions.call(BuiltInMethod.IDENTITY_SELECTOR.method); default: return Expressions.lambda(Function1.class, targetPhysType.record(fieldReferences(parameter, fields)), parameter); } }
public Expression generateSelector( ParameterExpression parameter, List<Integer> fields, JavaRowFormat targetFormat) { // Optimize target format switch (fields.size()) { case 0: targetFormat = JavaRowFormat.LIST; break; case 1: targetFormat = JavaRowFormat.SCALAR; break; } final PhysType targetPhysType = project(fields, targetFormat); switch (format) { case SCALAR: return Expressions.call(BuiltInMethod.IDENTITY_SELECTOR.method); default: return Expressions.lambda(Function1.class, targetPhysType.record(fieldReferences(parameter, fields)), parameter); } }