Skip to content

Commit

Permalink
Set Calcite conformance to Lenient mode to lenient
Browse files Browse the repository at this point in the history
Allow ordinal group by and aliases.
  • Loading branch information
dwayneberry authored and asuhan committed Jul 8, 2017
1 parent 6cce4f0 commit 9738335
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 25 deletions.
2 changes: 1 addition & 1 deletion Tests/ExecuteTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -824,7 +824,7 @@ TEST(Select, OrderBy) {
v<int64_t>(rows.getRowAt(row_idx, 3, true)) == 301);
}
c("SELECT x, COUNT(distinct y) AS n FROM test GROUP BY x ORDER BY n DESC;", dt);
c("SELECT x, x, COUNT(*) AS val FROM test GROUP BY x HAVING val > 5 ORDER BY val DESC LIMIT 5;", dt);
c("SELECT x x1, x, COUNT(*) AS val FROM test GROUP BY x HAVING val > 5 ORDER BY val DESC LIMIT 5;", dt);
c("SELECT ufd, COUNT(*) n FROM test GROUP BY ufd, str ORDER BY ufd, n;", dt);
c("SELECT -x, COUNT(*) FROM test GROUP BY x ORDER BY x DESC;", dt);
c("SELECT real_str FROM test WHERE real_str LIKE '%real%' ORDER BY real_str ASC;", dt);
Expand Down
45 changes: 22 additions & 23 deletions java/calcite/src/main/java/com/mapd/calcite/parser/MapDParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ private Planner getPlanner() {
.setUnquotedCasing(Casing.UNCHANGED)
.setCaseSensitive(false)
.build())

.build();
return new MapDPlanner(config);
}
Expand Down Expand Up @@ -134,29 +133,29 @@ RelRoot queryToSqlNode(final String sql, final boolean legacy_syntax) throws Sql
SqlSelect validate_select = getSelectChild(validateR);

// Hide rowid from select * queries
if (legacy_syntax && is_select_star && validate_select != null) {
SqlNodeList proj_exprs = ((SqlSelect) validateR).getSelectList();
SqlNodeList new_proj_exprs = new SqlNodeList(proj_exprs.getParserPosition());
for (SqlNode proj_expr : proj_exprs) {
final SqlNode unaliased_proj_expr = getUnaliasedExpression(proj_expr);

if (unaliased_proj_expr instanceof SqlIdentifier) {
if ((((SqlIdentifier) unaliased_proj_expr).toString().toLowerCase()).endsWith(".rowid")) {
continue;
}
}
new_proj_exprs.add(proj_expr);
}
validate_select.setSelectList(new_proj_exprs);

// trick planner back into correct state for validate
planner.close();
// create a new one
planner = getPlanner();
processSQL(validateR.toSqlString(SqlDialect.CALCITE).toString(), false, planner);
// now validate the new modified SqlNode;
validateR = planner.validate(validateR);
if (legacy_syntax && is_select_star && validate_select != null) {
SqlNodeList proj_exprs = ((SqlSelect) validateR).getSelectList();
SqlNodeList new_proj_exprs = new SqlNodeList(proj_exprs.getParserPosition());
for (SqlNode proj_expr : proj_exprs) {
final SqlNode unaliased_proj_expr = getUnaliasedExpression(proj_expr);

if (unaliased_proj_expr instanceof SqlIdentifier) {
if ((((SqlIdentifier) unaliased_proj_expr).toString().toLowerCase()).endsWith(".rowid")) {
continue;
}
}
new_proj_exprs.add(proj_expr);
}
validate_select.setSelectList(new_proj_exprs);

// trick planner back into correct state for validate
planner.close();
// create a new one
planner = getPlanner();
processSQL(validateR.toSqlString(SqlDialect.CALCITE).toString(), false, planner);
// now validate the new modified SqlNode;
validateR = planner.validate(validateR);
}

RelRoot relR = planner.rel(validateR);
planner.close();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,8 @@ public SqlNode parse(final String sql) throws SqlParseException {
@Override
public SqlNode validate(SqlNode sqlNode) throws ValidationException {
ensure(State.STATE_3_PARSED);
final SqlConformance conformance = conformance();
// TODO MAT figure out correct way to pass conformace from planner config
final SqlConformance conformance = SqlConformanceEnum.LENIENT;
final CalciteCatalogReader catalogReader = createCatalogReader();
this.validator
= new CalciteSqlValidator(operatorTable, catalogReader, typeFactory,
Expand Down

0 comments on commit 9738335

Please sign in to comment.