@Test public void testRewriteWithIdentifierExpansion() { SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(true); tester.checkRewrite( validator, "select * from dept", "SELECT `DEPT`.`DEPTNO`, `DEPT`.`NAME`\n" + "FROM `CATALOG`.`SALES`.`DEPT` AS `DEPT`"); }
/** Test case for * <a href="https://issues.apache.org/jira/browse/CALCITE-1238">[CALCITE-1238] * Unparsing LIMIT without ORDER BY after validation</a>. */ @Test public void testRewriteWithLimitWithoutOrderBy() { SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(false); final String sql = "select name from dept limit 2"; final String expected = "SELECT `NAME`\n" + "FROM `DEPT`\n" + "FETCH NEXT 2 ROWS ONLY"; tester.checkRewrite(validator, sql, expected); }
@Test public void testRewriteWithOffsetWithoutOrderBy() { SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(false); final String sql = "select name from dept offset 2"; final String expected = "SELECT `NAME`\n" + "FROM `DEPT`\n" + "OFFSET 2 ROWS"; tester.checkRewrite(validator, sql, expected); }
@Test public void testRewriteWithIdentifierExpansion() { SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(true); tester.checkRewrite( validator, "select * from dept", "SELECT `DEPT`.`DEPTNO`, `DEPT`.`NAME`\n" + "FROM `CATALOG`.`SALES`.`DEPT` AS `DEPT`"); }
@Test public void testRewriteWithoutIdentifierExpansion() { SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(false); tester.checkRewrite( validator, "select * from dept", "SELECT *\n" + "FROM `DEPT`"); }
@Test public void testRewriteWithOffsetWithoutOrderBy() { SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(false); final String sql = "select name from dept offset 2"; final String expected = "SELECT `NAME`\n" + "FROM `DEPT`\n" + "OFFSET 2 ROWS"; tester.checkRewrite(validator, sql, expected); }
@Test public void testRewriteWithoutIdentifierExpansion() { SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(false); tester.checkRewrite( validator, "select * from dept", "SELECT *\n" + "FROM `DEPT`"); }
@Test public void testRewriteWithLimitWithDynamicParameters() { SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(false); final String sql = "select name from dept offset ? rows fetch next ? rows only"; final String expected = "SELECT `NAME`\n" + "FROM `DEPT`\n" + "OFFSET ? ROWS\n" + "FETCH NEXT ? ROWS ONLY"; tester.checkRewrite(validator, sql, expected); }
/** Test case for * <a href="https://issues.apache.org/jira/browse/CALCITE-1238">[CALCITE-1238] * Unparsing LIMIT without ORDER BY after validation</a>. */ @Test public void testRewriteWithLimitWithoutOrderBy() { SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(false); final String sql = "select name from dept limit 2"; final String expected = "SELECT `NAME`\n" + "FROM `DEPT`\n" + "FETCH NEXT 2 ROWS ONLY"; tester.checkRewrite(validator, sql, expected); }
@Test public void testRewriteWithLimitWithDynamicParameters() { SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(false); final String sql = "select name from dept offset ? rows fetch next ? rows only"; final String expected = "SELECT `NAME`\n" + "FROM `DEPT`\n" + "OFFSET ? ROWS\n" + "FETCH NEXT ? ROWS ONLY"; tester.checkRewrite(validator, sql, expected); }
@Test public void testRewriteWithUnionFetchWithoutOrderBy() { SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(false); final String sql = "select name from dept union all select name from dept limit 2"; final String expected = "SELECT *\n" + "FROM (SELECT `NAME`\n" + "FROM `DEPT`\n" + "UNION ALL\n" + "SELECT `NAME`\n" + "FROM `DEPT`)\n" + "FETCH NEXT 2 ROWS ONLY"; tester.checkRewrite(validator, sql, expected); }
@Test public void testRewriteWithUnionFetchWithoutOrderBy() { SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(false); final String sql = "select name from dept union all select name from dept limit 2"; final String expected = "SELECT *\n" + "FROM (SELECT `NAME`\n" + "FROM `DEPT`\n" + "UNION ALL\n" + "SELECT `NAME`\n" + "FROM `DEPT`)\n" + "FETCH NEXT 2 ROWS ONLY"; tester.checkRewrite(validator, sql, expected); }
@Test public void testRewriteWithColumnReferenceExpansion() { // The names in the ORDER BY clause are not qualified. // This is because ORDER BY references columns in the SELECT clause // in preference to columns in tables in the FROM clause. SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(true); validator.setColumnReferenceExpansion(true); tester.checkRewrite( validator, "select name from dept where name = 'Moonracer' group by name" + " having sum(deptno) > 3 order by name", "SELECT `DEPT`.`NAME`\n" + "FROM `CATALOG`.`SALES`.`DEPT` AS `DEPT`\n" + "WHERE `DEPT`.`NAME` = 'Moonracer'\n" + "GROUP BY `DEPT`.`NAME`\n" + "HAVING SUM(`DEPT`.`DEPTNO`) > 3\n" + "ORDER BY `NAME`"); }
@Test public void testRewriteWithColumnReferenceExpansion() { // The names in the ORDER BY clause are not qualified. // This is because ORDER BY references columns in the SELECT clause // in preference to columns in tables in the FROM clause. SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(true); validator.setColumnReferenceExpansion(true); tester.checkRewrite( validator, "select name from dept where name = 'Moonracer' group by name" + " having sum(deptno) > 3 order by name", "SELECT `DEPT`.`NAME`\n" + "FROM `CATALOG`.`SALES`.`DEPT` AS `DEPT`\n" + "WHERE `DEPT`.`NAME` = 'Moonracer'\n" + "GROUP BY `DEPT`.`NAME`\n" + "HAVING SUM(`DEPT`.`DEPTNO`) > 3\n" + "ORDER BY `NAME`"); }
@Test public void testRewriteWithColumnReferenceExpansionAndFromAlias() { // In the ORDER BY clause, 'ename' is not qualified but 'deptno' and 'sal' // are. This is because 'ename' appears as an alias in the SELECT clause. // 'sal' is qualified in the ORDER BY clause, so remains qualified. SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(true); validator.setColumnReferenceExpansion(true); tester.checkRewrite( validator, "select ename, sal from (select * from emp) as e" + " where ename = 'Moonracer' group by ename, deptno, sal" + " having sum(deptno) > 3 order by ename, deptno, e.sal", "SELECT `E`.`ENAME`, `E`.`SAL`\n" + "FROM (SELECT `EMP`.`EMPNO`, `EMP`.`ENAME`, `EMP`.`JOB`," + " `EMP`.`MGR`, `EMP`.`HIREDATE`, `EMP`.`SAL`, `EMP`.`COMM`," + " `EMP`.`DEPTNO`, `EMP`.`SLACKER`\n" + "FROM `CATALOG`.`SALES`.`EMP` AS `EMP`) AS `E`\n" + "WHERE `E`.`ENAME` = 'Moonracer'\n" + "GROUP BY `E`.`ENAME`, `E`.`DEPTNO`, `E`.`SAL`\n" + "HAVING SUM(`E`.`DEPTNO`) > 3\n" + "ORDER BY `ENAME`, `E`.`DEPTNO`, `E`.`SAL`"); }
@Test public void testRewriteWithColumnReferenceExpansionAndFromAlias() { // In the ORDER BY clause, 'ename' is not qualified but 'deptno' and 'sal' // are. This is because 'ename' appears as an alias in the SELECT clause. // 'sal' is qualified in the ORDER BY clause, so remains qualified. SqlValidator validator = tester.getValidator(); validator.setIdentifierExpansion(true); validator.setColumnReferenceExpansion(true); tester.checkRewrite( validator, "select ename, sal from (select * from emp) as e" + " where ename = 'Moonracer' group by ename, deptno, sal" + " having sum(deptno) > 3 order by ename, deptno, e.sal", "SELECT `E`.`ENAME`, `E`.`SAL`\n" + "FROM (SELECT `EMP`.`EMPNO`, `EMP`.`ENAME`, `EMP`.`JOB`," + " `EMP`.`MGR`, `EMP`.`HIREDATE`, `EMP`.`SAL`, `EMP`.`COMM`," + " `EMP`.`DEPTNO`, `EMP`.`SLACKER`\n" + "FROM `CATALOG`.`SALES`.`EMP` AS `EMP`) AS `E`\n" + "WHERE `E`.`ENAME` = 'Moonracer'\n" + "GROUP BY `E`.`ENAME`, `E`.`DEPTNO`, `E`.`SAL`\n" + "HAVING SUM(`E`.`DEPTNO`) > 3\n" + "ORDER BY `ENAME`, `E`.`DEPTNO`, `E`.`SAL`"); }
new CalciteSqlValidator(operatorTable, catalogReader, typeFactory, conformance); validator.setIdentifierExpansion(true);
new CalciteSqlValidator(operatorTable, catalogReader, typeFactory, conformance); validator.setIdentifierExpansion(true);
validator.setIdentifierExpansion(true); validator.setDefaultNullCollation(config.defaultNullCollation());
validator.setIdentifierExpansion(true); validator.setDefaultNullCollation(config.defaultNullCollation());