Search in sources :

Example 11 with JavaTypeFactoryImpl

use of org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.jdbc.JavaTypeFactoryImpl in project calcite by apache.

the class RexProgramTest method setUp.

@Before
public void setUp() {
    typeFactory = new JavaTypeFactoryImpl(RelDataTypeSystem.DEFAULT);
    rexBuilder = new RexBuilder(typeFactory);
    RexExecutor executor = new RexExecutorImpl(new DummyTestDataContext());
    simplify = new RexSimplify(rexBuilder, RelOptPredicateList.EMPTY, false, executor);
    trueLiteral = rexBuilder.makeLiteral(true);
    falseLiteral = rexBuilder.makeLiteral(false);
    final RelDataType intType = typeFactory.createSqlType(SqlTypeName.INTEGER);
    nullLiteral = rexBuilder.makeNullLiteral(intType);
    unknownLiteral = rexBuilder.makeNullLiteral(trueLiteral.getType());
}
Also used : RexExecutorImpl(org.apache.calcite.rex.RexExecutorImpl) RexSimplify(org.apache.calcite.rex.RexSimplify) JavaTypeFactoryImpl(org.apache.calcite.jdbc.JavaTypeFactoryImpl) RexExecutor(org.apache.calcite.rex.RexExecutor) RexBuilder(org.apache.calcite.rex.RexBuilder) RelDataType(org.apache.calcite.rel.type.RelDataType) Before(org.junit.Before)

Example 12 with JavaTypeFactoryImpl

use of org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.jdbc.JavaTypeFactoryImpl in project calcite by apache.

the class RexExecutorImpl method compile.

private String compile(RexBuilder rexBuilder, List<RexNode> constExps, RexToLixTranslator.InputGetter getter, RelDataType rowType) {
    final RexProgramBuilder programBuilder = new RexProgramBuilder(rowType, rexBuilder);
    for (RexNode node : constExps) {
        programBuilder.addProject(node, "c" + programBuilder.getProjectList().size());
    }
    final JavaTypeFactoryImpl javaTypeFactory = new JavaTypeFactoryImpl(rexBuilder.getTypeFactory().getTypeSystem());
    final BlockBuilder blockBuilder = new BlockBuilder();
    final ParameterExpression root0_ = Expressions.parameter(Object.class, "root0");
    final ParameterExpression root_ = DataContext.ROOT;
    blockBuilder.add(Expressions.declare(Modifier.FINAL, root_, Expressions.convert_(root0_, DataContext.class)));
    final List<Expression> expressions = RexToLixTranslator.translateProjects(programBuilder.getProgram(), javaTypeFactory, blockBuilder, null, root_, getter, null);
    blockBuilder.add(Expressions.return_(null, Expressions.newArrayInit(Object[].class, expressions)));
    final MethodDeclaration methodDecl = Expressions.methodDecl(Modifier.PUBLIC, Object[].class, BuiltInMethod.FUNCTION1_APPLY.method.getName(), ImmutableList.of(root0_), blockBuilder.toBlock());
    String code = Expressions.toString(methodDecl);
    if (CalcitePrepareImpl.DEBUG) {
        Util.debugCode(System.out, code);
    }
    return code;
}
Also used : MethodCallExpression(org.apache.calcite.linq4j.tree.MethodCallExpression) IndexExpression(org.apache.calcite.linq4j.tree.IndexExpression) Expression(org.apache.calcite.linq4j.tree.Expression) ParameterExpression(org.apache.calcite.linq4j.tree.ParameterExpression) JavaTypeFactoryImpl(org.apache.calcite.jdbc.JavaTypeFactoryImpl) MethodDeclaration(org.apache.calcite.linq4j.tree.MethodDeclaration) ParameterExpression(org.apache.calcite.linq4j.tree.ParameterExpression) BlockBuilder(org.apache.calcite.linq4j.tree.BlockBuilder)

Example 13 with JavaTypeFactoryImpl

use of org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.jdbc.JavaTypeFactoryImpl in project calcite by apache.

the class RexExecutorImpl method getExecutable.

/**
 * Creates an {@link RexExecutable} that allows to apply the
 * generated code during query processing (filter, projection).
 *
 * @param rexBuilder Rex builder
 * @param exps Expressions
 * @param rowType describes the structure of the input row.
 */
public RexExecutable getExecutable(RexBuilder rexBuilder, List<RexNode> exps, RelDataType rowType) {
    final JavaTypeFactoryImpl typeFactory = new JavaTypeFactoryImpl(rexBuilder.getTypeFactory().getTypeSystem());
    final InputGetter getter = new DataContextInputGetter(rowType, typeFactory);
    final String code = compile(rexBuilder, exps, getter, rowType);
    return new RexExecutable(code, "generated Rex code");
}
Also used : InputGetter(org.apache.calcite.adapter.enumerable.RexToLixTranslator.InputGetter) JavaTypeFactoryImpl(org.apache.calcite.jdbc.JavaTypeFactoryImpl)

Example 14 with JavaTypeFactoryImpl

use of org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.jdbc.JavaTypeFactoryImpl in project calcite by apache.

the class ArrayTableTest method testLoadSorted2.

/**
 * As {@link #testLoadSorted()} but column #1 is the unique column, not
 * column #0. The algorithm needs to go back and permute the values of
 * column #0 after it discovers that column #1 is unique and sorts by it.
 */
