@Override public ResultSet executeQuery(String sql) throws SQLException { checkOpen(); CsvDriver.writeLog("CsvStatement:executeQuery() - sql= " + sql); /* * Close any previous ResultSet, as required by JDBC. */ try { if (lastResultSet != null) lastResultSet.close(); } finally { lastResultSet = null; multipleParsers = null; } SqlParser parser = new SqlParser(); try { parser.parse(sql); } catch (Exception e) { throw new SQLException(CsvResources.getString("syntaxError") + ": " + e.getMessage()); } return executeParsedQuery(parser); }
public void testWhere() throws Exception { ExpressionEvaluator evaluator = new ExpressionEvaluator(); String testSql = "select * from aaa where /*%if false*/ename = 'aaa'/*%end */"; SqlParser parser = new SqlParser(testSql); SqlNode sqlNode = parser.parse(); PreparedSql sql = new NodePreparedSqlBuilder( config, SqlKind.SELECT, "dummyPath", evaluator, SqlLogType.FORMATTED) .build(sqlNode, Function.identity()); assertEquals("select * from aaa", sql.getRawSql()); }
public void testWhere_embeddedVariable_orderBy() throws Exception { ExpressionEvaluator evaluator = new ExpressionEvaluator(); evaluator.add("embedded", new Value(String.class, "order by bbb")); String testSql = "select * from aaa where /*%if false*/ename = 'aaa'/*%end */ /*#embedded*/"; SqlParser parser = new SqlParser(testSql); SqlNode sqlNode = parser.parse(); PreparedSql sql = new NodePreparedSqlBuilder( config, SqlKind.SELECT, "dummyPath", evaluator, SqlLogType.FORMATTED) .build(sqlNode, Function.identity()); assertEquals("select * from aaa order by bbb", sql.getRawSql()); }
public void testEmbeddedVariable_blockComment() throws Exception { ExpressionEvaluator evaluator = new ExpressionEvaluator(); evaluator.add("name", new Value(String.class, "hoge")); evaluator.add("salary", new Value(BigDecimal.class, new BigDecimal(10000))); evaluator.add("orderBy", new Value(String.class, "aaa/*bbb")); String testSql = "select * from aaa where ename = /*name*/'aaa' and sal = /*salary*/-2000 /*#orderBy*/"; SqlParser parser = new SqlParser(testSql); SqlNode sqlNode = parser.parse(); try { new NodePreparedSqlBuilder( config, SqlKind.SELECT, "dummyPath", evaluator, SqlLogType.FORMATTED) .build(sqlNode, Function.identity()); fail(); } catch (JdbcException expected) { System.out.println(expected.getMessage()); assertEquals(Message.DOMA2123, expected.getMessageResource()); } }