ImmutableList.of( Pair.<Expression, PhysType>of( Expressions.field(context, BuiltInMethod.CONTEXT_VALUES.field), PhysTypeImpl.of(javaTypeFactory, inputRowType, Expressions.field(context, BuiltInMethod.CONTEXT_ROOT.field); final List<Expression> list = RexToLixTranslator.translateProjects(program, javaTypeFactory, builder,
public Expression visit(MemberExpression memberExpression, Expression expression) { return memberExpression.expression == expression ? memberExpression : Expressions.field(expression, memberExpression.field); }
public Expression record( Type javaRowClass, List<Expression> expressions) { switch (expressions.size()) { case 0: assert javaRowClass == Unit.class; return Expressions.field(null, javaRowClass, "INSTANCE"); default: return Expressions.new_(javaRowClass, expressions); } }
public Expression record( Type javaRowClass, List<Expression> expressions) { switch (expressions.size()) { case 0: assert javaRowClass == Unit.class; return Expressions.field(null, javaRowClass, "INSTANCE"); default: return Expressions.new_(javaRowClass, expressions); } }
public MemberExpression field(Expression expression, int field, Type fromType, Type fieldType) { final Type type = expression.getType(); if (type instanceof Types.RecordType) { Types.RecordType recordType = (Types.RecordType) type; Types.RecordField recordField = recordType.getRecordFields().get(field); return Expressions.field(expression, recordField.getDeclaringClass(), recordField.getName()); } else { return Expressions.field(expression, Types.nthField(field, type)); } } },
public MemberExpression field(Expression expression, int field, Type fromType, Type fieldType) { final Type type = expression.getType(); if (type instanceof Types.RecordType) { Types.RecordType recordType = (Types.RecordType) type; Types.RecordField recordField = recordType.getRecordFields().get(field); return Expressions.field(expression, recordField.getDeclaringClass(), recordField.getName()); } else { return Expressions.field(expression, Types.nthField(field, type)); } } },
@Override public Expression getExpression(SchemaPlus schema, String tableName, Class clazz) { return Expressions.field( schema.unwrap(ReflectiveSchema.class).getTargetExpression( schema.getParentSchema(), schema.getName()), field); } }
@Override public Expression getExpression(SchemaPlus schema, String tableName, Class clazz) { return Expressions.field( schema.unwrap(ReflectiveSchema.class).getTargetExpression( schema.getParentSchema(), schema.getName()), field); } }
ImmutableList.of( Pair.<Expression, PhysType>of( Expressions.field(context_, BuiltInMethod.CONTEXT_VALUES.field), PhysTypeImpl.of(javaTypeFactory, inputRowType, Expressions.field(context_, BuiltInMethod.CONTEXT_ROOT.field); final List<Expression> list = RexToLixTranslator.translateProjects(program, javaTypeFactory, builder,
private void declareParentAccumulator(List<Expression> initExpressions, BlockBuilder initBlock, PhysType accPhysType) { if (accPhysType.getJavaRowType() instanceof JavaTypeFactoryImpl.SyntheticRecordType) { // We have to initialize the SyntheticRecordType instance this way, to // avoid using a class constructor with too many parameters. final JavaTypeFactoryImpl.SyntheticRecordType synType = (JavaTypeFactoryImpl.SyntheticRecordType) accPhysType.getJavaRowType(); final ParameterExpression record0_ = Expressions.parameter(accPhysType.getJavaRowType(), "record0"); initBlock.add(Expressions.declare(0, record0_, null)); initBlock.add( Expressions.statement( Expressions.assign(record0_, Expressions.new_(accPhysType.getJavaRowType())))); List<Types.RecordField> fieldList = synType.getRecordFields(); for (int i = 0; i < initExpressions.size(); i++) { Expression right = initExpressions.get(i); initBlock.add( Expressions.statement( Expressions.assign( Expressions.field(record0_, fieldList.get(i)), right))); } initBlock.add(record0_); } else { initBlock.add(accPhysType.record(initExpressions)); } }
switch (expressions.size()) { case 0: return Expressions.field( null, FlatLists.class,
switch (expressions.size()) { case 0: return Expressions.field( null, FlatLists.class,
Expressions.lambda( Expressions.lessThan( Expressions.field( e, "empid"), Expressions.constant(160)), Expressions.lambda( Expressions.greaterThan( Expressions.field( e, "empid"), Expressions.constant(140)), Expressions.new_( Object[].class, Expressions.field( e, "empid"), Expressions.call( Expressions.field( e, "name"), "toUpperCase")),
Expressions.lambda( Expressions.lessThan( Expressions.field( e, "empid"), Expressions.constant(160)), Expressions.lambda( Expressions.greaterThan( Expressions.field( e, "empid"), Expressions.constant(140)), Expressions.new_( Object[].class, Expressions.field( e, "empid"), Expressions.call( Expressions.field( e, "name"), "toUpperCase")),
@Test public void testQueryProviderSingleColumn() throws Exception { Connection connection = CalciteAssert .that(CalciteAssert.Config.REGULAR).connect(); QueryProvider queryProvider = connection.unwrap(QueryProvider.class); ParameterExpression e = Expressions.parameter(Employee.class, "e"); // "Enumerable<T> asEnumerable(final T[] ts)" List<Integer> list = queryProvider.createQuery( Expressions.call( Expressions.call( Types.of(Enumerable.class, Employee.class), null, LINQ4J_AS_ENUMERABLE_METHOD, Expressions.constant(new JdbcTest.HrSchema().emps)), "asQueryable"), Employee.class) .select( Expressions.<Function1<Employee, Integer>>lambda( Expressions.field(e, "empid"), e)) .toList(); assertEquals(Arrays.asList(100, 200, 150, 110), list); }
@Test public void testQueryProviderSingleColumn() throws Exception { Connection connection = CalciteAssert .that(CalciteAssert.Config.REGULAR).connect(); QueryProvider queryProvider = connection.unwrap(QueryProvider.class); ParameterExpression e = Expressions.parameter(Employee.class, "e"); // "Enumerable<T> asEnumerable(final T[] ts)" List<Integer> list = queryProvider.createQuery( Expressions.call( Expressions.call( Types.of(Enumerable.class, Employee.class), null, LINQ4J_AS_ENUMERABLE_METHOD, Expressions.constant(new JdbcTest.HrSchema().emps)), "asQueryable"), Employee.class) .select( Expressions.<Function1<Employee, Integer>>lambda( Expressions.field(e, "empid"), e)) .toList(); assertEquals(Arrays.asList(100, 200, 150, 110), list); }
@Test public void testTableWhere() throws SQLException, ClassNotFoundException { final Connection connection = CalciteAssert.that(CalciteAssert.Config.JDBC_FOODMART).connect(); final CalciteConnection calciteConnection = connection.unwrap(CalciteConnection.class); final SchemaPlus rootSchema = calciteConnection.getRootSchema(); ParameterExpression c = Expressions.parameter(JdbcTest.Customer.class, "c"); String s = Schemas.queryable(Schemas.createDataContext(connection, rootSchema), rootSchema.getSubSchema("foodmart"), JdbcTest.Customer.class, "customer") .where( Expressions.lambda( Expressions.lessThan( Expressions.field(c, "customer_id"), Expressions.constant(5)), c)) .toList() .toString(); Util.discard(s); } }
@Test public void testTableWhere() throws SQLException, ClassNotFoundException { final Connection connection = CalciteAssert.that(CalciteAssert.Config.JDBC_FOODMART).connect(); final CalciteConnection calciteConnection = connection.unwrap(CalciteConnection.class); final SchemaPlus rootSchema = calciteConnection.getRootSchema(); ParameterExpression c = Expressions.parameter(JdbcTest.Customer.class, "c"); String s = Schemas.queryable(Schemas.createDataContext(connection, rootSchema), rootSchema.getSubSchema("foodmart"), JdbcTest.Customer.class, "customer") .where( Expressions.lambda( Expressions.lessThan( Expressions.field(c, "customer_id"), Expressions.constant(5)), c)) .toList() .toString(); Util.discard(s); } }