Example #1
0
  @Test
  public final void testUnionClause() {
    ParseTree tree = analyzer.parse(setClauses[0]).getParseTree();
    assertEquals(StatementType.UNION, tree.getType());
    SetStmt union = (SetStmt) tree;
    assertEquals(StatementType.SELECT, union.getLeftTree().getType());
    assertEquals(StatementType.SELECT, union.getRightTree().getType());
    QueryBlock left = (QueryBlock) union.getLeftTree();
    assertEquals("student", left.getFromTables()[0].getTableName());
    QueryBlock right = (QueryBlock) union.getRightTree();
    assertEquals("branch", right.getFromTables()[0].getTableName());

    // multiple set statements
    tree = analyzer.parse(setClauses[1]).getParseTree();
    assertEquals(StatementType.UNION, tree.getType());
    union = (SetStmt) tree;
    assertEquals(StatementType.SELECT, union.getLeftTree().getType());
    assertEquals(StatementType.INTERSECT, union.getRightTree().getType());
    left = (QueryBlock) union.getLeftTree();
    assertEquals("student", left.getFromTables()[0].getTableName());
    SetStmt rightSet = (SetStmt) union.getRightTree();
    left = (QueryBlock) rightSet.getLeftTree();
    assertEquals("branch", left.getFromTables()[0].getTableName());
    right = (QueryBlock) rightSet.getRightTree();
    assertEquals("b", right.getFromTables()[0].getAlias());
  }
Example #2
0
 @Test
 public final void testEmptyGroupSetStatement() {
   ParseTree tree = analyzer.parse(GROUP_BY[4]).getParseTree();
   assertEquals(StatementType.SELECT, tree.getType());
   QueryBlock block = (QueryBlock) tree;
   assertTrue(block.hasGroupbyClause());
   assertTrue(block.getGroupByClause().isEmptyGroupSet());
 }
Example #3
0
 @Test
 public final void testRollUpStatement() {
   ParseTree tree = analyzer.parse(GROUP_BY[2]).getParseTree();
   assertEquals(StatementType.SELECT, tree.getType());
   QueryBlock block = (QueryBlock) tree;
   assertTrue(block.hasGroupbyClause());
   assertEquals(1, block.getGroupByClause().getGroupSet().size());
   assertEquals(GroupType.ROLLUP, block.getGroupByClause().getGroupSet().get(0).getType());
   List<GroupElement> groups = block.getGroupByClause().getGroupSet();
   assertEquals("people.name", groups.get(0).getColumns()[0].getQualifiedName());
   assertEquals("people.age", groups.get(0).getColumns()[1].getQualifiedName());
 }
Example #4
0
 @Test
 public final void testGroupByStatement() {
   ParseTree tree = analyzer.parse(GROUP_BY[0]).getParseTree();
   assertEquals(StatementType.SELECT, tree.getType());
   QueryBlock block = (QueryBlock) tree;
   assertTrue(block.hasGroupbyClause());
   assertEquals(1, block.getGroupByClause().getGroupSet().size());
   assertEquals(
       "age", block.getGroupByClause().getGroupSet().get(0).getColumns()[0].getColumnName());
   assertTrue(block.hasHavingCond());
   assertEquals(Type.GTH, block.getHavingCond().getType());
 }
Example #5
0
 @Test
 public void testCaseWhen() {
   ParseTree tree =
       analyzer
           .parse(
               "select case when p_type like 'PROMO%' then l_extendedprice * (1 - l_discount) "
                   + "when p_type = 'MOCC' then l_extendedprice - 100 else 0 end as cond from lineitem, part")
           .getParseTree();
   assertEquals(StatementType.SELECT, tree.getType());
   QueryBlock block = (QueryBlock) tree;
   assertTrue(block.getTargetList()[0].hasAlias());
   assertEquals("cond", block.getTargetList()[0].getAlias());
   assertEquals(DataType.DOUBLE, block.getTargetList()[0].getEvalTree().getValueType()[0]);
 }
Example #6
0
  @Test
  public final void testSetQulaifier() {
    ParseTree tree = analyzer.parse(setQualifier[0]).getParseTree();
    assertEquals(StatementType.SELECT, tree.getType());
    QueryBlock block = (QueryBlock) tree;
    assertFalse(block.isDistinct());

    tree = analyzer.parse(setQualifier[1]).getParseTree();
    assertEquals(StatementType.SELECT, tree.getType());
    block = (QueryBlock) tree;
    assertTrue(block.isDistinct());

    tree = analyzer.parse(setQualifier[2]).getParseTree();
    assertEquals(StatementType.SELECT, tree.getType());
    block = (QueryBlock) tree;
    assertFalse(block.isDistinct());
  }
Example #7
0
 @Test
 public final void testMixedGroupByStatement() {
   ParseTree tree = analyzer.parse(GROUP_BY[3]).getParseTree();
   assertEquals(StatementType.SELECT, tree.getType());
   QueryBlock block = (QueryBlock) tree;
   assertTrue(block.hasGroupbyClause());
   assertEquals(3, block.getGroupByClause().getGroupSet().size());
   Iterator<GroupElement> it = block.getGroupByClause().getGroupSet().iterator();
   GroupElement group = it.next();
   assertEquals(GroupType.CUBE, group.getType());
   assertEquals("people.name", group.getColumns()[0].getQualifiedName());
   group = it.next();
   assertEquals(GroupType.ROLLUP, group.getType());
   assertEquals("people.age", group.getColumns()[0].getQualifiedName());
   group = it.next();
   assertEquals(GroupType.GROUPBY, group.getType());
   assertEquals("people.id", group.getColumns()[0].getQualifiedName());
 }