public String convertColumn(String column, String originQuote) { String converted = column.replace(originQuote, ""); try { SqlNode sqlNode = SqlParser.create(converted).parseExpression(); sqlNode = sqlNode.accept(sqlNodeConverter); converted = sqlWriter.format(sqlNode); } catch (Throwable e) { logger.error("Failed to default convert Column, will use the input: {}", column, e); } finally { sqlWriter.reset(); } return converted; }
try { SqlParser sqlParser = SqlParser.create(function.getExpression()); SqlNode parsed = sqlParser.parseExpression(); if (parsed instanceof SqlCall || parsed instanceof SqlIdentifier) { String name = parsed instanceof SqlCall ? ((SqlCall) parsed).getOperator().getName()
@Test public void testWindowCallParams() throws SqlParseException { SqlParser sqlParser1 = SqlParser.create("STDDEV_POP($0) OVER($1)"); SqlNode sqlPattern = sqlParser1.parseExpression(); SqlParser sqlParser2 = SqlParser.create("STDDEV_POP(C1) OVER (ORDER BY C1)"); SqlNode sqlCall = sqlParser2.parseExpression(); SqlParamsFinder sqlParamsFinder = SqlParamsFinder.newInstance((SqlCall)sqlPattern, (SqlCall)sqlCall, true); Map<Integer, SqlNode> paramNodes = sqlParamsFinder.getParamNodes(); Assert.assertEquals("C1", paramNodes.get(0).toString()); Assert.assertEquals("(ORDER BY `C1`)", paramNodes.get(1).toString()); Assert.assertTrue(paramNodes.get(1) instanceof SqlWindow); } }
@Test public void testParamFinder() throws SqlParseException { SqlParser sqlParser1 = SqlParser.create("POWER($0, $1) + AVG(LN($3)) + EXP($5)"); SqlNode sqlPattern = sqlParser1.parseExpression(); SqlParser sqlParser2 = SqlParser.create("POWER(3, POWER(2, POWER(2, 3))) + AVG(LN(EXP(4))) + EXP(CAST('2018-03-22' AS DATE))"); SqlNode sqlCall = sqlParser2.parseExpression(); SqlParamsFinder sqlParamsFinder = new SqlParamsFinder((SqlCall)sqlPattern, (SqlCall)sqlCall); Map<Integer, SqlNode> paramNodes = sqlParamsFinder.getParamNodes(); Assert.assertEquals("3", paramNodes.get(0).toString()); Assert.assertEquals("POWER(2, POWER(2, 3))", paramNodes.get(1).toString()); Assert.assertEquals("EXP(4)", paramNodes.get(3).toString()); Assert.assertEquals("CAST('2018-03-22' AS DATE)", paramNodes.get(5).toString()); }
public String convertColumn(String column, String originQuote) { String converted = column.replace(originQuote, ""); try { SqlNode sqlNode = SqlParser.create(converted).parseExpression(); sqlNode = sqlNode.accept(sqlNodeConverter); converted = sqlWriter.format(sqlNode); } catch (Throwable e) { logger.error("Failed to default convert Column, will use the input: {}", column, e); } finally { sqlWriter.reset(); } return converted; }
protected SqlNode parseExpressionAndHandleEx(String sql) { final SqlNode sqlNode; try { sqlNode = getSqlParser(sql).parseExpression(); } catch (SqlParseException e) { throw new RuntimeException("Error while parsing expression: " + sql, e); } return sqlNode; }
protected SqlNode parseExpressionAndHandleEx(String sql) { final SqlNode sqlNode; try { sqlNode = getSqlParser(sql).parseExpression(); } catch (SqlParseException e) { throw new RuntimeException("Error while parsing expression: " + sql, e); } return sqlNode; }
try { SqlParser sqlParser = SqlParser.create(function.getExpression()); SqlNode parsed = sqlParser.parseExpression(); if (parsed instanceof SqlCall || parsed instanceof SqlIdentifier) { String name = parsed instanceof SqlCall ? ((SqlCall) parsed).getOperator().getName()
/** * Tests that an expression throws an exception which matches the given * pattern. */ public void checkExpFails( String sql, String expectedMsgPattern) { SqlParserUtil.StringAndPos sap = SqlParserUtil.findPos(sql); Throwable thrown = null; try { final SqlNode sqlNode = getSqlParser(sap.sql).parseExpression(); Util.discard(sqlNode); } catch (Throwable ex) { thrown = ex; } SqlValidatorTestCase.checkEx(thrown, expectedMsgPattern, sap); } }
/** * Tests that an expression throws an exception which matches the given * pattern. */ public void checkExpFails( String sql, String expectedMsgPattern) { SqlParserUtil.StringAndPos sap = SqlParserUtil.findPos(sql); Throwable thrown = null; try { final SqlNode sqlNode = getSqlParser(sap.sql).parseExpression(); Util.discard(sqlNode); } catch (Throwable ex) { thrown = ex; } SqlValidatorTestCase.checkEx(thrown, expectedMsgPattern, sap); } }