/** Helper method that converts a bindable relational expression into a * record iterator. * * <p>Any bindable can be compiled; if its input is also bindable, it becomes * part of the same compilation unit. */ private static Enumerable<Object[]> help(DataContext dataContext, BindableRel rel) { return new Interpreter(dataContext, rel); }
/** Helper method that converts a bindable relational expression into a * record iterator. * * <p>Any bindable can be compiled; if its input is also bindable, it becomes * part of the same compilation unit. */ private static Enumerable<Object[]> help(DataContext dataContext, BindableRel rel) { return new Interpreter(dataContext, rel); }
public Enumerable<Object[]> bind(DataContext dataContext) { return new Interpreter(dataContext, getInput()); } }
/** Tests executing a simple plan using an interpreter. */ @Test public void testInterpretProjectFilterValues() throws Exception { SqlNode parse = planner.parse("select y, x\n" + "from (values (1, 'a'), (2, 'b'), (3, 'c')) as t(x, y)\n" + "where x > 1"); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[b, 2]", "[c, 3]"); }
/** Tests executing a simple plan using an interpreter. */ @Test public void testInterpretProjectFilterValues() throws Exception { SqlNode parse = planner.parse("select y, x\n" + "from (values (1, 'a'), (2, 'b'), (3, 'c')) as t(x, y)\n" + "where x > 1"); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[b, 2]", "[c, 3]"); }
/** Tests executing a simple plan using an interpreter. */ @Test public void testInterpretTable() throws Exception { SqlNode parse = planner.parse("select * from \"hr\".\"emps\" order by \"empid\""); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[100, 10, Bill, 10000.0, 1000]", "[110, 10, Theodore, 11500.0, 250]", "[150, 10, Sebastian, 7000.0, null]", "[200, 20, Eric, 8000.0, 500]"); }
/** Tests a plan where the sort field is projected away. */ @Test public void testInterpretOrder() throws Exception { final String sql = "select y\n" + "from (values (1, 'a'), (2, 'b'), (3, 'c')) as t(x, y)\n" + "order by -x"; SqlNode parse = planner.parse(sql); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).project(); final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[c]", "[b]", "[a]"); }
/** Tests a plan where the sort field is projected away. */ @Test public void testInterpretOrder() throws Exception { final String sql = "select y\n" + "from (values (1, 'a'), (2, 'b'), (3, 'c')) as t(x, y)\n" + "order by -x"; SqlNode parse = planner.parse(sql); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).project(); final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[c]", "[b]", "[a]"); }
@Test public void testAggregateCount() throws Exception { rootSchema.add("beatles", new ScannableTableTest.BeatlesTable()); SqlNode parse = planner.parse("select count(*) from \"beatles\""); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[4]"); }
/** Tests executing a plan on a single-column * {@link org.apache.calcite.schema.ScannableTable} using an interpreter. */ @Test public void testInterpretSimpleScannableTable() throws Exception { rootSchema.add("simple", new ScannableTableTest.SimpleTable()); SqlNode parse = planner.parse("select * from \"simple\" limit 2"); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[0]", "[10]"); }
@Test public void testAggregateMin() throws Exception { rootSchema.add("beatles", new ScannableTableTest.BeatlesTable()); SqlNode parse = planner.parse("select min(\"i\") from \"beatles\""); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[4]"); }
@Test public void testAggregateMin() throws Exception { rootSchema.add("beatles", new ScannableTableTest.BeatlesTable()); SqlNode parse = planner.parse("select min(\"i\") from \"beatles\""); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[4]"); }
@Test public void testAggregateCount() throws Exception { rootSchema.add("beatles", new ScannableTableTest.BeatlesTable()); SqlNode parse = planner.parse("select count(*) from \"beatles\""); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[4]"); }
@Test public void testAggregateMax() throws Exception { rootSchema.add("beatles", new ScannableTableTest.BeatlesTable()); SqlNode parse = planner.parse("select max(\"i\") from \"beatles\""); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[6]"); }
/** Tests executing a plan on a single-column * {@link org.apache.calcite.schema.ScannableTable} using an interpreter. */ @Test public void testInterpretSimpleScannableTable() throws Exception { rootSchema.add("simple", new ScannableTableTest.SimpleTable()); SqlNode parse = planner.parse("select * from \"simple\" limit 2"); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[0]", "[10]"); }
@Test public void testAggregateMax() throws Exception { rootSchema.add("beatles", new ScannableTableTest.BeatlesTable()); SqlNode parse = planner.parse("select max(\"i\") from \"beatles\""); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[6]"); }
/** Tests executing a UNION ALL query using an interpreter. */ @Test public void testInterpretUnionAll() throws Exception { rootSchema.add("simple", new ScannableTableTest.SimpleTable()); SqlNode parse = planner.parse("select * from \"simple\"\n" + "union all\n" + "select * from \"simple\"\n"); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[0]", "[10]", "[20]", "[30]", "[0]", "[10]", "[20]", "[30]"); }
/** Tests executing a UNION query using an interpreter. */ @Test public void testInterpretUnion() throws Exception { rootSchema.add("simple", new ScannableTableTest.SimpleTable()); SqlNode parse = planner.parse("select * from \"simple\"\n" + "union\n" + "select * from \"simple\"\n"); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[0]", "[10]", "[20]", "[30]"); } }
@Test public void testAggregateGroup() throws Exception { rootSchema.add("beatles", new ScannableTableTest.BeatlesTable()); SqlNode parse = planner.parse("select \"j\", count(*) from \"beatles\" group by \"j\""); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; final Interpreter interpreter = new Interpreter(dataContext, convert); assertRowsUnordered(interpreter, "[George, 1]", "[Paul, 1]", "[John, 1]", "[Ringo, 1]"); }
/** Tests executing a UNION query using an interpreter. */ @Test public void testInterpretUnion() throws Exception { rootSchema.add("simple", new ScannableTableTest.SimpleTable()); SqlNode parse = planner.parse("select * from \"simple\"\n" + "union\n" + "select * from \"simple\"\n"); SqlNode validate = planner.validate(parse); RelNode convert = planner.rel(validate).rel; final Interpreter interpreter = new Interpreter(dataContext, convert); assertRows(interpreter, "[0]", "[10]", "[20]", "[30]"); } }