Пример #1
0
 /**
  * Tests that planner throws an error if you pass to {@link
  * Planner#convert(org.eigenbase.sql.SqlNode)} a {@link org.eigenbase.sql.SqlNode} that has been
  * parsed but not validated.
  */
 @Test
 public void testConvertWithoutValidateFails() throws Exception {
   Planner planner = getPlanner();
   SqlNode parse = planner.parse("select * from \"emps\"");
   try {
     RelNode rel = planner.convert(parse);
     fail("expected error, got " + rel);
   } catch (IllegalArgumentException e) {
     assertThat(
         e.getMessage(), containsString("cannot move from STATE_3_PARSED to STATE_4_VALIDATED"));
   }
 }
Пример #2
0
  @Test
  public void testParseAndConvert() throws Exception {
    Planner planner = getPlanner();
    SqlNode parse = planner.parse("select * from \"emps\" where \"name\" like '%e%'");
    assertThat(
        parse.toString(), equalTo("SELECT *\n" + "FROM `emps`\n" + "WHERE `name` LIKE '%e%'"));

    SqlNode validate = planner.validate(parse);
    RelNode rel = planner.convert(validate);
    assertThat(
        toString(rel),
        equalTo(
            "ProjectRel(empid=[$0], deptno=[$1], name=[$2], salary=[$3], commission=[$4])\n"
                + "  FilterRel(condition=[LIKE($2, '%e%')])\n"
                + "    EnumerableTableAccessRel(table=[[hr, emps]])\n"));
  }
Пример #3
0
 /** Unit test that parses, validates, converts and plans. */
 @Test
 public void testPlan() throws Exception {
   RuleSet ruleSet =
       RuleSets.ofList(
           MergeFilterRule.INSTANCE,
           JavaRules.ENUMERABLE_FILTER_RULE,
           JavaRules.ENUMERABLE_PROJECT_RULE);
   Planner planner = getPlanner(ruleSet);
   SqlNode parse = planner.parse("select * from \"emps\"");
   SqlNode validate = planner.validate(parse);
   RelNode convert = planner.convert(validate);
   RelTraitSet traitSet = planner.getEmptyTraitSet().replace(EnumerableConvention.INSTANCE);
   RelNode transform = planner.transform(0, traitSet, convert);
   assertThat(
       toString(transform),
       equalTo(
           "EnumerableProjectRel(empid=[$0], deptno=[$1], name=[$2], salary=[$3], commission=[$4])\n"
               + "  EnumerableTableAccessRel(table=[[hr, emps]])\n"));
 }