@Test
public void testLoadSorted2() {
    final JavaTypeFactoryImpl typeFactory = new JavaTypeFactoryImpl(RelDataTypeSystem.DEFAULT);
    final RelDataType rowType = typeFactory.builder().add("deptno", typeFactory.createType(int.class)).add("empid", typeFactory.createType(int.class)).add("name", typeFactory.createType(String.class)).build();
    final Enumerable<Object[]> enumerable = Linq4j.asEnumerable(Arrays.asList(new Object[] { 10, 100, "Bill" }, new Object[] { 20, 200, "Eric" }, new Object[] { 30, 150, "Sebastian" }, new Object[] { 10, 160, "Theodore" }));
    final ColumnLoader<Object[]> loader = new ColumnLoader<Object[]>(typeFactory, enumerable, RelDataTypeImpl.proto(rowType), null);
    // Note that values have been sorted with {20, 200, Eric} last because the
    // value 200 is the highest value of empid, the unique column.
    checkColumn(loader.representationValues.get(0), ArrayTable.RepresentationType.BIT_SLICED_PRIMITIVE_ARRAY, "Column(representation=BitSlicedPrimitiveArray(ordinal=0, bitCount=5, primitive=INT, signed=false), value=[10, 30, 10, 20, 0, 0, 0, 0, 0, 0, 0, 0])");
    checkColumn(loader.representationValues.get(1), ArrayTable.RepresentationType.BIT_SLICED_PRIMITIVE_ARRAY, "Column(representation=BitSlicedPrimitiveArray(ordinal=1, bitCount=8, primitive=INT, signed=false), value=[100, 150, 160, 200, 0, 0, 0, 0])");
    checkColumn(loader.representationValues.get(2), ArrayTable.RepresentationType.OBJECT_ARRAY, "Column(representation=ObjectArray(ordinal=2), value=[Bill, Sebastian, Theodore, Eric])");
}
Also used : JavaTypeFactoryImpl(org.apache.calcite.jdbc.JavaTypeFactoryImpl) RelDataType(org.apache.calcite.rel.type.RelDataType) Test(org.junit.Test)

Example 15 with JavaTypeFactoryImpl

use of org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.jdbc.JavaTypeFactoryImpl in project calcite by apache.

the class ArrayTableTest method testLoadSorted.

@Test
public void testLoadSorted() {
    final JavaTypeFactoryImpl typeFactory = new JavaTypeFactoryImpl(RelDataTypeSystem.DEFAULT);
    final RelDataType rowType = typeFactory.builder().add("empid", typeFactory.createType(int.class)).add("deptno", typeFactory.createType(int.class)).add("name", typeFactory.createType(String.class)).build();
    final Enumerable<Object[]> enumerable = Linq4j.asEnumerable(Arrays.asList(new Object[] { 100, 10, "Bill" }, new Object[] { 200, 20, "Eric" }, new Object[] { 150, 10, "Sebastian" }, new Object[] { 160, 10, "Theodore" }));
    final ColumnLoader<Object[]> loader = new ColumnLoader<Object[]>(typeFactory, enumerable, RelDataTypeImpl.proto(rowType), null);
    checkColumn(loader.representationValues.get(0), ArrayTable.RepresentationType.BIT_SLICED_PRIMITIVE_ARRAY, "Column(representation=BitSlicedPrimitiveArray(ordinal=0, bitCount=8, primitive=INT, signed=false), value=[100, 150, 160, 200, 0, 0, 0, 0])");
    checkColumn(loader.representationValues.get(1), ArrayTable.RepresentationType.BIT_SLICED_PRIMITIVE_ARRAY, "Column(representation=BitSlicedPrimitiveArray(ordinal=1, bitCount=5, primitive=INT, signed=false), value=[10, 10, 10, 20, 0, 0, 0, 0, 0, 0, 0, 0])");
    checkColumn(loader.representationValues.get(2), ArrayTable.RepresentationType.OBJECT_ARRAY, "Column(representation=ObjectArray(ordinal=2), value=[Bill, Sebastian, Theodore, Eric])");
}
Also used : JavaTypeFactoryImpl(org.apache.calcite.jdbc.JavaTypeFactoryImpl) RelDataType(org.apache.calcite.rel.type.RelDataType) Test(org.junit.Test)

Aggregations

JavaTypeFactoryImpl (org.apache.calcite.jdbc.JavaTypeFactoryImpl)46 RelDataType (org.apache.calcite.rel.type.RelDataType)22 Test (org.junit.Test)18 JavaTypeFactory (org.apache.calcite.adapter.java.JavaTypeFactory)17 Table (org.apache.calcite.schema.Table)16 RexBuilder (org.apache.calcite.rex.RexBuilder)13 SchemaPlus (org.apache.calcite.schema.SchemaPlus)13 StreamableTable (org.apache.calcite.schema.StreamableTable)12 RelDataTypeField (org.apache.calcite.rel.type.RelDataTypeField)9 RelNode (org.apache.calcite.rel.RelNode)8 RelDataTypeFactory (org.apache.calcite.rel.type.RelDataTypeFactory)7 ArrayList (java.util.ArrayList)6 RelOptCluster (org.apache.calcite.plan.RelOptCluster)6 CompilerUtil (org.apache.storm.sql.compiler.CompilerUtil)6 BlockBuilder (org.apache.calcite.linq4j.tree.BlockBuilder)5 ParameterExpression (org.apache.calcite.linq4j.tree.ParameterExpression)5 SqlNode (org.apache.calcite.sql.SqlNode)5 Before (org.junit.Before)5 JavaTypeFactoryImpl (org.apache.beam.vendor.calcite.v1_28_0.org.apache.calcite.jdbc.JavaTypeFactoryImpl)4 RexToLixTranslator (org.apache.calcite.adapter.enumerable.RexToLixTranslator)4