public void test_0() throws Exception { String sql = "SELECT 1--1 from t where id = 1"; MySqlStatementParser parser = new MySqlStatementParser(sql); List<SQLStatement> statementList = parser.parseStatementList(); SQLStatement stmt = statementList.get(0); SQLSelectStatement selectStmt = (SQLSelectStatement) stmt; SQLSelect select = selectStmt.getSelect(); Assert.assertNotNull(select.getQuery()); MySqlSelectQueryBlock queryBlock = (MySqlSelectQueryBlock) select.getQuery(); Assert.assertNull(queryBlock.getOrderBy()); // print(statementList); Assert.assertEquals(1, statementList.size()); MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); stmt.accept(visitor); Assert.assertEquals(1, visitor.getTables().size()); Assert.assertEquals(1, visitor.getColumns().size()); Assert.assertEquals(1, visitor.getConditions().size()); Assert.assertEquals(0, visitor.getOrderByColumns().size()); Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t"))); String output = SQLUtils.toMySqlString(stmt); Assert.assertEquals( "SELECT 1 - -1" // + "\nFROM t" // + "\nWHERE id = 1", // output); }
public void test_0() throws Exception { String sql = "SELECT * FROM t_department WHERE name IN ('0000','4444') ORDER BY name ASC"; MySqlStatementParser parser = new MySqlStatementParser(sql); List<SQLStatement> statementList = parser.parseStatementList(); SQLStatement stmt = statementList.get(0); SQLSelectStatement selectStmt = (SQLSelectStatement) stmt; SQLSelect select = selectStmt.getSelect(); Assert.assertNotNull(select.getQuery()); MySqlSelectQueryBlock queryBlock = (MySqlSelectQueryBlock) select.getQuery(); Assert.assertNotNull(queryBlock.getOrderBy()); // print(statementList); Assert.assertEquals(1, statementList.size()); MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); stmt.accept(visitor); Assert.assertEquals(1, visitor.getTables().size()); Assert.assertEquals(2, visitor.getColumns().size()); Assert.assertEquals(1, visitor.getConditions().size()); Assert.assertEquals(1, visitor.getOrderByColumns().size()); Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_department"))); }
public void test_0() throws Exception { String sql = "SELECT `group`.* FROM `group` WHERE (group.group_id=159754)"; MySqlStatementParser parser = new MySqlStatementParser(sql); List<SQLStatement> statementList = parser.parseStatementList(); SQLStatement stmt = statementList.get(0); SQLSelectStatement selectStmt = (SQLSelectStatement) stmt; SQLSelect select = selectStmt.getSelect(); Assert.assertNotNull(select.getQuery()); MySqlSelectQueryBlock queryBlock = (MySqlSelectQueryBlock) select.getQuery(); Assert.assertNull(queryBlock.getOrderBy()); print(statementList); Assert.assertEquals(1, statementList.size()); MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); stmt.accept(visitor); Assert.assertEquals(1, visitor.getTables().size()); Assert.assertEquals(2, visitor.getColumns().size()); Assert.assertEquals(1, visitor.getConditions().size()); Assert.assertEquals(0, visitor.getOrderByColumns().size()); Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("group"))); }
public void test_0() throws Exception { String sql = "SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);"; MySqlStatementParser parser = new MySqlStatementParser(sql); List<SQLStatement> statementList = parser.parseStatementList(); SQLStatement stmt = statementList.get(0); SQLSelectStatement selectStmt = (SQLSelectStatement) stmt; SQLSelect select = selectStmt.getSelect(); Assert.assertNotNull(select.getQuery()); MySqlSelectQueryBlock queryBlock = (MySqlSelectQueryBlock) select.getQuery(); Assert.assertNull(queryBlock.getOrderBy()); // print(statementList); Assert.assertEquals(1, statementList.size()); MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); stmt.accept(visitor); Assert.assertEquals(2, visitor.getTables().size()); Assert.assertEquals(3, visitor.getColumns().size()); Assert.assertEquals(1, visitor.getConditions().size()); Assert.assertEquals(0, visitor.getOrderByColumns().size()); Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t1"))); Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("t2"))); String output = SQLUtils.toMySqlString(stmt); Assert.assertEquals( "SELECT *" // + "\nFROM t1" // + "\nWHERE column1 = (" // + "\n\tSELECT column1" // + "\n\tFROM t2" // + "\n\t)", // output); String output_lcase = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION); Assert.assertEquals( "select *" // + "\nfrom t1" // + "\nwhere column1 = (" // + "\n\tselect column1" // + "\n\tfrom t2" // + "\n\t)", // output_lcase); }
public boolean visit(MySqlSelectQueryBlock select) { print("SELECT "); if (SQLSetQuantifier.ALL == select.getDistionOption()) print("ALL "); else if (SQLSetQuantifier.DISTINCT == select.getDistionOption()) print("DISTINCT "); else if (SQLSetQuantifier.DISTINCTROW == select.getDistionOption()) { print("DISTINCTROW "); } if (select.isHignPriority()) { print("HIGH_PRIORITY "); } if (select.isSmallResult()) { print("SQL_SMALL_RESULT "); } if (select.isBigResult()) { print("SQL_BIG_RESULT "); } if (select.isBufferResult()) { print("SQL_BUFFER_RESULT "); } if (select.getCache() != null) { if (select.getCache().booleanValue()) { print("SQL_CACHE "); } else { print("SQL_NO_CACHE "); } } if (select.isCalcFoundRows()) { print("SQL_CALC_FOUND_ROWS "); } printSelectList(select.getSelectList()); if (select.getOutFile() != null) { println(); print("INTO OUTFILE "); select.getOutFile().accept(this); if (select.getOutFileCharset() != null) { print(" CHARACTER SET "); print(select.getOutFileCharset()); } if (select.getOutFileColumnsTerminatedBy() != null || select.getOutFileColumnsEnclosedBy() != null || select.getOutFileColumnsEscaped() != null) { print(" COLUMNS"); if (select.getOutFileColumnsTerminatedBy() != null) { print(" TERMINATED BY "); select.getOutFileColumnsTerminatedBy().accept(this); } if (select.getOutFileColumnsEnclosedBy() != null) { if (select.isOutFileColumnsEnclosedOptionally()) { print(" OPTIONALLY"); } print(" ENCLOSED BY "); select.getOutFileColumnsEnclosedBy().accept(this); } if (select.getOutFileColumnsEscaped() != null) { print(" ESCAPED BY "); select.getOutFileColumnsEscaped().accept(this); } } if (select.getOutFileLinesStartingBy() != null || select.getOutFileLinesTerminatedBy() != null) { print(" LINES"); if (select.getOutFileLinesStartingBy() != null) { print(" STARTING BY "); select.getOutFileLinesStartingBy().accept(this); } if (select.getOutFileLinesTerminatedBy() != null) { print(" TERMINATED BY "); select.getOutFileLinesTerminatedBy().accept(this); } } } if (select.getFrom() != null) { println(); print("FROM "); select.getFrom().accept(this); } if (select.getWhere() != null) { println(); print("WHERE "); select.getWhere().accept(this); } if (select.getGroupBy() != null) { println(); select.getGroupBy().accept(this); } if (select.getOrderBy() != null) { println(); select.getOrderBy().accept(this); } if (select.getLimit() != null) { println(); select.getLimit().accept(this); } if (select.getProcedureName() != null) { print(" PROCEDURE "); select.getProcedureName().accept(this); if (select.getProcedureArgumentList().size() > 0) { print("("); printAndAccept(select.getProcedureArgumentList(), ", "); print(")"); } } if (select.isForUpdate()) { println(); print("FOR UPDATE"); } if (select.isLockInShareMode()) { println(); print("LOCK IN SHARE MODE"); } return false; }