Skip to content
This repository has been archived by the owner on Aug 2, 2022. It is now read-only.

Support SELECT DISTINCT in new SQL engine #833

Prev Previous commit
Next Next commit
Merge branch 'develop' into support-distinct-in-new-engine
  • Loading branch information
dai-chen committed Nov 17, 2020
commit a3e8a192b7ef03a3faccf47a1f6a9d62fb00d3ce
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,16 @@ public void canParseDistinctClause() {
assertNotNull(parser.parse("SELECT DISTINCT name, balance FROM test"));
}

@Test
public void canParseCaseStatement() {
assertNotNull(parser.parse("SELECT CASE WHEN age > 30 THEN 'age1' ELSE 'age2' END FROM test"));
assertNotNull(parser.parse("SELECT CASE WHEN age > 30 THEN 'age1' "
+ " WHEN age < 50 THEN 'age2' "
+ " ELSE 'age3' END FROM test"));
assertNotNull(parser.parse("SELECT CASE age WHEN 30 THEN 'age1' ELSE 'age2' END FROM test"));
assertNotNull(parser.parse("SELECT CASE age WHEN 30 THEN 'age1' END FROM test"));
}

@Test
public void canNotParseAggregateFunctionWithWrongArgument() {
assertThrows(SyntaxCheckException.class, () -> parser.parse("SELECT SUM() FROM test"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,31 @@ public void can_build_select_all_clause() {
);
}

@Test
public void can_build_from_subquery() {
assertEquals(
project(
filter(
relationSubquery(
project(
relation("test"),
alias("firstname", qualifiedName("firstname"), "first"),
alias("lastname", qualifiedName("lastname"), "last")
),
"a"
),
function(">", qualifiedName("age"), intLiteral(20))
),
alias("a.first", qualifiedName("a", "first")),
alias("last", qualifiedName("last"))),
buildAST(
"SELECT a.first, last FROM ("
+ "SELECT firstname AS first, lastname AS last FROM test"
+ ") AS a where age > 20"
)
);
}

private UnresolvedPlan buildAST(String query) {
ParseTree parseTree = parser.parse(query);
return parseTree.accept(new AstBuilder(query));
Expand Down
You are viewing a condensed version of this merge commit. You can view the full changes here.