diff --git a/src/main/java/com/alibaba/druid/sql/SQLUtils.java b/src/main/java/com/alibaba/druid/sql/SQLUtils.java index f6e8e1d5f5..3788df5dcc 100644 --- a/src/main/java/com/alibaba/druid/sql/SQLUtils.java +++ b/src/main/java/com/alibaba/druid/sql/SQLUtils.java @@ -60,6 +60,8 @@ import com.alibaba.druid.util.JdbcUtils; import com.alibaba.druid.util.StringUtils; public class SQLUtils { + public static FormatOption DEFAULT_FORMAT_OPTION = new FormatOption(); + public static FormatOption DEFAULT_LCASE_FORMAT_OPTION = new FormatOption(false); private final static Log LOG = LogFactory.getLog(SQLUtils.class); @@ -104,10 +106,21 @@ public class SQLUtils { String sql = out.toString(); return sql; } - + public static String toMySqlString(SQLObject sqlObject) { + return toMySqlString(sqlObject, null); + } + + public static String toMySqlString(SQLObject sqlObject, FormatOption option) { StringBuilder out = new StringBuilder(); - sqlObject.accept(new MySqlOutputVisitor(out)); + MySqlOutputVisitor visitor = new MySqlOutputVisitor(out); + + if (option == null) { + option = DEFAULT_FORMAT_OPTION; + } + visitor.setUppCase(option.isUppCase()); + + sqlObject.accept(visitor); String sql = out.toString(); return sql; @@ -128,6 +141,10 @@ public class SQLUtils { public static String formatOdps(String sql) { return format(sql, JdbcUtils.ODPS); } + + public static String formatOdps(String sql, FormatOption option) { + return format(sql, JdbcUtils.ODPS, option); + } public static String formatSQLServer(String sql) { return format(sql, JdbcUtils.SQL_SERVER); @@ -140,10 +157,22 @@ public class SQLUtils { String sql = out.toString(); return sql; } - + public static String toPGString(SQLObject sqlObject) { + return toPGString(sqlObject, null); + } + + public static String toPGString(SQLObject sqlObject, FormatOption option) { + StringBuilder out = new StringBuilder(); - sqlObject.accept(new PGOutputVisitor(out)); + PGOutputVisitor visitor = new PGOutputVisitor(out); + + if (option == null) { + option = DEFAULT_FORMAT_OPTION; + } + visitor.setUppCase(option.isUppCase()); + + sqlObject.accept(visitor); String sql = out.toString(); return sql; @@ -223,17 +252,25 @@ public class SQLUtils { } public static String format(String sql, String dbType) { - return format(sql, dbType, null); + return format(sql, dbType, null, null); + } + + public static String format(String sql, String dbType, FormatOption option) { + return format(sql, dbType, null, option); + } + + public static String format(String sql, String dbType, List parameters) { + return format(sql, dbType, parameters, null); } - public static String format(String sql, String dbType, List parameters) { + public static String format(String sql, String dbType, List parameters, FormatOption option) { try { SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType); parser.setKeepComments(true); List statementList = parser.parseStatementList(); - return toSQLString(statementList, dbType, parameters); + return toSQLString(statementList, dbType, parameters, option); } catch (ParserException ex) { LOG.warn("format error", ex); return sql; @@ -243,13 +280,22 @@ public class SQLUtils { public static String toSQLString(List statementList, String dbType) { return toSQLString(statementList, dbType, null); } - + public static String toSQLString(List statementList, String dbType, List parameters) { + return toSQLString(statementList, dbType, parameters, null); + } + + public static String toSQLString(List statementList, String dbType, List parameters, FormatOption option) { StringBuilder out = new StringBuilder(); SQLASTOutputVisitor visitor = createFormatOutputVisitor(out, statementList, dbType); if (parameters != null) { visitor.setParameters(parameters); } + + if (option == null) { + option = DEFAULT_FORMAT_OPTION; + } + visitor.setUppCase(option.isUppCase()); for (int i = 0; i < statementList.size(); i++) { SQLStatement stmt = statementList.get(i); @@ -592,4 +638,25 @@ public class SQLUtils { queryBlock.getSelectList().add(selectItem); selectItem.setParent(selectItem); } + + public static class FormatOption { + + private boolean ucase = true; + + public FormatOption() { + + } + + public FormatOption(boolean ucase) { + this.ucase = ucase; + } + + public boolean isUppCase() { + return ucase; + } + + public void setUppCase(boolean val) { + this.ucase = val; + } + } } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBinaryOperator.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBinaryOperator.java index 7bd091f2f7..0e4cd01a56 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBinaryOperator.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBinaryOperator.java @@ -76,6 +76,7 @@ public enum SQLBinaryOperator { } public final String name; + public final String name_lcase; public final int priority; SQLBinaryOperator(){ @@ -84,6 +85,7 @@ public enum SQLBinaryOperator { SQLBinaryOperator(String name, int priority){ this.name = name; + this.name_lcase = name.toLowerCase(); this.priority = priority; } diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLJoinTableSource.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLJoinTableSource.java index 75592af740..d80ebeac0d 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLJoinTableSource.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLJoinTableSource.java @@ -121,9 +121,11 @@ public class SQLJoinTableSource extends SQLTableSourceImpl { CROSS_APPLY("CROSS APPLY"); public final String name; + public final String name_lcase; JoinType(String name){ this.name = name; + this.name_lcase = name.toLowerCase(); } public static String toString(JoinType joinType) { diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLUnionOperator.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLUnionOperator.java index a5c57fd999..092838516c 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLUnionOperator.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLUnionOperator.java @@ -20,9 +20,11 @@ public enum SQLUnionOperator { DISTINCT("UNION DISTINCT"); public final String name; + public final String name_lcase; private SQLUnionOperator(String name){ this.name = name; + this.name_lcase = name.toLowerCase(); } public String toString() { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/MySqlIndexHint.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/MySqlIndexHint.java index 9acc21f19e..7cf89def90 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/MySqlIndexHint.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/MySqlIndexHint.java @@ -23,9 +23,11 @@ public interface MySqlIndexHint extends MySqlHint { ; public final String name; + public final String name_lcase; Option(String name) { this.name = name; + this.name_lcase = name.toLowerCase(); } } } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlIntervalUnit.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlIntervalUnit.java index 9408698bfa..e93414d1f3 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlIntervalUnit.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/expr/MySqlIntervalUnit.java @@ -28,5 +28,11 @@ public enum MySqlIntervalUnit { SECOND, SECOND_MICROSECOND, - MICROSECOND + MICROSECOND; + + public final String name_lcase; + + private MySqlIntervalUnit() { + this.name_lcase = name().toLowerCase(); + } } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java index 72fb82e37f..072f6edaf6 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java @@ -191,7 +191,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV x.getOrderBy().setParent(x); } - print("SELECT "); + print0(ucase ? "SELECT " : "select "); for (int i = 0, size = x.getHintsSize(); i < size; ++i) { SQLCommentHint hint = x.getHints().get(i); @@ -200,62 +200,62 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } if (SQLSetQuantifier.ALL == x.getDistionOption()) { - print("ALL "); + print0(ucase ? "ALL " : "all "); } else if (SQLSetQuantifier.DISTINCT == x.getDistionOption()) { - print("DISTINCT "); + print0(ucase ? "DISTINCT " : "distinct "); } else if (SQLSetQuantifier.DISTINCTROW == x.getDistionOption()) { - print("DISTINCTROW "); + print0(ucase ? "DISTINCTROW " : "distinctrow "); } if (x.isHignPriority()) { - print("HIGH_PRIORITY "); + print0(ucase ? "HIGH_PRIORITY " : "high_priority "); } if (x.isStraightJoin()) { - print("STRAIGHT_JOIN "); + print0(ucase ? "STRAIGHT_JOIN " : "straight_join "); } if (x.isSmallResult()) { - print("SQL_SMALL_RESULT "); + print0(ucase ? "SQL_SMALL_RESULT " : "sql_small_result "); } if (x.isBigResult()) { - print("SQL_BIG_RESULT "); + print0(ucase ? "SQL_BIG_RESULT " : "sql_big_result "); } if (x.isBufferResult()) { - print("SQL_BUFFER_RESULT "); + print0(ucase ? "SQL_BUFFER_RESULT " : "sql_buffer_result "); } if (x.getCache() != null) { if (x.getCache().booleanValue()) { - print("SQL_CACHE "); + print0(ucase ? "SQL_CACHE " : "sql_cache "); } else { - print("SQL_NO_CACHE "); + print0(ucase ? "SQL_NO_CACHE " : "sql_no_cache "); } } if (x.isCalcFoundRows()) { - print("SQL_CALC_FOUND_ROWS "); + print0(ucase ? "SQL_CALC_FOUND_ROWS " : "sql_calc_found_rows "); } printSelectList(x.getSelectList()); if (x.getInto() != null) { println(); - print("INTO "); + print0(ucase ? "INTO " : "into "); x.getInto().accept(this); } if (x.getFrom() != null) { println(); - print("FROM "); + print0(ucase ? "FROM " : "from "); x.getFrom().accept(this); } if (x.getWhere() != null) { println(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); x.getWhere().setParent(x); x.getWhere().accept(this); } @@ -276,23 +276,23 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } if (x.getProcedureName() != null) { - print(" PROCEDURE "); + print0(ucase ? " PROCEDURE " : " procedure "); x.getProcedureName().accept(this); if (x.getProcedureArgumentList().size() > 0) { - print("("); + print('('); printAndAccept(x.getProcedureArgumentList(), ", "); - print(")"); + print(')'); } } if (x.isForUpdate()) { println(); - print("FOR UPDATE"); + print0(ucase ? "FOR UPDATE" : "for update"); } if (x.isLockInShareMode()) { println(); - print("LOCK IN SHARE MODE"); + print0(ucase ? "LOCK IN SHARE MODE" : "lock in share mode"); } return false; @@ -310,7 +310,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV x.getDataType().accept(this); if (mysqlColumn != null && mysqlColumn.getCharsetExpr() != null) { - print(" CHARSET "); + print0(ucase ? " CHARSET " : " charset "); mysqlColumn.getCharsetExpr().accept(this); } @@ -321,30 +321,30 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV if (x.getDefaultExpr() != null) { if (x.getDefaultExpr() instanceof SQLNullExpr) { - print(" NULL"); + print0(ucase ? " NULL" : " null"); } else { - print(" DEFAULT "); + print0(ucase ? " DEFAULT " : " default "); x.getDefaultExpr().accept(this); } } if (mysqlColumn != null && mysqlColumn.getStorage() != null) { - print(" STORAGE "); + print0(ucase ? " STORAGE " : " storage "); mysqlColumn.getStorage().accept(this); } if (mysqlColumn != null && mysqlColumn.getOnUpdate() != null) { - print(" ON UPDATE "); + print0(ucase ? " ON UPDATE " : " on update "); mysqlColumn.getOnUpdate().accept(this); } if (mysqlColumn != null && mysqlColumn.isAutoIncrement()) { - print(" AUTO_INCREMENT"); + print0(ucase ? " AUTO_INCREMENT" : " auto_increment"); } if (x.getComment() != null) { - print(" COMMENT "); + print0(ucase ? " COMMENT " : " comment "); x.getComment().accept(this); } @@ -352,10 +352,10 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } public boolean visit(MySqlSelectQueryBlock.Limit x) { - print("LIMIT "); + print0(ucase ? "LIMIT " : "limit "); if (x.getOffset() != null) { x.getOffset().accept(this); - print(", "); + print0(", "); } x.getRowCount().accept(this); @@ -363,31 +363,31 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } public boolean visit(SQLDataType x) { - print(x.getName()); + print0(x.getName()); if (x.getArguments().size() > 0) { - print("("); + print('('); printAndAccept(x.getArguments(), ", "); - print(")"); + print(')'); } if (Boolean.TRUE == x.getAttribute("UNSIGNED")) { - print(" UNSIGNED"); + print0(ucase ? " UNSIGNED" : " unsigned"); } if (Boolean.TRUE == x.getAttribute("ZEROFILL")) { - print(" ZEROFILL"); + print0(ucase ? " ZEROFILL" : " zerofill"); } if (x instanceof SQLCharacterDataType) { SQLCharacterDataType charType = (SQLCharacterDataType) x; if (charType.getCharSetName() != null) { - print(" CHARACTER SET "); - print(charType.getCharSetName()); + print0(ucase ? " CHARACTER SET " : " character set "); + print0(charType.getCharSetName()); if (charType.getCollate() != null) { - print(" COLLATE "); - print(charType.getCollate()); + print0(ucase ? " COLLATE " : " collate "); + print0(charType.getCollate()); } } } @@ -395,27 +395,27 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } public boolean visit(SQLCharacterDataType x) { - print(x.getName()); + print0(x.getName()); if (x.getArguments().size() > 0) { - print("("); + print('('); printAndAccept(x.getArguments(), ", "); - print(")"); + print(')'); } if (x.isHasBinary()) { - print(" BINARY "); + print0(ucase ? " BINARY " : " binary "); } if (x.getCharSetName() != null) { - print(" CHARACTER SET "); - print(x.getCharSetName()); + print0(ucase ? " CHARACTER SET " : " character set "); + print0(x.getCharSetName()); if (x.getCollate() != null) { - print(" COLLATE "); - print(x.getCollate()); + print0(ucase ? " COLLATE " : " collate "); + print0(x.getCollate()); } }else if (x.getCollate() != null) { - print(" COLLATE "); - print(x.getCollate()); + print0(ucase ? " COLLATE " : " collate "); + print0(x.getCollate()); } return false; @@ -433,31 +433,31 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlTableIndex x) { - print("INDEX"); + print0(ucase ? "INDEX" : "index"); if (x.getName() != null) { - print(" "); + print(' '); x.getName().accept(this); } if (x.getIndexType() != null) { - print(" USING "); - print(x.getIndexType()); + print0(ucase ? " USING " : " using "); + print0(x.getIndexType()); } - print("("); + print('('); for (int i = 0, size = x.getColumns().size(); i < size; ++i) { if (i != 0) { - print(", "); + print0(", "); } x.getColumns().get(i).accept(this); } - print(")"); + print(')'); return false; } public boolean visit(MySqlCreateTableStatement x) { - print("CREATE "); + print0(ucase ? "CREATE " : "create "); for (SQLCommentHint hint : x.getHints()) { hint.accept(this); @@ -465,57 +465,57 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } if (SQLCreateTableStatement.Type.GLOBAL_TEMPORARY.equals(x.getType())) { - print("TEMPORARY TABLE "); + print0(ucase ? "TEMPORARY TABLE " : "temporary table "); } else { - print("TABLE "); + print0(ucase ? "TABLE " : "table "); } if (x.isIfNotExiists()) { - print("IF NOT EXISTS "); + print0(ucase ? "IF NOT EXISTS " : "if not exists "); } x.getName().accept(this); if (x.getLike() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getLike().accept(this); } int size = x.getTableElementList().size(); if (size > 0) { - print(" ("); + print0(" ("); incrementIndent(); println(); for (int i = 0; i < size; ++i) { if (i != 0) { - print(", "); + print0(", "); println(); } x.getTableElementList().get(i).accept(this); } decrementIndent(); println(); - print(")"); + print(')'); } for (Map.Entry option : x.getTableOptions().entrySet()) { String key = option.getKey(); print(' '); - print(key); + print0(key); if ("TABLESPACE".equals(key)) { print(' '); option.getValue().accept(this); continue; } else if ("UNION".equals(key)) { - print(" = ("); + print0(" = ("); option.getValue().accept(this); print(')'); continue; } - print(" = "); + print0(" = "); option.getValue().accept(this); } @@ -557,14 +557,14 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlKey x) { if (x.isHasConstaint()) { - print("CONSTRAINT "); + print0(ucase ? "CONSTRAINT " : "constraint "); if (x.getName() != null) { x.getName().accept(this); print(' '); } } - print("KEY"); + print0(ucase ? "KEY" : "key"); if (x.getIndexName() != null) { print(' '); @@ -572,19 +572,19 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } if (x.getIndexType() != null) { - print(" USING "); - print(x.getIndexType()); + print0(ucase ? " USING " : " using "); + print0(x.getIndexType()); } - print(" ("); + print0(" ("); for (int i = 0, size = x.getColumns().size(); i < size; ++i) { if (i != 0) { - print(", "); + print0(", "); } x.getColumns().get(i).accept(this); } - print(")"); + print(')'); return false; } @@ -592,27 +592,27 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlPrimaryKey x) { if (x.getName() != null) { - print("CONSTRAINT "); + print0(ucase ? "CONSTRAINT " : "constraint "); x.getName().accept(this); print(' '); } - print("PRIMARY KEY"); + print0(ucase ? "PRIMARY KEY" : "primary key"); if (x.getIndexType() != null) { - print(" USING "); - print(x.getIndexType()); + print0(ucase ? " USING " : " using ");; + print0(x.getIndexType()); } - print(" ("); + print0(" ("); for (int i = 0, size = x.getColumns().size(); i < size; ++i) { if (i != 0) { - print(", "); + print0(", "); } x.getColumns().get(i).accept(this); } - print(")"); + print(')'); return false; } @@ -624,7 +624,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV text = text.replaceAll("'", "''"); text = text.replace("\\", "\\\\"); - print(text); + print0(text); print('\''); return false; @@ -644,14 +644,14 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV String varName = x.getName(); if (x.isGlobal()) { - print("@@global."); + print0("@@global."); } else { if ((!varName.startsWith("@")) // / && (!varName.equals("?")) // && (!varName.startsWith("#")) // && (!varName.startsWith("$")) // && (!varName.startsWith(":"))) { - print("@@"); + print0("@@"); } } @@ -663,7 +663,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } else if (x.getName().startsWith("@") && i == 1) { print(ch); } else if (i != 0 && i != x.getName().length() - 1) { - print("\\'"); + print0("\\'"); } else { print(ch); } @@ -674,8 +674,8 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV String collate = (String) x.getAttribute("COLLATE"); if (collate != null) { - print(" COLLATE "); - print(collate); + print0(ucase ? " COLLATE " : " collate "); + print0(collate); } return false; @@ -685,23 +685,23 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV if ("SUBSTRING".equalsIgnoreCase(x.getMethodName())) { if (x.getOwner() != null) { x.getOwner().accept(this); - print("."); + print('.'); } - print(x.getMethodName()); - print("("); + print0(x.getMethodName()); + print('('); printAndAccept(x.getParameters(), ", "); SQLExpr from = (SQLExpr) x.getAttribute("FROM"); if (from != null) { - print(" FROM "); + print0(ucase ? " FROM " : " from "); from.accept(this); } SQLExpr forExpr = (SQLExpr) x.getAttribute("FOR"); if (forExpr != null) { - print(" FOR "); + print0(ucase ? " FOR " : " for "); forExpr.accept(this); } - print(")"); + print(')'); return false; } @@ -709,14 +709,14 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV if ("TRIM".equalsIgnoreCase(x.getMethodName())) { if (x.getOwner() != null) { x.getOwner().accept(this); - print("."); + print('.'); } - print(x.getMethodName()); - print("("); + print0(x.getMethodName()); + print('('); String trimType = (String) x.getAttribute("TRIM_TYPE"); if (trimType != null) { - print(trimType); + print0(trimType); print(' '); } @@ -724,11 +724,11 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV SQLExpr from = (SQLExpr) x.getAttribute("FROM"); if (from != null) { - print(" FROM "); + print0(ucase ? " FROM " : " from "); from.accept(this); } - print(")"); + print(')'); return false; } @@ -736,18 +736,18 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV if (("CONVERT".equalsIgnoreCase(x.getMethodName()))||"CHAR".equalsIgnoreCase(x.getMethodName())) { if (x.getOwner() != null) { x.getOwner().accept(this); - print("."); + print('.'); } - print(x.getMethodName()); - print("("); + print0(x.getMethodName()); + print('('); printAndAccept(x.getParameters(), ", "); String charset = (String) x.getAttribute("USING"); if (charset != null) { - print(" USING "); - print(charset); + print0(ucase ? " USING " : " using ");; + print0(charset); } - print(")"); + print(')'); return false; } @@ -761,18 +761,18 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlIntervalExpr x) { - print("INTERVAL "); + print0(ucase ? "INTERVAL " : "interval "); x.getValue().accept(this); print(' '); - print(x.getUnit().name()); + print0(ucase ? x.getUnit().name() : x.getUnit().name_lcase); return false; } @Override public boolean visit(MySqlExtractExpr x) { - print("EXTRACT("); - print(x.getUnit().name()); - print(" FROM "); + print0(ucase ? "EXTRACT(" : "extract("); + print0(x.getUnit().name()); + print0(ucase ? " FROM " : " from "); x.getValue().accept(this); print(')'); return false; @@ -790,15 +790,15 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlMatchAgainstExpr x) { - print("MATCH ("); + print0(ucase ? "MATCH (" : "match ("); printAndAccept(x.getColumns(), ", "); - print(")"); + print(')'); - print(" AGAINST ("); + print0(ucase ? " AGAINST (" : " against ("); x.getAgainst().accept(this); if (x.getSearchModifier() != null) { print(' '); - print(x.getSearchModifier().name); + print0(x.getSearchModifier().name); } print(')'); @@ -811,9 +811,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlPrepareStatement x) { - print("PREPARE "); + print0(ucase ? "PREPARE " : "prepare "); x.getName().accept(this); - print(" FROM "); + print0(ucase ? " FROM " : " from "); x.getFrom().accept(this); return false; } @@ -825,10 +825,10 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlExecuteStatement x) { - print("EXECUTE "); + print0(ucase ? "EXECUTE " : "execute "); x.getStatementName().accept(this); if (x.getParameters().size() > 0) { - print(" USING "); + print0(ucase ? " USING " : " using ");; printAndAccept(x.getParameters(), ", "); } return false; @@ -841,40 +841,40 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlDeleteStatement x) { - print("DELETE "); + print0(ucase ? "DELETE " : "delete "); if (x.isLowPriority()) { - print("LOW_PRIORITY "); + print0(ucase ? "LOW_PRIORITY " : "low_priority "); } if (x.isQuick()) { - print("QUICK "); + print0(ucase ? "QUICK " : "quick "); } if (x.isIgnore()) { - print("IGNORE "); + print0(ucase ? "IGNORE " : "ignore "); } if (x.getFrom() == null) { - print("FROM "); + print0(ucase ? "FROM " : "from "); x.getTableSource().accept(this); } else { x.getTableSource().accept(this); println(); - print("FROM "); + print0(ucase ? "FROM " : "from "); x.getFrom().accept(this); } if (x.getUsing() != null) { println(); - print("USING "); + print0(ucase ? "USING " : "using "); x.getUsing().accept(this); } if (x.getWhere() != null) { println(); incrementIndent(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); x.getWhere().setParent(x); x.getWhere().accept(this); decrementIndent(); @@ -900,42 +900,42 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlInsertStatement x) { - print("INSERT "); + print0(ucase ? "INSERT " : "insert "); if (x.isLowPriority()) { - print("LOW_PRIORITY "); + print0(ucase ? "LOW_PRIORITY " : "low_priority "); } if (x.isDelayed()) { - print("DELAYED "); + print0(ucase ? "DELAYED " : "delayed "); } if (x.isHighPriority()) { - print("HIGH_PRIORITY "); + print0(ucase ? "HIGH_PRIORITY " : "high_priority "); } if (x.isIgnore()) { - print("IGNORE "); + print0(ucase ? "IGNORE " : "ignore "); } - print("INTO "); + print0(ucase ? "INTO " : "into "); x.getTableSource().accept(this); if (x.getColumns().size() > 0) { incrementIndent(); - print(" ("); + print0(" ("); for (int i = 0, size = x.getColumns().size(); i < size; ++i) { if (i != 0) { if (i % 5 == 0) { println(); } - print(", "); + print0(", "); } x.getColumns().get(i).accept(this); } - print(")"); + print(')'); decrementIndent(); } @@ -951,13 +951,13 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV if (x.getDuplicateKeyUpdate().size() != 0) { println(); - print("ON DUPLICATE KEY UPDATE "); + print0(ucase ? "ON DUPLICATE KEY UPDATE " : "on duplicate key update "); for (int i = 0, size = x.getDuplicateKeyUpdate().size(); i < size; ++i) { if (i != 0) { if (i % 5 == 0) { println(); } - print(", "); + print0(", "); } x.getDuplicateKeyUpdate().get(i).accept(this); } @@ -967,13 +967,13 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } protected void printValuesList(MySqlInsertStatement x) { - print("VALUES "); + print0(ucase ? "VALUES " : "values "); if (x.getValuesList().size() > 1) { incrementIndent(); } for (int i = 0, size = x.getValuesList().size(); i < size; ++i) { if (i != 0) { - print(","); + print(','); println(); } x.getValuesList().get(i).accept(this); @@ -990,83 +990,83 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlLoadDataInFileStatement x) { - print("LOAD DATA "); + print0(ucase ? "LOAD DATA " : "load data "); if (x.isLowPriority()) { - print("LOW_PRIORITY "); + print0(ucase ? "LOW_PRIORITY " : "low_priority "); } if (x.isConcurrent()) { - print("CONCURRENT "); + print0(ucase ? "CONCURRENT " : "concurrent "); } if (x.isLocal()) { - print("LOCAL "); + print0(ucase ? "LOCAL " : "local "); } - print("INFILE "); + print0(ucase ? "INFILE " : "infile "); x.getFileName().accept(this); if (x.isReplicate()) { - print(" REPLACE "); + print0(ucase ? " REPLACE " : " replace "); } if (x.isIgnore()) { - print(" IGNORE "); + print0(ucase ? " IGNORE " : " ignore "); } - print(" INTO TABLE "); + print0(ucase ? " INTO TABLE " : " into table "); x.getTableName().accept(this); if (x.getColumnsTerminatedBy() != null || x.getColumnsEnclosedBy() != null || x.getColumnsEscaped() != null) { - print(" COLUMNS"); + print0(ucase ? " COLUMNS" : " columns"); if (x.getColumnsTerminatedBy() != null) { - print(" TERMINATED BY "); + print0(ucase ? " TERMINATED BY " : " terminated by "); x.getColumnsTerminatedBy().accept(this); } if (x.getColumnsEnclosedBy() != null) { if (x.isColumnsEnclosedOptionally()) { - print(" OPTIONALLY"); + print0(ucase ? " OPTIONALLY" : " optionally"); } - print(" ENCLOSED BY "); + print0(ucase ? " ENCLOSED BY " : " enclosed by "); x.getColumnsEnclosedBy().accept(this); } if (x.getColumnsEscaped() != null) { - print(" ESCAPED BY "); + print0(ucase ? " ESCAPED BY " : " escaped by "); x.getColumnsEscaped().accept(this); } } if (x.getLinesStartingBy() != null || x.getLinesTerminatedBy() != null) { - print(" LINES"); + print0(ucase ? " LINES" : " lines"); if (x.getLinesStartingBy() != null) { - print(" STARTING BY "); + print0(ucase ? " STARTING BY " : " starting by "); x.getLinesStartingBy().accept(this); } if (x.getLinesTerminatedBy() != null) { - print(" TERMINATED BY "); + print0(ucase ? " TERMINATED BY " : " terminated by "); x.getLinesTerminatedBy().accept(this); } } if(x.getIgnoreLinesNumber() != null) { - print(" IGNORE "); + print0(ucase ? " IGNORE " : " ignore "); x.getIgnoreLinesNumber().accept(this); - print(" LINES"); + print0(ucase ? " LINES" : " lines"); } if (x.getColumns().size() != 0) { - print(" ("); + print0(" ("); printAndAccept(x.getColumns(), ", "); - print(")"); + print(')'); } if (x.getSetList().size() != 0) { - print(" SET "); + print0(ucase ? " SET " : " set "); printAndAccept(x.getSetList(), ", "); } @@ -1080,41 +1080,41 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlReplaceStatement x) { - print("REPLACE "); + print0(ucase ? "REPLACE " : "replace "); if (x.isLowPriority()) { - print("LOW_PRIORITY "); + print0(ucase ? "LOW_PRIORITY " : "low_priority "); } if (x.isDelayed()) { - print("DELAYED "); + print0(ucase ? "DELAYED " : "delayed "); } - print("INTO "); + print0(ucase ? "INTO " : "into "); x.getTableName().accept(this); if (x.getColumns().size() > 0) { - print(" ("); + print0(" ("); for (int i = 0, size = x.getColumns().size(); i < size; ++i) { if (i != 0) { - print(", "); + print0(", "); } x.getColumns().get(i).accept(this); } - print(")"); + print(')'); } if (x.getValuesList().size() != 0) { println(); - print("VALUES "); + print0(ucase ? "VALUES " : "values "); int size = x.getValuesList().size(); if (size == 0) { - print("()"); + print0("()"); } else { for (int i = 0; i < size; ++i) { if (i != 0) { - print(", "); + print0(", "); } x.getValuesList().get(i).accept(this); } @@ -1138,7 +1138,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV super.visit(x); if (x.isRollUp()) { - print(" WITH ROLLUP"); + print0(ucase ? " WITH ROLLUP" : " with rollup"); } return false; @@ -1151,22 +1151,22 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlStartTransactionStatement x) { - print("START TRANSACTION"); + print0(ucase ? "START TRANSACTION" : "start transaction"); if (x.isConsistentSnapshot()) { - print(" WITH CONSISTENT SNAPSHOT"); + print0(ucase ? " WITH CONSISTENT SNAPSHOT" : " with consistent snapshot"); } if (x.getHints() != null && x.getHints().size() > 0) { - print(" "); + print(' '); printAndAccept(x.getHints(), " "); } if (x.isBegin()) { - print(" BEGIN"); + print0(ucase ? " BEGIN" : " begin"); } if (x.isWork()) { - print(" WORK"); + print0(ucase ? " WORK" : " work"); } return false; @@ -1179,25 +1179,25 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlCommitStatement x) { - print("COMMIT"); + print0(ucase ? "COMMIT" : "commit"); if (x.isWork()) { - print(" WORK"); + print0(ucase ? " WORK" : " work"); } if (x.getChain() != null) { if (x.getChain().booleanValue()) { - print(" AND CHAIN"); + print0(ucase ? " AND CHAIN" : " and chain"); } else { - print(" AND NO CHAIN"); + print0(ucase ? " AND NO CHAIN" : " and no chain"); } } if (x.getRelease() != null) { if (x.getRelease().booleanValue()) { - print(" AND RELEASE"); + print0(ucase ? " AND RELEASE" : " and release"); } else { - print(" AND NO RELEASE"); + print0(ucase ? " AND NO RELEASE" : " and no release"); } } @@ -1211,26 +1211,26 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlRollbackStatement x) { - print("ROLLBACK"); + print0(ucase ? "ROLLBACK" : "rollback"); if (x.getChain() != null) { if (x.getChain().booleanValue()) { - print(" AND CHAIN"); + print0(ucase ? " AND CHAIN" : " and chain"); } else { - print(" AND NO CHAIN"); + print0(ucase ? " AND NO CHAIN" : " and no chain"); } } if (x.getRelease() != null) { if (x.getRelease().booleanValue()) { - print(" AND RELEASE"); + print0(ucase ? " AND RELEASE" : " and release"); } else { - print(" AND NO RELEASE"); + print0(ucase ? " AND NO RELEASE" : " and no release"); } } if (x.getTo() != null) { - print(" TO "); + print0(ucase ? " TO " : " to "); x.getTo().accept(this); } @@ -1245,13 +1245,13 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowColumnsStatement x) { if (x.isFull()) { - print("SHOW FULL COLUMNS"); + print0(ucase ? "SHOW FULL COLUMNS" : "show full columns"); } else { - print("SHOW COLUMNS"); + print0(ucase ? "SHOW COLUMNS": "show columns"); } if (x.getTable() != null) { - print(" FROM "); + print0(ucase ? " FROM " : " from "); if (x.getDatabase() != null) { x.getDatabase().accept(this); print('.'); @@ -1260,12 +1260,12 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } if (x.getLike() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getLike().accept(this); } if (x.getWhere() != null) { - print(" WHERE "); + print0(ucase ? " WHERE " : " where "); x.getWhere().setParent(x); x.getWhere().accept(this); } @@ -1281,23 +1281,23 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowTablesStatement x) { if (x.isFull()) { - print("SHOW FULL TABLES"); + print0(ucase ? "SHOW FULL TABLES" : "show full tables"); } else { - print("SHOW TABLES"); + print0(ucase ? "SHOW TABLES" : "show tables"); } if (x.getDatabase() != null) { - print(" FROM "); + print0(ucase ? " FROM " : " from "); x.getDatabase().accept(this); } if (x.getLike() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getLike().accept(this); } if (x.getWhere() != null) { - print(" WHERE "); + print0(ucase ? " WHERE " : " where "); x.getWhere().setParent(x); x.getWhere().accept(this); } @@ -1312,15 +1312,15 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowDatabasesStatement x) { - print("SHOW DATABASES"); + print0(ucase ? "SHOW DATABASES" : "show databases"); if (x.getLike() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getLike().accept(this); } if (x.getWhere() != null) { - print(" WHERE "); + print0(ucase ? " WHERE " : " where "); x.getWhere().setParent(x); x.getWhere().accept(this); } @@ -1336,9 +1336,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowWarningsStatement x) { if (x.isCount()) { - print("SHOW COUNT(*) WARNINGS"); + print0(ucase ? "SHOW COUNT(*) WARNINGS" : "show count(*) warnings"); } else { - print("SHOW WARNINGS"); + print0(ucase ? "SHOW WARNINGS" : "show warnings"); if (x.getLimit() != null) { print(' '); x.getLimit().accept(this); @@ -1355,25 +1355,25 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowStatusStatement x) { - print("SHOW "); + print0(ucase ? "SHOW " : "show "); if (x.isGlobal()) { - print("GLOBAL "); + print0(ucase ? "GLOBAL " : "global "); } if (x.isSession()) { - print("SESSION "); + print0(ucase ? "SESSION " : "session "); } - print("STATUS"); + print0(ucase ? "STATUS" : "status"); if (x.getLike() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getLike().accept(this); } if (x.getWhere() != null) { - print(" WHERE "); + print0(ucase ? " WHERE " : " where "); x.getWhere().setParent(x); x.getWhere().accept(this); } @@ -1388,47 +1388,47 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlLoadXmlStatement x) { - print("LOAD XML "); + print0(ucase ? "LOAD XML " : "load xml "); if (x.isLowPriority()) { - print("LOW_PRIORITY "); + print0(ucase ? "LOW_PRIORITY " : "low_priority "); } if (x.isConcurrent()) { - print("CONCURRENT "); + print0(ucase ? "CONCURRENT " : "concurrent "); } if (x.isLocal()) { - print("LOCAL "); + print0(ucase ? "LOCAL " : "local "); } - print("INFILE "); + print0(ucase ? "INFILE " : "infile "); x.getFileName().accept(this); if (x.isReplicate()) { - print(" REPLACE "); + print0(ucase ? " REPLACE " : " replace "); } if (x.isIgnore()) { - print(" IGNORE "); + print0(ucase ? " IGNORE " : " ignore "); } - print(" INTO TABLE "); + print0(ucase ? " INTO TABLE " : " into table "); x.getTableName().accept(this); if (x.getCharset() != null) { - print(" CHARSET "); - print(x.getCharset()); + print0(ucase ? " CHARSET " : " charset "); + print0(x.getCharset()); } if (x.getRowsIdentifiedBy() != null) { - print(" ROWS IDENTIFIED BY "); + print0(ucase ? " ROWS IDENTIFIED BY " : " rows identified by "); x.getRowsIdentifiedBy().accept(this); } if (x.getSetList().size() != 0) { - print(" SET "); + print0(ucase ? " SET " : " set "); printAndAccept(x.getSetList(), ", "); } @@ -1442,7 +1442,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(CobarShowStatus x) { - print("SHOW COBAR_STATUS"); + print0(ucase ? "SHOW COBAR_STATUS" : "show cobar_status"); return false; } @@ -1454,9 +1454,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlKillStatement x) { if (MySqlKillStatement.Type.CONNECTION.equals(x.getType())) { - print("KILL CONNECTION "); + print0(ucase ? "KILL CONNECTION " : "kill connection "); } else if (MySqlKillStatement.Type.QUERY.equals(x.getType())) { - print("KILL QUERY "); + print0(ucase ? "KILL QUERY " : "kill query "); } x.getThreadId().accept(this); return false; @@ -1469,7 +1469,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlBinlogStatement x) { - print("BINLOG "); + print0(ucase ? "BINLOG " : "binlog "); x.getExpr().accept(this); return false; } @@ -1481,12 +1481,12 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlResetStatement x) { - print("RESET "); + print0(ucase ? "RESET " : "reset "); for (int i = 0; i < x.getOptions().size(); ++i) { if (i != 0) { - print(", "); + print0(", "); } - print(x.getOptions().get(i)); + print0(x.getOptions().get(i)); } return false; } @@ -1498,7 +1498,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlCreateUserStatement x) { - print("CREATE USER "); + print0(ucase ? "CREATE USER " : "create user "); printAndAccept(x.getUsers(), ", "); return false; } @@ -1513,15 +1513,15 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV x.getUser().accept(this); if (x.getPassword() != null) { - print(" IDENTIFIED BY "); + print0(ucase ? " IDENTIFIED BY " : " identified by "); if (x.isPasswordHash()) { - print("PASSWORD "); + print0(ucase ? "PASSWORD " : "password "); } x.getPassword().accept(this); } if (x.getAuthPlugin() != null) { - print(" IDENTIFIED WITH "); + print0(ucase ? " IDENTIFIED WITH " : " identified with "); x.getAuthPlugin().accept(this); } return false; @@ -1535,15 +1535,15 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlPartitionByKey x) { if (x.isLinear()) { - print("PARTITION BY LINEAR KEY ("); + print0(ucase ? "PARTITION BY LINEAR KEY (" : "partition by linear key ("); } else { - print("PARTITION BY KEY ("); + print0(ucase ? "PARTITION BY KEY (" : "partition by key ("); } printAndAccept(x.getColumns(), ", "); - print(")"); + print(')'); if (x.getPartitionCount() != null) { - print(" PARTITIONS "); + print0(ucase ? " PARTITIONS " : " partitions "); x.getPartitionCount().accept(this); } return false; @@ -1556,37 +1556,37 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlPartitionByRange x) { - print("PARTITION BY RANGE"); + print0(ucase ? "PARTITION BY RANGE" : "partition by range"); if (x.getExpr() != null) { - print(" ("); + print0(" ("); x.getExpr().accept(this); - print(")"); + print(')'); } else { - print(" COLUMNS ("); + print0(ucase ? " COLUMNS (" : " columns ("); printAndAccept(x.getColumns(), ", "); - print(")"); + print(')'); } if (x.getPartitionCount() != null) { - print(" PARTITIONS "); + print0(ucase ? " PARTITIONS " : " partitions "); x.getPartitionCount().accept(this); } List partitions = x.getPartitions(); int partitionsSize = partitions.size(); if (partitionsSize > 0) { - print("("); + print('('); incrementIndent(); for (int i = 0; i < partitionsSize; ++i) { println(); partitions.get(i).accept(this); if (i != partitionsSize - 1) { - print(", "); + print0(", "); } } decrementIndent(); println(); - print(")"); + print(')'); } return false; } @@ -1598,37 +1598,37 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlPartitionByList x) { - print("PARTITION BY LIST "); + print0(ucase ? "PARTITION BY LIST " : "partition by list "); if (x.getExpr() != null) { - print("("); + print('('); x.getExpr().accept(this); - print(") "); + print0(") "); } else { - print("COLUMNS ("); + print0(ucase ? "COLUMNS (" : "columns ("); printAndAccept(x.getColumns(), ", "); - print(") "); + print0(") "); } if (x.getPartitionCount() != null) { - print(" PARTITIONS "); + print0(ucase ? " PARTITIONS " : " partitions "); x.getPartitionCount().accept(this); } List partitions = x.getPartitions(); int partitionsSize = partitions.size(); if (partitionsSize > 0) { - print("("); + print('('); incrementIndent(); for (int i = 0; i < partitionsSize; ++i) { println(); partitions.get(i).accept(this); if (i != partitionsSize - 1) { - print(", "); + print0(", "); } } decrementIndent(); println(); - print(")"); + print(')'); } return false; } @@ -1643,16 +1643,16 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlPartitionByHash x) { if (x.isLinear()) { - print("PARTITION BY LINEAR HASH ("); + print0(ucase ? "PARTITION BY LINEAR HASH (" : "partition by linear hash ("); } else { - print("PARTITION BY HASH ("); + print0(ucase ? "PARTITION BY HASH (" : "partition by hash ("); } // x.getExpr().accept(this); - print(")"); + print(')'); if (x.getPartitionCount() != null) { - print(" PARTITIONS "); + print0(ucase ? " PARTITIONS " : " partitions "); x.getPartitionCount().accept(this); } @@ -1666,44 +1666,44 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlOutFileExpr x) { - print("OUTFILE "); + print0(ucase ? "OUTFILE " : "outfile "); x.getFile().accept(this); if (x.getCharset() != null) { - print(" CHARACTER SET "); - print(x.getCharset()); + print0(ucase ? " CHARACTER SET " : " character set "); + print0(x.getCharset()); } if (x.getColumnsTerminatedBy() != null || x.getColumnsEnclosedBy() != null || x.getColumnsEscaped() != null) { - print(" COLUMNS"); + print0(ucase ? " COLUMNS" : " columns"); if (x.getColumnsTerminatedBy() != null) { - print(" TERMINATED BY "); + print0(ucase ? " TERMINATED BY " : " terminated by "); x.getColumnsTerminatedBy().accept(this); } if (x.getColumnsEnclosedBy() != null) { if (x.isColumnsEnclosedOptionally()) { - print(" OPTIONALLY"); + print0(ucase ? " OPTIONALLY" : " optionally"); } - print(" ENCLOSED BY "); + print0(ucase ? " ENCLOSED BY " : " enclosed by "); x.getColumnsEnclosedBy().accept(this); } if (x.getColumnsEscaped() != null) { - print(" ESCAPED BY "); + print0(ucase ? " ESCAPED BY " : " escaped by "); x.getColumnsEscaped().accept(this); } } if (x.getLinesStartingBy() != null || x.getLinesTerminatedBy() != null) { - print(" LINES"); + print0(ucase ? " LINES" : " lines"); if (x.getLinesStartingBy() != null) { - print(" STARTING BY "); + print0(ucase ? " STARTING BY " : " starting by "); x.getLinesStartingBy().accept(this); } if (x.getLinesTerminatedBy() != null) { - print(" TERMINATED BY "); + print0(ucase ? " TERMINATED BY " : " terminated by "); x.getLinesTerminatedBy().accept(this); } } @@ -1718,10 +1718,10 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlDescribeStatement x) { - print("DESC "); + print0(ucase ? "DESC " : "desc "); x.getObject().accept(this); if (x.getColName() != null) { - print(" "); + print(' '); x.getColName().accept(this); } return false; @@ -1734,23 +1734,23 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlUpdateStatement x) { - print("UPDATE "); + print0(ucase ? "UPDATE " : "update "); if (x.isLowPriority()) { - print("LOW_PRIORITY "); + print0(ucase ? "LOW_PRIORITY " : "low_priority "); } if (x.isIgnore()) { - print("IGNORE "); + print0(ucase ? "IGNORE " : "ignore "); } x.getTableSource().accept(this); println(); - print("SET "); + print0(ucase ? "SET " : "set "); for (int i = 0, size = x.getItems().size(); i < size; ++i) { if (i != 0) { - print(", "); + print0(", "); } x.getItems().get(i).accept(this); } @@ -1758,7 +1758,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV if (x.getWhere() != null) { println(); incrementIndent(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); x.getWhere().setParent(x); x.getWhere().accept(this); decrementIndent(); @@ -1784,21 +1784,21 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlSetTransactionStatement x) { if (x.getGlobal() == null) { - print("SET TRANSACTION "); + print0(ucase ? "SET TRANSACTION " : "set transaction "); } else if (x.getGlobal().booleanValue()) { - print("SET GLOBAL TRANSACTION "); + print0(ucase ? "SET GLOBAL TRANSACTION " : "set global transaction "); } else { - print("SET SESSION TRANSACTION "); + print0(ucase ? "SET SESSION TRANSACTION " : "set session transaction "); } if (x.getIsolationLevel() != null) { - print("ISOLATION LEVEL "); - print(x.getIsolationLevel()); + print0(ucase ? "ISOLATION LEVEL " : "isolation level "); + print0(x.getIsolationLevel()); } if (x.getAccessModel() != null) { - print("READ "); - print(x.getAccessModel()); + print0(ucase ? "READ " : "read "); + print0(x.getAccessModel()); } return false; @@ -1811,14 +1811,14 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlSetNamesStatement x) { - print("SET NAMES "); + print0(ucase ? "SET NAMES " : "set names "); if (x.isDefault()) { - print("DEFAULT"); + print0(ucase ? "DEFAULT" : "default"); } else { - print(x.getCharSet()); + print0(x.getCharSet()); if (x.getCollate() != null) { - print(" COLLATE "); - print(x.getCollate()); + print0(ucase ? " COLLATE " : " collate "); + print0(x.getCollate()); } } return false; @@ -1831,14 +1831,14 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlSetCharSetStatement x) { - print("SET CHARACTER SET "); + print0(ucase ? "SET CHARACTER SET " : "set character set "); if (x.isDefault()) { - print("DEFAULT"); + print0(ucase ? "DEFAULT" : "default"); } else { - print(x.getCharSet()); + print0(x.getCharSet()); if (x.getCollate() != null) { - print(" COLLATE "); - print(x.getCollate()); + print0(ucase ? " COLLATE " : " collate "); + print0(x.getCollate()); } } return false; @@ -1856,7 +1856,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowAuthorsStatement x) { - print("SHOW AUTHORS"); + print0(ucase ? "SHOW AUTHORS" : "show authors"); return false; } @@ -1867,13 +1867,13 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowBinaryLogsStatement x) { - print("SHOW BINARY LOGS"); + print0(ucase ? "SHOW BINARY LOGS" : "show binary logs"); return false; } @Override public boolean visit(MySqlShowMasterLogsStatement x) { - print("SHOW MASTER LOGS"); + print0(ucase ? "SHOW MASTER LOGS" : "show master logs"); return false; } @@ -1884,13 +1884,13 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowCollationStatement x) { - print("SHOW COLLATION"); + print0(ucase ? "SHOW COLLATION" : "show collation"); if (x.getPattern() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getPattern().accept(this); } if (x.getWhere() != null) { - print(" WHERE "); + print0(ucase ? " WHERE " : " where "); x.getWhere().accept(this); } return false; @@ -1903,17 +1903,17 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowBinLogEventsStatement x) { - print("SHOW BINLOG EVENTS"); + print0(ucase ? "SHOW BINLOG EVENTS" : "show binlog events"); if (x.getIn() != null) { - print(" IN "); + print0(ucase ? " IN " : " in "); x.getIn().accept(this); } if (x.getFrom() != null) { - print(" FROM "); + print0(ucase ? " FROM " : " from "); x.getFrom().accept(this); } if (x.getLimit() != null) { - print(" "); + print(' '); x.getLimit().accept(this); } return false; @@ -1926,13 +1926,13 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowCharacterSetStatement x) { - print("SHOW CHARACTER SET"); + print0(ucase ? "SHOW CHARACTER SET" : "show character set"); if (x.getPattern() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getPattern().accept(this); } if (x.getWhere() != null) { - print(" WHERE "); + print0(ucase ? " WHERE " : " where "); x.getWhere().accept(this); } return false; @@ -1945,7 +1945,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowContributorsStatement x) { - print("SHOW CONTRIBUTORS"); + print0(ucase ? "SHOW CONTRIBUTORS" : "show contributors"); return false; } @@ -1956,7 +1956,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowCreateDatabaseStatement x) { - print("SHOW CREATE DATABASE "); + print0(ucase ? "SHOW CREATE DATABASE " : "show create database "); x.getDatabase().accept(this); return false; } @@ -1968,7 +1968,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowCreateEventStatement x) { - print("SHOW CREATE EVENT "); + print0(ucase ? "SHOW CREATE EVENT " : "show create event "); x.getEventName().accept(this); return false; } @@ -1980,7 +1980,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowCreateFunctionStatement x) { - print("SHOW CREATE FUNCTION "); + print0(ucase ? "SHOW CREATE FUNCTION " : "show create function "); x.getName().accept(this); return false; } @@ -1992,7 +1992,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowCreateProcedureStatement x) { - print("SHOW CREATE PROCEDURE "); + print0(ucase ? "SHOW CREATE PROCEDURE " : "show create procedure "); x.getName().accept(this); return false; } @@ -2004,7 +2004,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowCreateTableStatement x) { - print("SHOW CREATE TABLE "); + print0(ucase ? "SHOW CREATE TABLE " : "show create table "); x.getName().accept(this); return false; } @@ -2016,7 +2016,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowCreateTriggerStatement x) { - print("SHOW CREATE TRIGGER "); + print0(ucase ? "SHOW CREATE TRIGGER " : "show create trigger "); x.getName().accept(this); return false; } @@ -2028,7 +2028,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowCreateViewStatement x) { - print("SHOW CREATE VIEW "); + print0(ucase ? "SHOW CREATE VIEW " : "show create view "); x.getName().accept(this); return false; } @@ -2040,10 +2040,10 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowEngineStatement x) { - print("SHOW ENGINE "); + print0(ucase ? "SHOW ENGINE " : "show engine "); x.getName().accept(this); print(' '); - print(x.getOption().name()); + print0(x.getOption().name()); return false; } @@ -2054,19 +2054,19 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowEventsStatement x) { - print("SHOW EVENTS"); + print0(ucase ? "SHOW EVENTS" : "show events"); if (x.getSchema() != null) { - print(" FROM "); + print0(ucase ? " FROM " : " from "); x.getSchema().accept(this); } if (x.getLike() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getLike().accept(this); } if (x.getWhere() != null) { - print(" WHERE "); + print0(ucase ? " WHERE " : " where "); x.getWhere().accept(this); } @@ -2080,7 +2080,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowFunctionCodeStatement x) { - print("SHOW FUNCTION CODE "); + print0(ucase ? "SHOW FUNCTION CODE " : "show function code "); x.getName().accept(this); return false; } @@ -2092,14 +2092,14 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowFunctionStatusStatement x) { - print("SHOW FUNCTION STATUS"); + print0(ucase ? "SHOW FUNCTION STATUS" : "show function status"); if (x.getLike() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getLike().accept(this); } if (x.getWhere() != null) { - print(" WHERE "); + print0(ucase ? " WHERE " : " where "); x.getWhere().accept(this); } @@ -2114,9 +2114,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowEnginesStatement x) { if (x.isStorage()) { - print("SHOW STORAGE ENGINES"); + print0(ucase ? "SHOW STORAGE ENGINES" : "show storage engines"); } else { - print("SHOW ENGINES"); + print0(ucase ? "SHOW ENGINES" : "show engines"); } return false; } @@ -2129,9 +2129,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowErrorsStatement x) { if (x.isCount()) { - print("SHOW COUNT(*) ERRORS"); + print0(ucase ? "SHOW COUNT(*) ERRORS" : "show count(*) errors"); } else { - print("SHOW ERRORS"); + print0(ucase ? "SHOW ERRORS" : "show errors"); if (x.getLimit() != null) { print(' '); x.getLimit().accept(this); @@ -2147,9 +2147,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowGrantsStatement x) { - print("SHOW GRANTS"); + print0(ucase ? "SHOW GRANTS" : "show grants"); if (x.getUser() != null) { - print(" FOR "); + print0(ucase ? " FOR " : " for "); x.getUser().accept(this); } return false; @@ -2162,10 +2162,10 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlUserName x) { - print(x.getUserName()); + print0(x.getUserName()); if (x.getHost() != null) { print('@'); - print(x.getHost()); + print0(x.getHost()); } return false; } @@ -2177,10 +2177,10 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowIndexesStatement x) { - print("SHOW INDEX"); + print0(ucase ? "SHOW INDEX" : "show index"); if (x.getTable() != null) { - print(" FROM "); + print0(ucase ? " FROM " : " from "); if (x.getDatabase() != null) { x.getDatabase().accept(this); print('.'); @@ -2189,7 +2189,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } if (x.getHints() != null && x.getHints().size() > 0) { - print(" "); + print(' '); printAndAccept(x.getHints(), " "); } @@ -2203,10 +2203,10 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowKeysStatement x) { - print("SHOW KEYS"); + print0(ucase ? "SHOW KEYS" : "show keys"); if (x.getTable() != null) { - print(" FROM "); + print0(ucase ? " FROM " : " from "); if (x.getDatabase() != null) { x.getDatabase().accept(this); print('.'); @@ -2223,7 +2223,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowMasterStatusStatement x) { - print("SHOW MASTER STATUS"); + print0(ucase ? "SHOW MASTER STATUS" : "show master status"); return false; } @@ -2234,20 +2234,20 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowOpenTablesStatement x) { - print("SHOW OPEN TABLES"); + print0(ucase ? "SHOW OPEN TABLES" : "show open tables"); if (x.getDatabase() != null) { - print(" FROM "); + print0(ucase ? " FROM " : " from "); x.getDatabase().accept(this); } if (x.getLike() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getLike().accept(this); } if (x.getWhere() != null) { - print(" WHERE "); + print0(ucase ? " WHERE " : " where "); x.getWhere().accept(this); } @@ -2261,7 +2261,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowPluginsStatement x) { - print("SHOW PLUGINS"); + print0(ucase ? "SHOW PLUGINS" : "show plugins"); return false; } @@ -2272,7 +2272,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowPrivilegesStatement x) { - print("SHOW PRIVILEGES"); + print0(ucase ? "SHOW PRIVILEGES" : "show privileges"); return false; } @@ -2283,7 +2283,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowProcedureCodeStatement x) { - print("SHOW PROCEDURE CODE "); + print0(ucase ? "SHOW PROCEDURE CODE " : "show procedure code "); x.getName().accept(this); return false; } @@ -2295,14 +2295,14 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowProcedureStatusStatement x) { - print("SHOW PROCEDURE STATUS"); + print0(ucase ? "SHOW PROCEDURE STATUS" : "show procedure status"); if (x.getLike() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getLike().accept(this); } if (x.getWhere() != null) { - print(" WHERE "); + print0(ucase ? " WHERE " : " where "); x.getWhere().accept(this); } return false; @@ -2316,9 +2316,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowProcessListStatement x) { if (x.isFull()) { - print("SHOW FULL PROCESSLIST"); + print0(ucase ? "SHOW FULL PROCESSLIST" : "show full processlist"); } else { - print("SHOW PROCESSLIST"); + print0(ucase ? "SHOW PROCESSLIST" : "show processlist"); } return false; } @@ -2330,18 +2330,18 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowProfileStatement x) { - print("SHOW PROFILE"); + print0(ucase ? "SHOW PROFILE" : "show profile"); for (int i = 0; i < x.getTypes().size(); ++i) { if (i == 0) { print(' '); } else { - print(", "); + print0(", "); } - print(x.getTypes().get(i).name); + print0(x.getTypes().get(i).name); } if (x.getForQuery() != null) { - print(" FOR QUERY "); + print0(ucase ? " FOR QUERY " : " for query "); x.getForQuery().accept(this); } @@ -2359,7 +2359,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowProfilesStatement x) { - print("SHOW PROFILES"); + print0(ucase ? "SHOW PROFILES" : "show profiles"); return false; } @@ -2370,15 +2370,15 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowRelayLogEventsStatement x) { - print("SHOW RELAYLOG EVENTS"); + print0("SHOW RELAYLOG EVENTS"); if (x.getLogName() != null) { - print(" IN "); + print0(ucase ? " IN " : " in "); x.getLogName().accept(this); } if (x.getFrom() != null) { - print(" FROM "); + print0(ucase ? " FROM " : " from "); x.getFrom().accept(this); } @@ -2397,7 +2397,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowSlaveHostsStatement x) { - print("SHOW SLAVE HOSTS"); + print0(ucase ? "SHOW SLAVE HOSTS" : "show slave hosts"); return false; } @@ -2408,7 +2408,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowSlaveStatusStatement x) { - print("SHOW SLAVE STATUS"); + print0(ucase ? "SHOW SLAVE STATUS" : "show slave status"); return false; } @@ -2419,19 +2419,19 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowTableStatusStatement x) { - print("SHOW TABLE STATUS"); + print0(ucase ? "SHOW TABLE STATUS" : "show table status"); if (x.getDatabase() != null) { - print(" FROM "); + print0(ucase ? " FROM " : " from "); x.getDatabase().accept(this); } if (x.getLike() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getLike().accept(this); } if (x.getWhere() != null) { - print(" WHERE "); + print0(ucase ? " WHERE " : " where "); x.getWhere().accept(this); } @@ -2445,20 +2445,20 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowTriggersStatement x) { - print("SHOW TRIGGERS"); + print0(ucase ? "SHOW TRIGGERS" : "show triggers"); if (x.getDatabase() != null) { - print(" FROM "); + print0(ucase ? " FROM " : " from "); x.getDatabase().accept(this); } if (x.getLike() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getLike().accept(this); } if (x.getWhere() != null) { - print(" WHERE "); + print0(ucase ? " WHERE " : " where "); x.getWhere().setParent(x); x.getWhere().accept(this); } @@ -2473,25 +2473,25 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlShowVariantsStatement x) { - print("SHOW "); + print0(ucase ? "SHOW " : "show "); if (x.isGlobal()) { - print("GLOBAL "); + print0(ucase ? "GLOBAL " : "global "); } if (x.isSession()) { - print("SESSION "); + print0(ucase ? "SESSION " : "session "); } - print("VARIABLES"); + print0(ucase ? "VARIABLES" : "variables"); if (x.getLike() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getLike().accept(this); } if (x.getWhere() != null) { - print(" WHERE "); + print0(ucase ? " WHERE " : " where "); x.getWhere().setParent(x); x.getWhere().accept(this); } @@ -2507,9 +2507,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlAlterTableStatement x) { if (x.isIgnore()) { - print("ALTER IGNORE TABLE "); + print0(ucase ? "ALTER IGNORE TABLE " : "alter ignore table "); } else { - print("ALTER TABLE "); + print0(ucase ? "ALTER TABLE " : "alter table "); } x.getName().accept(this); incrementIndent(); @@ -2532,24 +2532,24 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlAlterTableAddColumn x) { - print("ADD COLUMN "); + print0(ucase ? "ADD COLUMN " : "add column "); if (x.getColumns().size() > 1) { - print("("); + print('('); } printAndAccept(x.getColumns(), ", "); if (x.getFirstColumn() != null) { - print(" FIRST "); + print0(ucase ? " FIRST " : " first "); x.getFirstColumn().accept(this); } else if (x.getAfterColumn() != null) { - print(" AFTER "); + print0(ucase ? " AFTER " : " after "); x.getAfterColumn().accept(this); } else if (x.isFirst()) { - print(" FIRST"); + print0(ucase ? " FIRST" : " first"); } if (x.getColumns().size() > 1) { - print(")"); + print(')'); } return false; } @@ -2561,24 +2561,24 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlCreateIndexStatement x) { - print("CREATE "); + print0(ucase ? "CREATE " : "create "); if (x.getType() != null) { - print(x.getType()); - print(" "); + print0(x.getType()); + print(' '); } - print("INDEX "); + print0(ucase ? "INDEX " : "index "); x.getName().accept(this); - print(" ON "); + print0(ucase ? " ON " : " on "); x.getTable().accept(this); - print(" ("); + print0(" ("); printAndAccept(x.getItems(), ", "); - print(")"); + print(')'); if (x.getUsing() != null) { - print(" USING "); - print(x.getUsing()); + print0(ucase ? " USING " : " using ");; + print0(x.getUsing()); } return false; } @@ -2591,7 +2591,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlRenameTableStatement.Item x) { x.getName().accept(this); - print(" TO "); + print0(ucase ? " TO " : " to "); x.getTo().accept(this); return false; } @@ -2603,7 +2603,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlRenameTableStatement x) { - print("RENAME TABLE "); + print0(ucase ? "RENAME TABLE " : "rename table "); printAndAccept(x.getItems(), ", "); return false; } @@ -2632,7 +2632,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } } println(); - print(x.getOperator().name); + print0(ucase ? x.getOperator().name : x.getOperator().name_lcase); println(); boolean needParen = false; @@ -2674,10 +2674,10 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlUseIndexHint x) { - print("USE INDEX "); + print0(ucase ? "USE INDEX " : "use index "); if (x.getOption() != null) { - print("FOR "); - print(x.getOption().name); + print0(ucase ? "FOR " : "for "); + print0(x.getOption().name); print(' '); } print('('); @@ -2693,10 +2693,10 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlIgnoreIndexHint x) { - print("IGNORE INDEX "); + print0(ucase ? "IGNORE INDEX " : "ignore index "); if (x.getOption() != null) { - print("FOR "); - print(x.getOption().name); + print0(ucase ? "FOR " : "for "); + print0(ucase ? x.getOption().name : x.getOption().name_lcase); print(' '); } print('('); @@ -2715,7 +2715,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV if (x.getAlias() != null) { print(' '); - print(x.getAlias()); + print0(x.getAlias()); } for (int i = 0; i < x.getHintsSize(); ++i) { @@ -2728,15 +2728,15 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlLockTableStatement x) { - print("LOCK TABLES "); + print0(ucase ? "LOCK TABLES " : "lock tables "); x.getTableSource().accept(this); if (x.getLockType() != null) { print(' '); - print(x.getLockType().name); + print0(x.getLockType().name); } if (x.getHints() != null && x.getHints().size() > 0) { - print(" "); + print(' '); printAndAccept(x.getHints(), " "); } return false; @@ -2749,7 +2749,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlUnlockTablesStatement x) { - print("UNLOCK TABLES"); + print0(ucase ? "UNLOCK TABLES" : "unlock tables"); return false; } @@ -2760,10 +2760,10 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlForceIndexHint x) { - print("FORCE INDEX "); + print0(ucase ? "FORCE INDEX " : "force index "); if (x.getOption() != null) { - print("FOR "); - print(x.getOption().name); + print0(ucase ? "FOR " : "for "); + print0(x.getOption().name); print(' '); } print('('); @@ -2779,18 +2779,18 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlAlterTableChangeColumn x) { - print("CHANGE COLUMN "); + print0(ucase ? "CHANGE COLUMN " : "change column "); x.getColumnName().accept(this); print(' '); x.getNewColumnDefinition().accept(this); if (x.getFirstColumn() != null) { - print(" FIRST "); + print0(ucase ? " FIRST " : " first "); x.getFirstColumn().accept(this); } else if (x.getAfterColumn() != null) { - print(" AFTER "); + print0(ucase ? " AFTER " : " after "); x.getAfterColumn().accept(this); } else if (x.isFirst()) { - print(" FIRST"); + print0(ucase ? " FIRST" : " first"); } return false; @@ -2803,16 +2803,16 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlAlterTableModifyColumn x) { - print("MODIFY COLUMN "); + print0(ucase ? "MODIFY COLUMN " : "modify column "); x.getNewColumnDefinition().accept(this); if (x.getFirstColumn() != null) { - print(" FIRST "); + print0(ucase ? " FIRST " : " first "); x.getFirstColumn().accept(this); } else if (x.getAfterColumn() != null) { - print(" AFTER "); + print0(ucase ? " AFTER " : " after "); x.getAfterColumn().accept(this); } else if (x.isFirst()) { - print(" FIRST"); + print0(ucase ? " FIRST" : " first"); } return false; @@ -2825,11 +2825,11 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlAlterTableCharacter x) { - print("CHARACTER SET = "); + print0(ucase ? "CHARACTER SET = " : "character set = "); x.getCharacterSet().accept(this); if (x.getCollate() != null) { - print(", COLLATE = "); + print0(ucase ? ", COLLATE = " : ", collate = "); x.getCollate().accept(this); } @@ -2843,9 +2843,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlAlterTableOption x) { - print(x.getName()); - print(" = "); - print(x.getValue().toString()); + print0(x.getName()); + print0(" = "); + print0(x.getValue().toString()); return false; } @@ -2861,7 +2861,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlHelpStatement x) { - print("HELP "); + print0(ucase ? "HELP " : "help "); x.getContent().accept(this); return false; } @@ -2873,7 +2873,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlCharExpr x) { - print(x.toString()); + print0(x.toString()); return false; } @@ -2885,14 +2885,14 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlUnique x) { if (x.isHasConstaint()) { - print("CONSTRAINT "); + print0(ucase ? "CONSTRAINT " : "constraint "); if (x.getName() != null) { x.getName().accept(this); print(' '); } } - print("UNIQUE"); + print0(ucase ? "UNIQUE" : "unique"); if (x.getIndexName() != null) { print(' '); @@ -2900,13 +2900,13 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } if (x.getIndexType() != null) { - print(" USING "); - print(x.getIndexType()); + print0(ucase ? " USING " : " using ");; + print0(x.getIndexType()); } - print(" ("); + print0(" ("); printAndAccept(x.getColumns(), ", "); - print(")"); + print(')'); return false; } @@ -2914,42 +2914,42 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MysqlForeignKey x) { if (x.isHasConstraint()) { - print("CONSTRAINT "); + print0(ucase ? "CONSTRAINT " : "constraint "); if (x.getName() != null) { x.getName().accept(this); print(' '); } } - print("FOREIGN KEY"); + print0(ucase ? "FOREIGN KEY" : "foreign key"); if (x.getIndexName() != null) { print(' '); x.getIndexName().accept(this); } - print(" ("); + print0(" ("); printAndAccept(x.getReferencingColumns(), ", "); - print(")"); + print(')'); - print(" REFERENCES "); + print0(ucase ? " REFERENCES " : " references "); x.getReferencedTableName().accept(this); - print(" ("); + print0(" ("); printAndAccept(x.getReferencedColumns(), ", "); - print(")"); + print(')'); if(x.getReferenceMatch() != null) { - print(" MATCH "); - print(x.getReferenceMatch().name()); + print0(ucase ? " MATCH " : " match "); + print0(x.getReferenceMatch().name()); } if(x.getReferenceOn()!= null) { - print(" ON "); - print(x.getReferenceOn().name()); - print(" "); + print0(ucase ? " ON " : " on "); + print0(x.getReferenceOn().name()); + print(' '); if(x.getReferenceOption() != null) { - print(x.getReferenceOption().getText()); + print0(x.getReferenceOption().getText()); } } return false; @@ -2962,7 +2962,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlAlterTableDiscardTablespace x) { - print("DISCARD TABLESPACE"); + print0(ucase ? "DISCARD TABLESPACE" : "discard tablespace"); return false; } @@ -2973,7 +2973,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlAlterTableImportTablespace x) { - print("IMPORT TABLESPACE"); + print0(ucase ? "IMPORT TABLESPACE" : "import tablespace"); return false; } @@ -2986,7 +2986,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV public boolean visit(SQLAssignItem x) { x.getTarget().accept(this); if (!"NAMES".equalsIgnoreCase(x.getTarget().toString())) { - print(" = "); + print0(" = "); } x.getValue().accept(this); return false; @@ -3010,7 +3010,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlPartitioningDef x) { - print("PARTITION "); + print0(ucase ? "PARTITION " : "partition "); x.getName().accept(this); if (x.getValues() != null) { print(' '); @@ -3020,14 +3020,14 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV if (x.getDataDirectory() != null) { incrementIndent(); println(); - print("DATA DIRECTORY "); + print0(ucase ? "DATA DIRECTORY " : "data directory "); x.getDataDirectory().accept(this); decrementIndent(); } if (x.getIndexDirectory() != null) { incrementIndent(); println(); - print("INDEX DIRECTORY "); + print0(ucase ? "INDEX DIRECTORY " : "index directory "); x.getIndexDirectory().accept(this); decrementIndent(); } @@ -3042,7 +3042,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(LessThanValues x) { - print("VALUES LESS THAN ("); + print0(ucase ? "VALUES LESS THAN (" : "values less than ("); printAndAccept(x.getItems(), ", "); print(')'); return false; @@ -3055,7 +3055,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(InValues x) { - print("VALUES IN ("); + print0(ucase ? "VALUES IN (" : "values in ("); printAndAccept(x.getItems(), ", "); print(')'); return false; @@ -3070,14 +3070,14 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV { SQLOrderBy value = (SQLOrderBy) aggregateExpr.getAttribute("ORDER BY"); if (value != null) { - print(" "); + print(' '); ((SQLObject) value).accept(this); } } { Object value = aggregateExpr.getAttribute("SEPARATOR"); if (value != null) { - print(" SEPARATOR "); + print0(ucase ? " SEPARATOR " : " separator "); ((SQLObject) value).accept(this); } } @@ -3085,16 +3085,16 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlAnalyzeStatement x) { - print("ANALYZE "); + print0(ucase ? "ANALYZE " : "analyze "); if (x.isNoWriteToBinlog()) { - print("NO_WRITE_TO_BINLOG "); + print0(ucase ? "NO_WRITE_TO_BINLOG " : "no_write_to_binlog "); } if (x.isLocal()) { - print("LOCAL "); + print0(ucase ? "LOCAL " : "local "); } - print("TABLE "); + print0(ucase ? "TABLE " : "table "); printAndAccept(x.getTableSources(), ", "); return false; @@ -3107,16 +3107,16 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlOptimizeStatement x) { - print("OPTIMIZE "); + print0(ucase ? "OPTIMIZE " : "optimize "); if (x.isNoWriteToBinlog()) { - print("NO_WRITE_TO_BINLOG "); + print0(ucase ? "NO_WRITE_TO_BINLOG " : "No_write_to_binlog "); } if (x.isLocal()) { - print("LOCAL "); + print0(ucase ? "LOCAL " : "local "); } - print("TABLE "); + print0(ucase ? "TABLE " : "table "); printAndAccept(x.getTableSources(), ", "); return false; @@ -3129,11 +3129,11 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlAlterUserStatement x) { - print("ALTER USER"); + print0(ucase ? "ALTER USER" : "alter user"); for (SQLExpr user : x.getUsers()) { print(' '); user.accept(this); - print(" PASSWORD EXPIRE"); + print0(ucase ? " PASSWORD EXPIRE" : " password expire"); } return false; } @@ -3145,15 +3145,15 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlSetPasswordStatement x) { - print("SET PASSWORD "); + print0(ucase ? "SET PASSWORD " : "set password "); if (x.getUser() != null) { - print("FOR "); + print0(ucase ? "FOR " : "for "); x.getUser().accept(this); print(' '); } - print("= "); + print0("= "); if (x.getPassword() != null) { x.getPassword().accept(this); @@ -3185,8 +3185,8 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV public boolean visit(MySqlSelectGroupByExpr x) { x.getExpr().accept(this); if (x.getType() != null) { - print(" "); - print(x.getType().name().toUpperCase()); + print(' '); + print0(x.getType().name()); } return false; @@ -3199,9 +3199,11 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlBlockStatement x) { - if(x.getLabelName()!=null&&!x.getLabelName().equals("")) - print(x.getLabelName()+": "); - print("BEGIN"); + if (x.getLabelName() != null && !x.getLabelName().equals("")) { + print0(x.getLabelName()); + print0(": "); + } + print0(ucase ? "BEGIN" : "begin"); incrementIndent(); println(); for (int i = 0, size = x.getStatementList().size(); i < size; ++i) { @@ -3211,13 +3213,15 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV SQLStatement stmt = x.getStatementList().get(i); stmt.setParent(x); stmt.accept(this); - print(";"); + print(';'); } decrementIndent(); println(); - print("END"); - if(x.getLabelName()!=null&&!x.getLabelName().equals("")) - print(" "+x.getLabelName()); + print0(ucase ? "END" : "end"); + if (x.getLabelName() != null && !x.getLabelName().equals("")) { + print(' '); + print0(x.getLabelName()); + } return false; } @@ -3233,22 +3237,22 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlCreateProcedureStatement x) { if (x.isOrReplace()) { - print("CREATE OR REPLACE PROCEDURE "); + print0(ucase ? "CREATE OR REPLACE PROCEDURE " : "create or replace procedure "); } else { - print("CREATE PROCEDURE "); + print0(ucase ? "CREATE PROCEDURE " : "create procedure "); } x.getName().accept(this); int paramSize = x.getParameters().size(); if (paramSize > 0) { - print(" ("); + print0(" ("); incrementIndent(); println(); for (int i = 0; i < paramSize; ++i) { if (i != 0) { - print(", "); + print0(", "); println(); } MySqlParameter param = x.getParameters().get(i); @@ -3257,7 +3261,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV decrementIndent(); println(); - print(")"); + print(')'); } println(); @@ -3274,9 +3278,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlParameter x) { if (x.getDataType().getName().equalsIgnoreCase("CURSOR")) { - print("CURSOR "); + print0(ucase ? "CURSOR " : "cursor "); x.getName().accept(this); - print(" IS"); + print0(ucase ? " IS" : " is"); incrementIndent(); println(); SQLSelect select = ((SQLQueryExpr) x.getDefaultValue()).getSubQuery(); @@ -3287,23 +3291,23 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV if(x.getParamType()==ParameterType.IN) { - print("IN "); + print0(ucase ? "IN " : "in "); } else if(x.getParamType()==ParameterType.OUT) { - print("OUT "); + print0(ucase ? "OUT " : "out "); } else if(x.getParamType()==ParameterType.INOUT) { - print("INOUT "); + print0(ucase ? "INOUT " : "inout "); } x.getName().accept(this); - print(" "); + print(' '); x.getDataType().accept(this); if (x.getDefaultValue() != null) { - print(" := "); + print0(" := "); x.getDefaultValue().accept(this); } } @@ -3318,11 +3322,13 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlWhileStatement x) { - if(x.getLabelName()!=null&&!x.getLabelName().equals("")) - print(x.getLabelName()+": "); - print("WHILE "); + if (x.getLabelName() != null && !x.getLabelName().equals("")) { + print0(x.getLabelName()); + print0(": "); + } + print0(ucase ? "WHILE " : "while "); x.getCondition().accept(this); - print(" DO"); + print0(ucase ? " DO" : " do"); println(); for (int i = 0, size = x.getStatements().size(); i < size; ++i) { SQLStatement item = x.getStatements().get(i); @@ -3333,9 +3339,10 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } } println(); - print("END WHILE"); + print0(ucase ? "END WHILE" : "end while"); if(x.getLabelName()!=null&&!x.getLabelName().equals("")) - print(" "+x.getLabelName()); + print(' '); + print0(x.getLabelName()); return false; } @@ -3346,9 +3353,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlIfStatement x) { - print("IF "); + print0(ucase ? "IF " : "if "); x.getCondition().accept(this); - print(" THEN"); + print0(ucase ? " THEN" : " then"); println(); for (int i = 0, size = x.getStatements().size(); i < size; ++i) { SQLStatement item = x.getStatements().get(i); @@ -3366,7 +3373,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV if(x.getElseItem()!=null) x.getElseItem().accept(this); - print("END IF"); + print0(ucase ? "END IF" : "end if"); return false; } @@ -3377,9 +3384,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlElseIfStatement x) { - print("ELSE IF "); + print0(ucase ? "ELSE IF " : "else if "); x.getCondition().accept(this); - print(" THEN"); + print0(ucase ? " THEN" : " then"); println(); for (int i = 0, size = x.getStatements().size(); i < size; ++i) { SQLStatement item = x.getStatements().get(i); @@ -3400,7 +3407,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlElseStatement x) { - print("ELSE "); + print0(ucase ? "ELSE " : "else "); println(); for (int i = 0, size = x.getStatements().size(); i < size; ++i) { SQLStatement item = x.getStatements().get(i); @@ -3421,8 +3428,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlCaseStatement x) { - - print("CASE "); + print0(ucase ? "CASE " : "case "); x.getCondition().accept(this); println(); for (int i = 0; i < x.getWhenList().size(); i++) { @@ -3430,7 +3436,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } if(x.getElseItem()!=null) x.getElseItem().accept(this); - print("END CASE"); + print0(ucase ? "END CASE" : "end case"); return false; } @@ -3441,13 +3447,13 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlDeclareStatement x) { - print("DECLARE "); + print0(ucase ? "DECLARE " : "declare "); for (int i = 0; i < x.getVarList().size(); i++) { x.getVarList().get(i).accept(this); if(i!=x.getVarList().size()-1) - print(","); + print0(", "); } - print(" "); + print(' '); x.getType().accept(this); return false; } @@ -3460,11 +3466,11 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlSelectIntoStatement x) { x.getSelect().accept(this); - print(" INTO "); + print0(ucase ? " INTO " : " into "); for (int i = 0; i < x.getVarList().size(); i++) { x.getVarList().get(i).accept(this); if(i!=x.getVarList().size()-1) - print(","); + print0(", "); } return false; } @@ -3476,9 +3482,10 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlWhenStatement x) { - print("WHEN "); + print0(ucase ? "WHEN " : "when "); x.getCondition().accept(this); - println(" THEN"); + print0(" THEN"); + println(); for (int i = 0; i < x.getStatements().size(); i++) { x.getStatements().get(i).accept(this); if (i != x.getStatements().size() - 1) { @@ -3496,9 +3503,12 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlLoopStatement x) { - if(x.getLabelName()!=null&&!x.getLabelName().equals("")) - print(x.getLabelName()+": "); - print("LOOP "); + if(x.getLabelName()!=null&&!x.getLabelName().equals("")) { + print0(x.getLabelName()); + print0(": "); + } + + print0(ucase ? "LOOP " : "loop "); println(); for (int i = 0, size = x.getStatements().size(); i < size; ++i) { SQLStatement item = x.getStatements().get(i); @@ -3509,9 +3519,11 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } } println(); - print("END LOOP"); - if(x.getLabelName()!=null&&!x.getLabelName().equals("")) - print(" "+x.getLabelName()); + print0(ucase ? "END LOOP" : "end loop"); + if (x.getLabelName() != null && !x.getLabelName().equals("")) { + print0(" "); + print0(x.getLabelName()); + } return false; } @@ -3523,7 +3535,8 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlLeaveStatement x) { - print("LEAVE "+x.getLabelName()); + print0(ucase ? "LEAVE " : "leave "); + print0(x.getLabelName()); return false; } @@ -3535,7 +3548,8 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlIterateStatement x) { - print("ITERATE "+x.getLabelName()); + print0(ucase ? "ITERATE " : "iterate "); + print0(x.getLabelName()); return false; } @@ -3548,9 +3562,12 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlRepeatStatement x) { // TODO Auto-generated method stub - if(x.getLabelName()!=null&&!x.getLabelName().equals("")) - print(x.getLabelName()+": "); - print("REPEAT "); + if (x.getLabelName() != null && !x.getLabelName().equals("")) { + print0(x.getLabelName()); + print0(": "); + } + + print0(ucase ? "REPEAT " : "repeat "); println(); for (int i = 0, size = x.getStatements().size(); i < size; ++i) { SQLStatement item = x.getStatements().get(i); @@ -3561,12 +3578,14 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV } } println(); - print("UNTIL "); + print0(ucase ? "UNTIL " : "until "); x.getCondition().accept(this); println(); - print("END REPEAT"); - if(x.getLabelName()!=null&&!x.getLabelName().equals("")) - print(" "+x.getLabelName()); + print0(ucase ? "END REPEAT" : "end repeat"); + if (x.getLabelName() != null && !x.getLabelName().equals("")) { + print(' '); + print0(x.getLabelName()); + } return false; } @@ -3578,9 +3597,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlCursorDeclareStatement x) { - print("DECLARE "); - print(x.getCursorName()); - print(" CURSOR FOR "); + print0(ucase ? "DECLARE " : "declare "); + print0(x.getCursorName()); + print0(ucase ? " CURSOR FOR " : " cursor for "); x.getSelect().accept(this); return false; } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlParameterizedOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlParameterizedOutputVisitor.java index f9182a670b..6b4cdcdbcc 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlParameterizedOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlParameterizedOutputVisitor.java @@ -108,7 +108,7 @@ public class MySqlParameterizedOutputVisitor extends MySqlOutputVisitor implemen } if (isNumber) { String realName = name.substring(0, pos); - print(realName); + print0(realName); incrementReplaceCunt(); return false; } @@ -127,12 +127,12 @@ public class MySqlParameterizedOutputVisitor extends MySqlOutputVisitor implemen if (numberCount > 1) { int numPos = name.length() - numberCount; String realName = name.substring(0, numPos); - print(realName); + print0(realName); incrementReplaceCunt(); return false; } } - print(name); + print0(name); return false; } @@ -200,7 +200,7 @@ public class MySqlParameterizedOutputVisitor extends MySqlOutputVisitor implemen protected void printValuesList(MySqlInsertStatement x) { List valuesList = x.getValuesList(); - print("VALUES "); + print0(ucase ? "VALUES " : "values "); incrementIndent(); valuesList.get(0).accept(this); decrementIndent(); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/odps/visitor/OdpsOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/odps/visitor/OdpsOutputVisitor.java index 372eb33a7a..add24fc9b7 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/odps/visitor/OdpsOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/odps/visitor/OdpsOutputVisitor.java @@ -79,21 +79,21 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis public boolean visit(OdpsCreateTableStatement x) { if (x.isIfNotExiists()) { - print("CREATE TABLE IF NOT EXISTS "); + print0(ucase ? "CREATE TABLE IF NOT EXISTS " : "create table if not exists "); } else { - print("CREATE TABLE "); + print0(ucase ? "CREATE TABLE " : "create table "); } x.getName().accept(this); if (x.getLike() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getLike().accept(this); } int size = x.getTableElementList().size(); if (size > 0) { - print(" ("); + print0(" ("); incrementIndent(); println(); for (int i = 0; i < size; ++i) { @@ -101,7 +101,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis element.accept(this); if (i != size - 1) { - print(","); + print(','); } if (this.isPrettyFormat() && element.hasAfterComment()) { print(' '); @@ -114,19 +114,19 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis } decrementIndent(); println(); - print(")"); + print(')'); } if (x.getComment() != null) { println(); - print("COMMENT "); + print0(ucase ? "COMMENT " : "comment "); x.getComment().accept(this); } int partitionSize = x.getPartitionColumns().size(); if (partitionSize > 0) { println(); - print("PARTITIONED BY ("); + print0(ucase ? "PARTITIONED BY (" : "partitioned by ("); incrementIndent(); println(); for (int i = 0; i < partitionSize; ++i) { @@ -147,18 +147,18 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis } decrementIndent(); println(); - print(")"); + print(')'); } if (x.getLifecycle() != null) { println(); - print("LIFECYCLE "); + print0(ucase ? "LIFECYCLE " : "lifecycle "); x.getLifecycle().accept(this); } if (x.getSelect() != null) { println(); - print("AS"); + print0(ucase ? "AS" : "as"); println(); x.getSelect().accept(this); } @@ -185,14 +185,14 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsInsertStatement x) { if (x.getFrom() != null) { - print("FROM ("); + print0(ucase ? "FROM (" : "from ("); incrementIndent(); println(); x.getFrom().getSelect().accept(this); decrementIndent(); println(); - print(") "); - print(x.getFrom().getAlias()); + print0(") "); + print0(x.getFrom().getAlias()); println(); } @@ -218,29 +218,29 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis println(); } if (x.isOverwrite()) { - print("INSERT OVERWRITE TABLE "); + print0(ucase ? "INSERT OVERWRITE TABLE " : "insert overwrite table "); } else { - print("INSERT INTO TABLE "); + print0(ucase ? "INSERT INTO TABLE " : "insert into table "); } x.getTableSource().accept(this); int partitions = x.getPartitions().size(); if (partitions > 0) { - print(" PARTITION ("); + print0(ucase ? " PARTITION (" : " partition ("); for (int i = 0; i < partitions; ++i) { if (i != 0) { - print(", "); + print0(", "); } SQLAssignItem assign = x.getPartitions().get(i); assign.getTarget().accept(this); if (assign.getValue() != null) { - print("="); + print('='); assign.getValue().accept(this); } } - print(")"); + print(')'); } println(); x.getQuery().accept(this); @@ -250,7 +250,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis public boolean visit(SQLCaseExpr x) { incrementIndent(); - print("CASE "); + print0(ucase ? "CASE " : "case "); if (x.getValueExpr() != null) { x.getValueExpr().accept(this); println(); @@ -263,13 +263,13 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis if (x.getElseExpr() != null) { println(); - print("ELSE "); + print0(ucase ? "ELSE " : "else "); x.getElseExpr().accept(this); } decrementIndent(); println(); - print("END"); + print0(ucase ? "END" : "end"); return false; } @@ -277,7 +277,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis public boolean visit(SQLSelectGroupByClause x) { int itemSize = x.getItems().size(); if (itemSize > 0) { - print("GROUP BY "); + print0(ucase ? "GROUP BY " : "group by "); incrementIndent(); for (int i = 0; i < itemSize; ++i) { if (i != 0) { @@ -290,7 +290,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis if (x.getHaving() != null) { println(); - print("HAVING "); + print0(ucase ? "HAVING " : "having "); x.getHaving().accept(this); } return false; @@ -309,7 +309,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis } println(); - print(", "); + print0(", "); } selectItem.accept(this); @@ -324,17 +324,17 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(SQLSubqueryTableSource x) { - print("("); + print('('); incrementIndent(); println(); x.getSelect().accept(this); decrementIndent(); println(); - print(")"); + print(')'); if (x.getAlias() != null) { print(' '); - print(x.getAlias()); + print0(x.getAlias()); } return false; @@ -345,31 +345,31 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis x.getLeft().accept(this); if (x.getJoinType() == JoinType.COMMA) { - print(","); + print(','); } else { println(); printJoinType(x.getJoinType()); } - print(" "); + print(' '); x.getRight().accept(this); if (x.getCondition() != null) { println(); - print("ON "); + print0(ucase ? "ON " : "on "); incrementIndent(); x.getCondition().accept(this); decrementIndent(); } if (x.getUsing().size() > 0) { - print(" USING ("); + print0(ucase ? " USING (" : " using ("); printAndAccept(x.getUsing(), ", "); - print(")"); + print(')'); } if (x.getAlias() != null) { - print(" AS "); - print(x.getAlias()); + print0(ucase ? " AS " : " as "); + print0(x.getAlias()); } return false; @@ -385,7 +385,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis x.getExpr().accept(this); println(); - print("AS ("); + print0(ucase ? "AS (" : "as ("); int aliasSize = x.getAliasList().size(); if (aliasSize > 5) { @@ -398,17 +398,17 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis if (aliasSize > 5) { println(","); } else { - print(", "); + print0(", "); } } - print(x.getAliasList().get(i)); + print0(x.getAliasList().get(i)); } if (aliasSize > 5) { decrementIndent(); println(); } - print(")"); + print(')'); return false; } @@ -420,7 +420,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsShowPartitionsStmt x) { - print("SHOW PARTITIONS "); + print0(ucase ? "SHOW PARTITIONS " : "show partitions "); x.getTableSource().accept(this); return false; } @@ -432,7 +432,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsShowStatisticStmt x) { - print("SHOW STATISTIC "); + print0(ucase ? "SHOW STATISTIC " : "show statistic "); x.getTableSource().accept(this); return false; } @@ -444,20 +444,20 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsSetLabelStatement x) { - print("SET LABEL "); - print(x.getLabel()); - print(" TO "); + print0(ucase ? "SET LABEL " : "set label "); + print0(x.getLabel()); + print0(ucase ? " TO " : " to "); if (x.getUser() != null) { - print("USER "); + print0(ucase ? "USER " : "user "); x.getUser().accept(this); } else if (x.getTable() != null) { - print("TABLE "); + print0(ucase ? "TABLE " : "table "); x.getTable().accept(this); if (x.getColumns().size() > 0) { - print("("); + print('('); printAndAccept(x.getColumns(), ", "); - print(")"); + print(')'); } } @@ -476,7 +476,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis println(); } - print("SELECT "); + print0(ucase ? "SELECT " : "select "); List hints = x.getHintsDirect(); if (hints != null) { @@ -485,24 +485,24 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis } if (SQLSetQuantifier.ALL == x.getDistionOption()) { - print("ALL "); + print0(ucase ? "ALL " : "all "); } else if (SQLSetQuantifier.DISTINCT == x.getDistionOption()) { - print("DISTINCT "); + print0(ucase ? "DISTINCT " : "distinct "); } else if (SQLSetQuantifier.UNIQUE == x.getDistionOption()) { - print("UNIQUE "); + print0(ucase ? "UNIQUE " : "unique "); } printSelectList(x.getSelectList()); if (x.getFrom() != null) { println(); - print("FROM "); + print0(ucase ? "FROM " : "from "); x.getFrom().accept(this); } if (x.getWhere() != null) { println(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); if (x.getWhere().hasBeforeComment() && isPrettyFormat()) { printlnComments(x.getWhere().getBeforeCommentsDirect()); } @@ -527,18 +527,18 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis if (x.getDistributeBy() != null) { println(); - print("DISTRIBUTE BY "); + print0(ucase ? "DISTRIBUTE BY " : "distribute by "); x.getDistributeBy().accept(this); if (!x.getSortBy().isEmpty()) { - print(" SORT BY "); + print0(ucase ? " SORT BY " : " sort by "); printAndAccept(x.getSortBy(), ", "); } } if (x.getLimit() != null) { println(); - print("LIMIT "); + print0(ucase ? "LIMIT " : "limit "); x.getLimit().accept(this); } @@ -548,7 +548,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis public boolean visit(SQLOrderBy x) { int itemSize = x.getItems().size(); if (itemSize > 0) { - print("ORDER BY "); + print0(ucase ? "ORDER BY " : "order by "); incrementIndent(); for (int i = 0; i < itemSize; ++i) { if (i != 0) { @@ -569,16 +569,16 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsAnalyzeTableStatement x) { - print("ANALYZE TABLE "); + print0(ucase ? "ANALYZE TABLE " : "analyze table "); x.getTable().accept(this); if (x.getPartition().size() > 0) { - print(" PARTITION ("); + print0(ucase ? " PARTITION (" : " partition ("); printAndAccept(x.getPartition(), ", "); - print(")"); + print(')'); } - print(" COMPUTE STATISTICS"); + print0(ucase ? " COMPUTE STATISTICS" : " compute statistics"); return false; } @@ -590,9 +590,9 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsAddStatisticStatement x) { - print("ADD STATISTIC "); + print0(ucase ? "ADD STATISTIC " : "add statistic "); x.getTable().accept(this); - print(" "); + print(' '); x.getStatisticClause().accept(this); return false; @@ -605,9 +605,9 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsRemoveStatisticStatement x) { - print("REMOVE STATISTIC "); + print0(ucase ? "REMOVE STATISTIC " : "remove statistic "); x.getTable().accept(this); - print(" "); + print(' '); x.getStatisticClause().accept(this); return false; @@ -620,7 +620,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsStatisticClause.TableCount x) { - print("TABLE_COUNT"); + print0(ucase ? "TABLE_COUNT" : "table_count"); return false; } @@ -631,7 +631,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsStatisticClause.ExpressionCondition x) { - print("EXPRESSION_CONDITION "); + print0(ucase ? "EXPRESSION_CONDITION " : "expression_condition "); x.getExpr().accept(this); return false; } @@ -643,7 +643,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsStatisticClause.NullValue x) { - print("NULL_VALUE "); + print0(ucase ? "NULL_VALUE " : "null_value "); x.getColumn().accept(this); return false; } @@ -655,7 +655,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsStatisticClause.ColumnSum x) { - print("COLUMN_SUM "); + print0(ucase ? "COLUMN_SUM " : "column_sum "); x.getColumn().accept(this); return false; } @@ -667,7 +667,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsStatisticClause.ColumnMax x) { - print("COLUMN_MAX "); + print0(ucase ? "COLUMN_MAX " : "column_max "); x.getColumn().accept(this); return false; } @@ -679,7 +679,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsStatisticClause.ColumnMin x) { - print("COLUMN_MIN "); + print0(ucase ? "COLUMN_MIN " : "column_min "); x.getColumn().accept(this); return false; } @@ -691,19 +691,19 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsReadStatement x) { - print("READ "); + print0(ucase ? "READ " : "read "); x.getTable().accept(this); if (x.getColumns().size() > 0) { - print(" ("); + print0(" ("); printAndAccept(x.getColumns(), ", "); - print(")"); + print(')'); } if (x.getPartition().size() > 0) { - print(" PARTITION ("); + print0(ucase ? " PARTITION (" : " partition ("); printAndAccept(x.getPartition(), ", "); - print(")"); + print(')'); } if (x.getRowCount() != null) { @@ -717,33 +717,34 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis public boolean visit(SQLMethodInvokeExpr x) { if (x.getOwner() != null) { x.getOwner().accept(this); - print(":"); + print(':'); } printFunctionName(x.getMethodName()); - print("("); + print('('); printAndAccept(x.getParameters(), ", "); - print(")"); + print(')'); return false; } protected void printJoinType(JoinType joinType) { if (joinType.equals(JoinType.LEFT_OUTER_JOIN)) { - print("LEFT OUTER JOIN"); + print0(ucase ? "LEFT OUTER JOIN" : "left outer join"); } else if (joinType.equals(JoinType.RIGHT_OUTER_JOIN)) { - print("RIGHT OUTER JOIN"); + print0(ucase ? "RIGHT OUTER JOIN" : "right outer join"); } else if (joinType.equals(JoinType.FULL_OUTER_JOIN)) { - print("FULL OUTER JOIN"); + print0(ucase ? "FULL OUTER JOIN" : "full outer join"); } else { - print(JoinType.toString(joinType)); + print0(ucase ? joinType.name : joinType.name_lcase); } } public boolean visit(SQLDataType x) { - print(x.getName().toUpperCase()); + String dataTypeName = x.getName(); + print0(ucase ? dataTypeName.toUpperCase() : dataTypeName.toLowerCase()); if (x.getArguments().size() > 0) { - print("("); + print('('); printAndAccept(x.getArguments(), ", "); - print(")"); + print(')'); } return false; @@ -752,9 +753,9 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis protected void printFunctionName(String name) { String upperName = name.toUpperCase(); if (builtInFunctions.contains(upperName)) { - print(upperName); + print0(ucase ? upperName : name); } else { - print(name); + print0(name); } } @@ -765,14 +766,14 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsShowGrantsStmt x) { - print("SHOW GRANTS"); + print0(ucase ? "SHOW GRANTS" : "show grants"); if (x.getUser() != null) { - print(" FOR "); + print0(ucase ? " FOR " : " for "); x.getUser().accept(this); } if (x.getObjectType() != null) { - print(" ON TYPE "); + print0(ucase ? " ON TYPE " : " on type "); x.getObjectType().accept(this); } return false; @@ -785,7 +786,7 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsListStmt x) { - print("LIST "); + print0(ucase ? "LIST " : "list "); if (x.getObject() != null) { x.getObject().accept(this); } @@ -799,44 +800,44 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsGrantStmt x) { - print("GRANT "); + print0(ucase ? "GRANT " : "grant "); if (x.isSuper()) { - print("SUPER "); + print0(ucase ? "SUPER " : "super "); } if (x.isLabel()) { - print("LABEL "); + print0(ucase ? "LABEL " : "label "); x.getLabel().accept(this);; } else { printAndAccept(x.getPrivileges(), ", "); } if (x.getOn() != null) { - print(" ON "); + print0(ucase ? " ON " : " on "); if (x.getObjectType() != null) { - print(x.getObjectType().name()); + print0(ucase ? x.getObjectType().name() : x.getObjectType().name().toLowerCase()); print(' '); } x.getOn().accept(this); if (x.getColumns().size() > 0) { - print("("); + print('('); printAndAccept(x.getColumns(), ", "); - print(")"); + print(')'); } } if (x.getTo() != null) { - print(" TO "); + print0(ucase ? " TO " : " to "); if (x.getSubjectType() != null) { - print(x.getSubjectType().name()); + print0(x.getSubjectType().name()); print(' '); } x.getTo().accept(this); } if (x.getExpire() != null) { - print(" WITH EXP "); + print0(ucase ? " WITH EXP " : " with exp "); x.getExpire().accept(this); } @@ -850,9 +851,9 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis @Override public boolean visit(OdpsDescStmt x) { - print("DESC "); + print0(ucase ? "DESC " : "desc "); if (x.getObjectType() != null) { - print(x.getObjectType().name()); + print0(x.getObjectType().name()); print(' '); } @@ -861,9 +862,9 @@ public class OdpsOutputVisitor extends SQLASTOutputVisitor implements OdpsASTVis } if (x.getPartition().size() > 0) { - print(" PARTITION ("); + print0(ucase ? " PARTITION (" : " partition ("); printAndAccept(x.getPartition(), ", "); - print(")"); + print(')'); } return false; } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleToMySqlOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleToMySqlOutputVisitor.java index 63b395077a..15f67a8b11 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleToMySqlOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleToMySqlOutputVisitor.java @@ -105,7 +105,7 @@ public class OracleToMySqlOutputVisitor extends OracleOutputVisitor { if (limit != null) { select.accept(this); println(); - print("LIMIT "); + print0(ucase ? "LIMIT " : "limit "); print(limit); return false; } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java index fad5c80b81..9ef1b812e8 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java @@ -60,16 +60,16 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(WindowClause x) { - print("WINDOW "); + print0(ucase ? "WINDOW " : "window "); x.getName().accept(this); - print(" AS "); + print0(ucase ? " AS " : " as "); for (int i = 0; i < x.getDefinition().size(); ++i) { if (i != 0) { println(", "); } - print("("); + print('('); x.getDefinition().get(i).accept(this); - print(")"); + print(')'); } return false; } @@ -81,14 +81,14 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(FetchClause x) { - print("FETCH "); + print0(ucase ? "FETCH " : "fetch "); if (FetchClause.Option.FIRST.equals(x.getOption())) { - print("FIRST "); + print0(ucase ? "FIRST " : "first "); } else if (FetchClause.Option.NEXT.equals(x.getOption())) { - print("NEXT "); + print0(ucase ? "NEXT " : "next "); } x.getCount().accept(this); - print(" ROWS ONLY"); + print0(ucase ? " ROWS ONLY" : " rows only"); return false; } @@ -99,11 +99,11 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(ForClause x) { - print("FOR "); + print0(ucase ? "FOR " : "for "); if (ForClause.Option.UPDATE.equals(x.getOption())) { - print("UPDATE "); + print0(ucase ? "UPDATE " : "update "); } else if (ForClause.Option.SHARE.equals(x.getOption())) { - print("SHARE "); + print0(ucase ? "SHARE " : "share "); } if (x.getOf().size() > 0) { @@ -116,7 +116,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor } if (x.isNoWait()) { - print(" NOWAIT"); + print0(ucase ? " NOWAIT" : " nowait"); } return false; @@ -132,20 +132,20 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor x.getName().accept(this); if (x.getColumns().size() > 0) { - print(" ("); + print0(" ("); printAndAccept(x.getColumns(), ", "); - print(")"); + print(')'); } println(); - print("AS"); + print0(ucase ? "AS" : "as"); println(); - print("("); + print('('); incrementIndent(); println(); x.getQuery().accept(this); decrementIndent(); println(); - print(")"); + print(')'); return false; } @@ -157,9 +157,9 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(PGWithClause x) { - print("WITH"); + print0(ucase ? "WITH" : "with"); if (x.isRecursive()) { - print(" RECURSIVE "); + print0(ucase ? " RECURSIVE " : " recursive "); } incrementIndent(); println(); @@ -174,15 +174,15 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor println(); } - print("SELECT "); + print0(ucase ? "SELECT " : "select "); if (SQLSetQuantifier.ALL == x.getDistionOption()) { - print("ALL "); + print0(ucase ? "ALL " : "all "); } else if (SQLSetQuantifier.DISTINCT == x.getDistionOption()) { - print("DISTINCT "); + print0(ucase ? "DISTINCT " : "distinct "); if (x.getDistinctOn() != null && x.getDistinctOn().size() > 0) { - print("ON "); + print0(ucase ? "ON " : "on "); printAndAccept(x.getDistinctOn(), ", "); } } @@ -193,21 +193,22 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor println(); if (x.getIntoOption() != null) { print(x.getIntoOption().name()); - print(" "); + print(' '); } + print0(ucase ? "INTO " : "into "); x.getInto().accept(this); } if (x.getFrom() != null) { println(); - print("FROM "); + print0(ucase ? "FROM " : "from "); x.getFrom().accept(this); } if (x.getWhere() != null) { println(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); x.getWhere().setParent(x); x.getWhere().accept(this); } @@ -229,7 +230,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor if (x.getLimit() != null) { println(); - print("LIMIT "); + print0(ucase ? "LIMIT " : "limit "); x.getLimit().accept(this); } @@ -248,26 +249,26 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(SQLTruncateStatement x) { - print("TRUNCATE TABLE "); + print0(ucase ? "TRUNCATE TABLE " : "truncate table "); if (x.isOnly()) { - print("ONLY "); + print0(ucase ? "ONLY " : "only "); } printlnAndAccept(x.getTableSources(), ", "); if (x.getRestartIdentity() != null) { if (x.getRestartIdentity().booleanValue()) { - print(" RESTART IDENTITY"); + print0(ucase ? " RESTART IDENTITY" : " restart identity"); } else { - print(" CONTINUE IDENTITY"); + print0(ucase ? " CONTINUE IDENTITY" : " continue identity"); } } if (x.getCascade() != null) { if (x.getCascade().booleanValue()) { - print(" CASCADE"); + print0(ucase ? " CASCADE" : " cascade"); } else { - print(" RESTRICT"); + print0(ucase ? " RESTRICT" : " restrict"); } } return false; @@ -285,28 +286,28 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor println(); } - print("DELETE FROM "); + print0(ucase ? "DELETE FROM " : "delete from "); if (x.isOnly()) { - print("ONLY "); + print0(ucase ? "ONLY " : "only "); } x.getTableName().accept(this); if (x.getAlias() != null) { - print(" AS "); + print0(ucase ? " AS " : " as "); print(x.getAlias()); } if (x.getUsing().size() > 0) { println(); - print("USING "); + print0(ucase ? "USING " : "using "); printAndAccept(x.getUsing(), ", "); } if (x.getWhere() != null) { println(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); incrementIndent(); x.getWhere().setParent(x); x.getWhere().accept(this); @@ -315,7 +316,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor if (x.isReturning()) { println(); - print("RETURNING *"); + print0(ucase ? "RETURNING *" : "returning *"); } return false; @@ -333,30 +334,30 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor println(); } - print("INSERT INTO "); + print0(ucase ? "INSERT INTO " : "insert into "); x.getTableSource().accept(this); if (x.getColumns().size() > 0) { incrementIndent(); println(); - print("("); + print('('); for (int i = 0, size = x.getColumns().size(); i < size; ++i) { if (i != 0) { if (i % 5 == 0) { println(); } - print(", "); + print0(", "); } x.getColumns().get(i).accept(this); } - print(")"); + print(')'); decrementIndent(); } if (x.getValues() != null) { println(); - print("VALUES "); + print0(ucase ? "VALUES " : "values "); printlnAndAccept(x.getValuesList(), ", "); } else { if (x.getQuery() != null) { @@ -367,7 +368,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor if (x.getReturning() != null) { println(); - print("RETURNING "); + print0(ucase ? "RETURNING " : "returning "); x.getReturning().accept(this); } @@ -401,32 +402,32 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor println(); } - print("UPDATE "); + print0(ucase ? "UPDATE " : "update "); if (x.isOnly()) { - print("ONLY "); + print0(ucase ? "ONLY " : "only "); } x.getTableSource().accept(this); println(); - print("SET "); + print0(ucase ? "SET " : "set "); for (int i = 0, size = x.getItems().size(); i < size; ++i) { if (i != 0) { - print(", "); + print0(", "); } x.getItems().get(i).accept(this); } if (x.getFrom() != null) { println(); - print("FROM "); + print0(ucase ? "FROM " : "from "); x.getFrom().accept(this); } if (x.getWhere() != null) { println(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); incrementIndent(); x.getWhere().setParent(x); x.getWhere().accept(this); @@ -435,7 +436,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor if (x.getReturning().size() > 0) { println(); - print("RETURNING "); + print0(ucase ? "RETURNING " : "returning "); printAndAccept(x.getReturning(), ", "); } @@ -455,7 +456,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(PGParameter x) { x.getName().accept(this); - print(" "); + print(' '); x.getDataType().accept(this); @@ -467,7 +468,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor x.getExpr().accept(this); if (x.getAlias() != null) { - print(" AS "); + print0(ucase ? " AS " : " as "); print(x.getAlias()); } @@ -489,7 +490,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor public boolean visit(PGLimit x) { x.getRowCount().accept(this); if (x.getOffset() != null) { - print(" OFFSET "); + print0(ucase ? " OFFSET " : " offset "); x.getOffset().accept(this); } return false; @@ -508,7 +509,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(PGTypeCastExpr x) { x.getExpr().accept(this); - print("::"); + print0("::"); x.getDataType().accept(this); return false; } @@ -520,9 +521,9 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(PGValuesQuery x) { - print("VALUES("); + print0(ucase ? "VALUES(" : "values("); printAndAccept(x.getValues(), ", "); - print(")"); + print(')'); return false; } @@ -533,17 +534,17 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(PGExtractExpr x) { - print("EXTRACT ("); + print0(ucase ? "EXTRACT (" : "extract ("); print(x.getField().name()); - print(" FROM "); + print0(ucase ? " FROM " : " from "); x.getSource().accept(this); - print(")"); + print(')'); return false; } @Override public boolean visit(PGBoxExpr x) { - print("BOX "); + print0(ucase ? "BOX " : "box "); x.getValue().accept(this); return false; } @@ -555,7 +556,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(PGPointExpr x) { - print("POINT "); + print0(ucase ? "POINT " : "point "); x.getValue().accept(this); return false; } @@ -567,7 +568,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(PGMacAddrExpr x) { - print("macaddr "); + print0("macaddr "); x.getValue().accept(this); return false; } @@ -579,7 +580,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(PGInetExpr x) { - print("inet "); + print0("inet "); x.getValue().accept(this); return false; } @@ -591,7 +592,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(PGCidrExpr x) { - print("cidr "); + print0("cidr "); x.getValue().accept(this); return false; } @@ -603,7 +604,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(PGPolygonExpr x) { - print("polygon "); + print0("polygon "); x.getValue().accept(this); return false; } @@ -615,7 +616,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(PGCircleExpr x) { - print("circle "); + print0("circle "); x.getValue().accept(this); return false; } @@ -627,7 +628,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(PGLineSegmentsExpr x) { - print("lseg "); + print0("lseg "); x.getValue().accept(this); return false; } @@ -639,7 +640,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(PGIntervalExpr x) { - print("INTERVAL "); + print0(ucase ? "INTERVAL " : "interval "); x.getValue().accept(this); return true; } @@ -651,7 +652,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(SQLBinaryExpr x) { - print("B'"); + print0(ucase ? "B'" : "b'"); print(x.getValue()); print('\''); @@ -665,7 +666,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(PGShowStatement x) { - print("SHOW "); + print0(ucase ? "SHOW " : "show "); x.getExpr().accept(this); return false; } diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java index dd5f747f0f..850faa5bc3 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java @@ -168,6 +168,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab private String indent = "\t"; private int indentCount = 0; private boolean prettyFormat = true; + protected boolean ucase = true; protected int selectListNumberOfLine = 5; private List parameters; @@ -229,7 +230,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } public void print(int value) { - print(Integer.toString(value)); + print0(Integer.toString(value)); } public void print(Date date) { @@ -239,14 +240,18 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } else { dateFormat = new SimpleDateFormat("yyyy-MM-dd"); } - print("'" + dateFormat.format(date) + "'"); + print0("'" + dateFormat.format(date) + "'"); } public void print(long value) { - print(Long.toString(value)); + print0(Long.toString(value)); } public void print(String text) { + print0(text); + } + + protected void print0(String text) { try { this.appender.append(text); } catch (IOException e) { @@ -256,15 +261,15 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab protected void printAlias(String alias) { if ((alias != null) && (alias.length() > 0)) { - print(" "); - print(alias); + print(' '); + print0(alias); } } protected void printAndAccept(List nodes, String seperator) { for (int i = 0, size = nodes.size(); i < size; ++i) { if (i != 0) { - print(seperator); + print0(seperator); } nodes.get(i).accept(this); } @@ -278,7 +283,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab println(); } - print(", "); + print0(", "); } selectList.get(i).accept(this); @@ -298,7 +303,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public void printIndent() { for (int i = 0; i < this.indentCount; ++i) { - print(this.indent); + print0(this.indent); } } @@ -308,7 +313,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab return; } - print("\n"); + print0("\n"); printIndent(); } @@ -316,6 +321,11 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab print(text); println(); } + + protected void println0(String text) { + print0(text); + println(); + } // //////////////////// @@ -323,13 +333,13 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab x.getTestExpr().accept(this); if (x.isNot()) { - print(" NOT BETWEEN "); + print0(ucase ? " NOT BETWEEN " : " not between "); } else { - print(" BETWEEN "); + print0(ucase ? " BETWEEN " : " between "); } x.getBeginExpr().accept(this); - print(" AND "); + print0(ucase ? " AND " : " and "); x.getEndExpr().accept(this); return false; @@ -386,10 +396,10 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab if (relational) { println(); } else { - print(" "); + print0(" "); } - print(x.getOperator().name); - print(" "); + print0(ucase ? x.getOperator().name : x.getOperator().name_lcase); + print0(" "); } visitorBinaryRight(x); @@ -462,48 +472,48 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } public boolean visit(SQLCaseExpr x) { - print("CASE "); + print0(ucase ? "CASE " : "case "); if (x.getValueExpr() != null) { x.getValueExpr().accept(this); - print(" "); + print0(" "); } printAndAccept(x.getItems(), " "); if (x.getElseExpr() != null) { - print(" ELSE "); + print0(ucase ? " ELSE " : " else "); x.getElseExpr().accept(this); } - print(" END"); + print0(ucase ? " END" : " end"); return false; } public boolean visit(SQLCaseExpr.Item x) { - print("WHEN "); + print0(ucase ? "WHEN " : "when "); x.getConditionExpr().accept(this); - print(" THEN "); + print0(ucase ? " THEN " : " then "); x.getValueExpr().accept(this); return false; } public boolean visit(SQLCastExpr x) { - print("CAST("); + print0(ucase ? "CAST(" : "cast("); x.getExpr().accept(this); - print(" AS "); + print0(ucase ? " AS " : " as "); x.getDataType().accept(this); - print(")"); + print0(")"); return false; } public boolean visit(SQLCharExpr x) { if (x.getText() == null) { - print("NULL"); + print0(ucase ? "NULL" : "null"); } else { - print("'"); - print(x.getText().replaceAll("'", "''")); - print("'"); + print('\''); + print0(x.getText().replaceAll("'", "''")); + print('\''); } return false; @@ -512,9 +522,9 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLDataType x) { print(x.getName()); if (x.getArguments().size() > 0) { - print("("); + print('('); printAndAccept(x.getArguments(), ", "); - print(")"); + print(')'); } return false; @@ -527,14 +537,14 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLExistsExpr x) { if (x.isNot()) { - print("NOT EXISTS ("); + print0(ucase ? "NOT EXISTS (" : "not exists ("); } else { - print("EXISTS ("); + print0(ucase ? "EXISTS (" : "exists ("); } incrementIndent(); x.getSubQuery().accept(this); decrementIndent(); - print(")"); + print(')'); return false; } @@ -547,9 +557,9 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab x.getExpr().accept(this); if (x.isNot()) { - print(" NOT IN ("); + print0(ucase ? " NOT IN (" : " not in ("); } else { - print(" IN ("); + print0(ucase ? " IN (" : " in ("); } final List list = x.getTargetList(); @@ -570,7 +580,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab println(); for (int i = 0, size = list.size(); i < size; ++i) { if (i != 0) { - print(", "); + print0(", "); println(); } list.get(i).accept(this); @@ -592,12 +602,12 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLMethodInvokeExpr x) { if (x.getOwner() != null) { x.getOwner().accept(this); - print("."); + print('.'); } printFunctionName(x.getMethodName()); - print("("); + print('('); printAndAccept(x.getParameters(), ", "); - print(")"); + print(')'); return false; } @@ -607,7 +617,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLAggregateExpr x) { print(x.getMethodName()); - print("("); + print('('); if (x.getOption() != null) { print(x.getOption().toString()); @@ -618,16 +628,16 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab visitAggreateRest(x); - print(")"); + print(')'); if (x.getWithinGroup() != null) { - print(" WITHIN GROUP ("); + print0(ucase ? " WITHIN GROUP (" : " within group ("); x.getWithinGroup().accept(this); - print(")"); + print(')'); } if (x.getOver() != null) { - print(" "); + print0(" "); x.getOver().accept(this); } return false; @@ -638,23 +648,23 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } public boolean visit(SQLAllColumnExpr x) { - print("*"); + print('*'); return true; } public boolean visit(SQLNCharExpr x) { if ((x.getText() == null) || (x.getText().length() == 0)) { - print("NULL"); + print0(ucase ? "NULL" : "null"); } else { - print("N'"); + print0(ucase ? "N'" : "n'"); print(x.getText().replace("'", "''")); - print("'"); + print('\''); } return false; } public boolean visit(SQLNotExpr x) { - print("NOT "); + print0(ucase ? "NOT " : "not "); SQLExpr expr = x.getExpr(); boolean needQuote = false; @@ -676,7 +686,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } public boolean visit(SQLNullExpr x) { - print("NULL"); + print0(ucase ? "NULL" : "null"); return false; } @@ -686,8 +696,8 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLPropertyExpr x) { x.getOwner().accept(this); - print("."); - print(x.getName()); + print('.'); + print0(x.getName()); return false; } @@ -706,31 +716,31 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab decrementIndent(); } else if (parent instanceof ValuesClause) { println(); - print("("); + print('('); x.getSubQuery().accept(this); - print(")"); + print(')'); println(); } else { - print("("); + print('('); incrementIndent(); println(); x.getSubQuery().accept(this); println(); decrementIndent(); - print(")"); + print(')'); } return false; } public boolean visit(SQLSelectGroupByClause x) { if (x.getItems().size() > 0) { - print("GROUP BY "); + print0(ucase ? "GROUP BY " : "group by "); printAndAccept(x.getItems(), ", "); } if (x.getHaving() != null) { println(); - print("HAVING "); + print0(ucase ? "HAVING " : "having "); x.getHaving().accept(this); } return false; @@ -763,27 +773,27 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab printComment(x.getBeforeCommentsDirect(), "\n"); } - print("SELECT "); + print0(ucase ? "SELECT " : "select "); if (SQLSetQuantifier.ALL == x.getDistionOption()) { - print("ALL "); + print0(ucase ? "ALL " : "all "); } else if (SQLSetQuantifier.DISTINCT == x.getDistionOption()) { - print("DISTINCT "); + print0(ucase ? "DISTINCT " : "distinct "); } else if (SQLSetQuantifier.UNIQUE == x.getDistionOption()) { - print("UNIQUE "); + print0(ucase ? "UNIQUE " : "unique "); } printSelectList(x.getSelectList()); if (x.getFrom() != null) { println(); - print("FROM "); + print0(ucase ? "FROM " : "from "); x.getFrom().accept(this); } if (x.getWhere() != null) { println(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); x.getWhere().setParent(x); x.getWhere().accept(this); } @@ -798,13 +808,13 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLSelectItem x) { if (x.isConnectByRoot()) { - print("CONNECT_BY_ROOT "); + print0(ucase ? "CONNECT_BY_ROOT " : "connect_by_root "); } x.getExpr().accept(this); String alias = x.getAlias(); if (alias != null && alias.length() > 0) { - print(" AS "); + print0(ucase ? " AS " : " as "); if (alias.indexOf(' ') == -1 || alias.charAt(0) == '"' || alias.charAt(0) == '\'') { print(alias); } else { @@ -818,7 +828,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLOrderBy x) { if (x.getItems().size() > 0) { - print("ORDER BY "); + print0(ucase ? "ORDER BY " : "order by "); printAndAccept(x.getItems(), ", "); } @@ -828,12 +838,12 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLSelectOrderByItem x) { x.getExpr().accept(this); if (x.getType() != null) { - print(" "); + print(' '); print(x.getType().name().toUpperCase()); } if (x.getCollate() != null) { - print(" COLLATE "); + print0(ucase ? " COLLATE " : " collate "); print(x.getCollate()); } @@ -879,7 +889,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public void printParameter(Object param) { if (param == null) { - print("NULL"); + print0(ucase ? "NULL" : "null"); return; } @@ -901,42 +911,42 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } if (param instanceof InputStream) { - print("'"); + print0("'"); return; } if (param instanceof Reader) { - print("'"); + print0("'"); return; } if (param instanceof Blob) { - print("'"); + print0("'"); return; } if (param instanceof NClob) { - print("'"); + print0("'"); return; } if (param instanceof Clob) { - print("'"); + print0("'"); return; } - print("'" + param.getClass().getName() + "'"); + print0("'" + param.getClass().getName() + "'"); } public boolean visit(SQLDropTableStatement x) { if (x.isTemporary()) { - print("DROP TEMPORARY TABLE "); + print0(ucase ? "DROP TEMPORARY TABLE " : "drop temporary table "); } else { - print("DROP TABLE "); + print0(ucase ? "DROP TABLE " : "drop table "); } if (x.isIfExists()) { - print("IF EXISTS "); + print0(ucase ? "IF EXISTS " : "if exists "); } printAndAccept(x.getTableSources(), ", "); @@ -946,25 +956,25 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } if (x.isRestrict()) { - print(" RESTRICT"); + print0(ucase ? " RESTRICT" : " restrict"); } if (x.isPurge()) { - print(" PURGE"); + print0(ucase ? " PURGE" : " purge"); } return false; } protected void printCascade() { - print(" CASCADE"); + print0(ucase ? " CASCADE": " cascade"); } public boolean visit(SQLDropViewStatement x) { - print("DROP VIEW "); + print0(ucase ? "DROP VIEW " : "drop view "); if (x.isIfExists()) { - print("IF EXISTS "); + print0(ucase ? "IF EXISTS " : "if exists "); } printAndAccept(x.getTableSources(), ", "); @@ -1017,12 +1027,12 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab if (x.getEnable() != null) { if (x.getEnable().booleanValue()) { - print(" ENABLE"); + print0(ucase ? " ENABLE" : " enable"); } } if (x.getComment() != null) { - print(" COMMENT "); + print0(ucase ? " COMMENT " : " comment "); x.getComment().accept(this); } @@ -1030,18 +1040,18 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } protected void visitColumnDefault(SQLColumnDefinition x) { - print(" DEFAULT "); + print0(ucase ? " DEFAULT " : " default "); x.getDefaultExpr().accept(this); } public boolean visit(SQLDeleteStatement x) { - print("DELETE FROM "); + print0(ucase ? "DELETE FROM " : "delete from "); x.getTableName().accept(this); if (x.getWhere() != null) { println(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); incrementIndent(); x.getWhere().setParent(x); x.getWhere().accept(this); @@ -1052,36 +1062,36 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } public boolean visit(SQLCurrentOfCursorExpr x) { - print("CURRENT OF "); + print0(ucase ? "CURRENT OF " : "current of "); x.getCursorName().accept(this); return false; } public boolean visit(SQLInsertStatement x) { - print("INSERT INTO "); + print0(ucase ? "INSERT INTO " : "insert into "); x.getTableSource().accept(this); if (x.getColumns().size() > 0) { incrementIndent(); println(); - print("("); + print('('); for (int i = 0, size = x.getColumns().size(); i < size; ++i) { if (i != 0) { if (i % 5 == 0) { println(); } - print(", "); + print0(", "); } x.getColumns().get(i).accept(this); } - print(")"); + print(')'); decrementIndent(); } if (x.getValues() != null) { println(); - print("VALUES"); + print0(ucase ? "VALUES" : "values"); println(); x.getValues().accept(this); } else { @@ -1097,21 +1107,21 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLUpdateSetItem x) { x.getColumn().accept(this); - print(" = "); + print0(" = "); x.getValue().accept(this); return false; } public boolean visit(SQLUpdateStatement x) { - print("UPDATE "); + print0(ucase ? "UPDATE " : "update "); x.getTableSource().accept(this); println(); - print("SET "); + print0(ucase ? "SET " : "set "); for (int i = 0, size = x.getItems().size(); i < size; ++i) { if (i != 0) { - print(", "); + print0(", "); } x.getItems().get(i).accept(this); } @@ -1119,7 +1129,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab if (x.getWhere() != null) { println(); incrementIndent(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); x.getWhere().setParent(x); x.getWhere().accept(this); decrementIndent(); @@ -1129,11 +1139,11 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } public boolean visit(SQLCreateTableStatement x) { - print("CREATE TABLE "); + print0(ucase ? "CREATE TABLE " : "create table "); if (SQLCreateTableStatement.Type.GLOBAL_TEMPORARY.equals(x.getType())) { - print("GLOBAL TEMPORARY "); + print0(ucase ? "GLOBAL TEMPORARY " : "global temporary "); } else if (SQLCreateTableStatement.Type.LOCAL_TEMPORARY.equals(x.getType())) { - print("LOCAL TEMPORARY "); + print0(ucase ? "LOCAL TEMPORARY " : "local temporary "); } x.getName().accept(this); @@ -1141,25 +1151,25 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab int size = x.getTableElementList().size(); if (size > 0) { - print(" ("); + print0(" ("); incrementIndent(); println(); for (int i = 0; i < size; ++i) { if (i != 0) { - print(","); + print(','); println(); } x.getTableElementList().get(i).accept(this); } decrementIndent(); println(); - print(")"); + print(')'); } if (x.getInherits() != null) { - print(" INHERITS ("); + print0(ucase ? " INHERITS (" : " inherits ("); x.getInherits().accept(this); - print(")"); + print(')'); } return false; @@ -1167,29 +1177,29 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLUniqueConstraint x) { if (x.getName() != null) { - print("CONSTRAINT "); + print0(ucase ? "CONSTRAINT " : "constraint "); x.getName().accept(this); print(' '); } - print("UNIQUE ("); + print0(ucase ? "UNIQUE (" : "unique ("); for (int i = 0, size = x.getColumns().size(); i < size; ++i) { if (i != 0) { - print(", "); + print0(", "); } x.getColumns().get(i).accept(this); } - print(")"); + print(')'); return false; } public boolean visit(NotNullConstraint x) { if (x.getName() != null) { - print("CONSTRAINT "); + print0(ucase ? "CONSTRAINT " : "constraint "); x.getName().accept(this); print(' '); } - print("NOT NULL"); + print0(ucase ? "NOT NULL" : "not null"); return false; } @@ -1255,13 +1265,13 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLHexExpr x) { - print("0x"); + print0("0x"); print(x.getHex()); String charset = (String) x.getAttribute("USING"); if (charset != null) { - print(" USING "); - print(charset); + print0(ucase ? " USING " : " using "); + print0(charset); } return false; @@ -1269,11 +1279,11 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLSetStatement x) { - print("SET "); + print0(ucase ? "SET " : "set "); printAndAccept(x.getItems(), ", "); if (x.getHints() != null && x.getHints().size() > 0) { - print(" "); + print(' '); printAndAccept(x.getHints(), " "); } @@ -1283,7 +1293,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLAssignItem x) { x.getTarget().accept(this); - print(" = "); + print0(" = "); x.getValue().accept(this); return false; } @@ -1291,21 +1301,21 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLCallStatement x) { if (x.isBrace()) { - print("{"); + print('{'); } if (x.getOutParameter() != null) { x.getOutParameter().accept(this); - print(" = "); + print0(" = "); } - print("CALL "); + print0(ucase ? "CALL " : "call "); x.getProcedureName().accept(this); print('('); printAndAccept(x.getParameters(), ", "); print(')'); if (x.isBrace()) { - print("}"); + print('}'); } return false; } @@ -1316,29 +1326,29 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab incrementIndent(); if (x.getJoinType() == JoinType.COMMA) { - print(","); + print(','); } else { println(); printJoinType(x.getJoinType()); } - print(" "); + print(' '); x.getRight().accept(this); if (x.getCondition() != null) { incrementIndent(); - print(" ON "); + print0(ucase ? " ON " : " on "); x.getCondition().accept(this); decrementIndent(); } if (x.getUsing().size() > 0) { - print(" USING ("); + print0(ucase ? " USING (" : " using ("); printAndAccept(x.getUsing(), ", "); - print(")"); + print(')'); } if (x.getAlias() != null) { - print(" AS "); + print0(ucase ? " AS " : " as "); print(x.getAlias()); } @@ -1348,19 +1358,19 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } protected void printJoinType(JoinType joinType) { - print(JoinType.toString(joinType)); + print0(ucase ? joinType.name : joinType.name_lcase); } @Override public boolean visit(ValuesClause x) { - print("("); + print('('); incrementIndent(); for (int i = 0, size = x.getValues().size(); i < size; ++i) { if (i != 0) { if (i % 5 == 0) { println(); } - print(", "); + print0(", "); } SQLExpr expr = x.getValues().get(i); @@ -1368,40 +1378,40 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab expr.accept(this); } decrementIndent(); - print(")"); + print(')'); return false; } @Override public boolean visit(SQLSomeExpr x) { - print("SOME ("); + print0(ucase ? "SOME (" : "some ("); incrementIndent(); x.getSubQuery().accept(this); decrementIndent(); - print(")"); + print(')'); return false; } @Override public boolean visit(SQLAnyExpr x) { - print("ANY ("); + print0(ucase ? "ANY (" : "any ("); incrementIndent(); x.getSubQuery().accept(this); decrementIndent(); - print(")"); + print(')'); return false; } @Override public boolean visit(SQLAllExpr x) { - print("ALL ("); + print0(ucase ? "ALL (" : "all ("); incrementIndent(); x.getSubQuery().accept(this); decrementIndent(); - print(")"); + print(')'); return false; } @@ -1409,36 +1419,36 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLInSubQueryExpr x) { x.getExpr().accept(this); if (x.isNot()) { - print(" NOT IN ("); + print0(ucase ? " NOT IN (" : " not in ("); } else { - print(" IN ("); + print0(ucase ? " IN (" : " in ("); } incrementIndent(); x.getSubQuery().accept(this); decrementIndent(); - print(")"); + print(')'); return false; } @Override public boolean visit(SQLListExpr x) { - print("("); + print('('); printAndAccept(x.getItems(), ", "); - print(")"); + print(')'); return false; } @Override public boolean visit(SQLSubqueryTableSource x) { - print("("); + print('('); incrementIndent(); x.getSelect().accept(this); println(); decrementIndent(); - print(")"); + print(')'); if (x.getAlias() != null) { print(' '); @@ -1450,14 +1460,14 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLTruncateStatement x) { - print("TRUNCATE TABLE "); + print0(ucase ? "TRUNCATE TABLE " : "truncate table "); printAndAccept(x.getTableSources(), ", "); return false; } @Override public boolean visit(SQLDefaultExpr x) { - print("DEFAULT"); + print0(ucase ? "DEFAULT" : "default"); return false; } @@ -1468,14 +1478,14 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLCommentStatement x) { - print("COMMENT ON "); + print0(ucase ? "COMMENT ON " : "comment on "); if (x.getType() != null) { print(x.getType().name()); - print(" "); + print(' '); } x.getOn().accept(this); - print(" IS "); + print0(ucase ? " IS " : " is "); x.getComment().accept(this); return false; @@ -1483,26 +1493,26 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLUseStatement x) { - print("USE "); + print0(ucase ? "USE " : "use "); x.getDatabase().accept(this); return false; } @Override public boolean visit(SQLAlterTableAddColumn x) { - print("ADD ("); + print0(ucase ? "ADD (" : "add ("); printAndAccept(x.getColumns(), ", "); - print(")"); + print(')'); return false; } @Override public boolean visit(SQLAlterTableDropColumnItem x) { - print("DROP COLUMN "); + print0(ucase ? "DROP COLUMN " : "drop column "); this.printAndAccept(x.getColumns(), ", "); if (x.isCascade()) { - print(" CASCADE"); + print0(ucase ? " CASCADE" : " cascade"); } return false; } @@ -1514,12 +1524,12 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLDropIndexStatement x) { - print("DROP INDEX "); + print0(ucase ? "DROP INDEX " : "drop index "); x.getIndexName().accept(this); SQLExprTableSource table = x.getTableName(); if (table != null) { - print(" ON "); + print0(ucase ? " ON " : " on "); table.accept(this); } return false; @@ -1527,81 +1537,81 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLSavePointStatement x) { - print("SAVEPOINT "); + print0(ucase ? "SAVEPOINT " : "savepoint "); x.getName().accept(this); return false; } @Override public boolean visit(SQLReleaseSavePointStatement x) { - print("RELEASE SAVEPOINT "); + print0(ucase ? "RELEASE SAVEPOINT " : "release savepoint "); x.getName().accept(this); return false; } @Override public boolean visit(SQLRollbackStatement x) { - print("ROLLBACK"); + print0(ucase ? "ROLLBACK" : "rollback"); if (x.getTo() != null) { - print(" TO "); + print0(ucase ? " TO " : " to "); x.getTo().accept(this); } return false; } public boolean visit(SQLCommentHint x) { - print("/*"); - print(x.getText()); - print("*/"); + print0("/*"); + print0(x.getText()); + print0("*/"); return false; } @Override public boolean visit(SQLCreateDatabaseStatement x) { - print("CREATE DATABASE "); + print0(ucase ? "CREATE DATABASE " : "create database "); x.getName().accept(this); return false; } @Override public boolean visit(SQLCreateViewStatement x) { - print("CREATE "); + print0(ucase ? "CREATE " : "create "); if (x.isOrReplace()) { - print("OR REPLACE "); + print0(ucase ? "OR REPLACE " : "or replace "); } - print("VIEW "); + print0(ucase ? "VIEW " : "view "); if (x.isIfNotExists()) { - print("IF NOT EXISTS "); + print0(ucase ? "IF NOT EXISTS " : "if not exists "); } x.getName().accept(this); if (x.getColumns().size() > 0) { println(); - print("("); + print('('); incrementIndent(); println(); for (int i = 0; i < x.getColumns().size(); ++i) { if (i != 0) { - print(", "); + print0(", "); println(); } x.getColumns().get(i).accept(this); } decrementIndent(); println(); - print(")"); + print(')'); } if (x.getComment() != null) { println(); - print("COMMENT "); + print0(ucase ? "COMMENT " : "comment "); x.getComment().accept(this); } println(); - print("AS"); + print0(ucase ? "AS" : "as"); println(); x.getSubQuery().accept(this); @@ -1612,7 +1622,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab x.getExpr().accept(this); if (x.getComment() != null) { - print(" COMMENT "); + print0(ucase ? " COMMENT " : " comment "); x.getComment().accept(this); } @@ -1621,64 +1631,64 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLAlterTableDropIndex x) { - print("DROP INDEX "); + print0(ucase ? "DROP INDEX " : "drop index "); x.getIndexName().accept(this); return false; } @Override public boolean visit(SQLOver x) { - print("OVER ("); + print0(ucase ? "OVER (" : "over ("); if (x.getPartitionBy().size() > 0) { - print("PARTITION BY "); + print0(ucase ? "PARTITION BY " : "partition by "); printAndAccept(x.getPartitionBy(), ", "); print(' '); } if (x.getOrderBy() != null) { x.getOrderBy().accept(this); } - print(")"); + print(')'); return false; } @Override public boolean visit(SQLColumnPrimaryKey x) { if (x.getName() != null) { - print("CONSTRAINT "); + print0(ucase ? "CONSTRAINT " : "constraint "); x.getName().accept(this); print(' '); } - print("PRIMARY KEY"); + print0(ucase ? "PRIMARY KEY" : "primary key"); return false; } @Override public boolean visit(SQLColumnUniqueKey x) { if (x.getName() != null) { - print("CONSTRAINT "); + print0(ucase ? "CONSTRAINT " : "constraint "); x.getName().accept(this); print(' '); } - print("UNIQUE"); + print0(ucase ? "UNIQUE" : "unique"); return false; } @Override public boolean visit(SQLColumnCheck x) { if (x.getName() != null) { - print("CONSTRAINT "); + print0(ucase ? "CONSTRAINT " : "constraint "); x.getName().accept(this); print(' '); } - print("CHECK ("); + print0(ucase ? "CHECK (" : "check ("); x.getExpr().accept(this); print(')'); if (x.getEnable() != null) { if (x.getEnable().booleanValue()) { - print(" ENABLE"); + print0(ucase ? " ENABLE" : " enable"); } else { - print(" DISABLE"); + print0(ucase ? " DISABLE" : " disable"); } } return false; @@ -1686,9 +1696,9 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLWithSubqueryClause x) { - print("WITH"); + print0(ucase ? "WITH" : "with"); if (x.getRecursive() == Boolean.TRUE) { - print(" RECURSIVE"); + print0(ucase ? " RECURSIVE" : " recursive"); } incrementIndent(); println(); @@ -1702,41 +1712,41 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab x.getName().accept(this); if (x.getColumns().size() > 0) { - print(" ("); + print0(" ("); printAndAccept(x.getColumns(), ", "); - print(")"); + print(')'); } println(); - print("AS"); + print0(ucase ? "AS" : "as"); println(); - print("("); + print('('); incrementIndent(); println(); x.getSubQuery().accept(this); decrementIndent(); println(); - print(")"); + print(')'); return false; } @Override public boolean visit(SQLAlterTableAlterColumn x) { - print("ALTER COLUMN "); + print0(ucase ? "ALTER COLUMN " : "alter column "); x.getColumn().accept(this); if (x.isSetNotNull()) { // postgresql - print(" SET NOT NULL"); + print0(ucase ? " SET NOT NULL" : " set not null"); } if (x.isDropNotNull()) { // postgresql - print(" DROP NOT NULL"); + print0(ucase ? " DROP NOT NULL" : " drop not null"); } if (x.getSetDefault() != null) { // postgresql - print(" SET DEFAULT "); + print0(ucase ? " SET DEFAULT " : " set default "); x.getSetDefault().accept(this); } if (x.isDropDefault()) { // postgresql - print(" DROP DEFAULT"); + print0(ucase ? " DROP DEFAULT" : " drop default"); } return false; @@ -1745,11 +1755,11 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLCheck x) { if (x.getName() != null) { - print("CONSTRAINT "); + print0(ucase ? "CONSTRAINT " : "constraint "); x.getName().accept(this); print(' '); } - print("CHECK ("); + print0(ucase ? "CHECK (" : "check ("); incrementIndent(); x.getExpr().accept(this); decrementIndent(); @@ -1759,51 +1769,51 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLAlterTableDropForeignKey x) { - print("DROP FOREIGN KEY "); + print0(ucase ? "DROP FOREIGN KEY " : "drop foreign key "); x.getIndexName().accept(this); return false; } @Override public boolean visit(SQLAlterTableDropPrimaryKey x) { - print("DROP PRIMARY KEY"); + print0(ucase ? "DROP PRIMARY KEY" : "drop primary key"); return false; } @Override public boolean visit(SQLAlterTableEnableKeys x) { - print("ENABLE KEYS"); + print0(ucase ? "ENABLE KEYS" : "enable keys"); return false; } @Override public boolean visit(SQLAlterTableDisableKeys x) { - print("DISABLE KEYS"); + print0(ucase ? "DISABLE KEYS" : "disable keys"); return false; } public boolean visit(SQLAlterTableDisableConstraint x) { - print("DISABLE CONSTRAINT "); + print0(ucase ? "DISABLE CONSTRAINT " : "disable constraint "); x.getConstraintName().accept(this); return false; } public boolean visit(SQLAlterTableEnableConstraint x) { - print("ENABLE CONSTRAINT "); + print0(ucase ? "ENABLE CONSTRAINT " : "enable constraint "); x.getConstraintName().accept(this); return false; } @Override public boolean visit(SQLAlterTableDropConstraint x) { - print("DROP CONSTRAINT "); + print(ucase ? "DROP CONSTRAINT " : "drop constraint "); x.getConstraintName().accept(this); return false; } @Override public boolean visit(SQLAlterTableStatement x) { - print("ALTER TABLE "); + print(ucase ? "ALTER TABLE " : "alter table "); x.getName().accept(this); incrementIndent(); for (int i = 0; i < x.getItems().size(); ++i) { @@ -1826,20 +1836,20 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLCreateIndexStatement x) { - print("CREATE "); + print0(ucase ? "CREATE " : "create "); if (x.getType() != null) { print(x.getType()); - print(" "); + print(' '); } - print("INDEX "); + print0(ucase ? "INDEX " : "index "); x.getName().accept(this); - print(" ON "); + print0(ucase ? " ON " : " on "); x.getTable().accept(this); - print(" ("); + print0(" ("); printAndAccept(x.getItems(), ", "); - print(")"); + print(')'); return false; } @@ -1847,34 +1857,34 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLUnique x) { if (x.getName() != null) { - print("CONSTRAINT "); + print0(ucase ? "CONSTRAINT " : "constraint "); x.getName().accept(this); - print(" "); + print(' '); } - print("UNIQUE ("); + print0(ucase ? "UNIQUE (" : "unique ("); printAndAccept(x.getColumns(), ", "); - print(")"); + print(')'); return false; } @Override public boolean visit(SQLPrimaryKeyImpl x) { if (x.getName() != null) { - print("CONSTRAINT "); + print0(ucase ? "CONSTRAINT " : "constraint "); x.getName().accept(this); - print(" "); + print(' '); } - print("PRIMARY KEY ("); + print0(ucase ? "PRIMARY KEY (" : "primary key ("); printAndAccept(x.getColumns(), ", "); - print(")"); + print(')'); return false; } @Override public boolean visit(SQLAlterTableRenameColumn x) { - print("RENAME COLUMN "); + print0(ucase ? "RENAME COLUMN " : "rename column "); x.getColumn().accept(this); - print(" TO "); + print0(ucase ? " TO " : " to "); x.getTo().accept(this); return false; } @@ -1882,44 +1892,44 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLColumnReference x) { if (x.getName() != null) { - print("CONSTRAINT "); + print0(ucase ? "CONSTRAINT " : "constraint "); x.getName().accept(this); - print(" "); + print(' '); } - print("REFERENCES "); + print0(ucase ? "REFERENCES " : "references "); x.getTable().accept(this); - print(" ("); + print0(" ("); printAndAccept(x.getColumns(), ", "); - print(")"); + print(')'); return false; } @Override public boolean visit(SQLForeignKeyImpl x) { if (x.getName() != null) { - print("CONSTRAINT "); + print0(ucase ? "CONSTRAINT " : "constraint "); x.getName().accept(this); print(' '); } - print("FOREIGN KEY ("); + print0(ucase ? "FOREIGN KEY (" : "foreign key ("); printAndAccept(x.getReferencingColumns(), ", "); - print(")"); + print(')'); - print(" REFERENCES "); + print0(ucase ? " REFERENCES " : " references "); x.getReferencedTableName().accept(this); if (x.getReferencedColumns().size() > 0) { - print(" ("); + print0(" ("); printAndAccept(x.getReferencedColumns(), ", "); - print(")"); + print(')'); } return false; } @Override public boolean visit(SQLDropSequenceStatement x) { - print("DROP SEQUENCE "); + print0(ucase ? "DROP SEQUENCE " : "drop sequence "); x.getName().accept(this); return false; } @@ -1931,7 +1941,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLDropTriggerStatement x) { - print("DROP TRIGGER "); + print0(ucase ? "DROP TRIGGER " : "drop trigger "); x.getName().accept(this); return false; } @@ -1943,16 +1953,16 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLDropUserStatement x) { - print("DROP USER "); + print0(ucase ? "DROP USER " : "drop user "); printAndAccept(x.getUsers(), ", "); return false; } @Override public boolean visit(SQLExplainStatement x) { - print("EXPLAIN"); + print0(ucase ? "EXPLAIN" : "explain"); if (x.getHints() != null && x.getHints().size() > 0) { - print(" "); + print(' '); printAndAccept(x.getHints(), " "); } println(); @@ -1962,63 +1972,63 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLGrantStatement x) { - print("GRANT "); + print0(ucase ? "GRANT " : "grant "); printAndAccept(x.getPrivileges(), ", "); printGrantOn(x); if (x.getTo() != null) { - print(" TO "); + print0(ucase ? " TO " : " to "); x.getTo().accept(this); } boolean with = false; if (x.getMaxQueriesPerHour() != null) { if (!with) { - print(" WITH"); + print0(ucase ? " WITH" : " with"); with = true; } - print(" MAX_QUERIES_PER_HOUR "); + print0(ucase ? " MAX_QUERIES_PER_HOUR " : " max_queries_per_hour "); x.getMaxQueriesPerHour().accept(this); } if (x.getMaxUpdatesPerHour() != null) { if (!with) { - print(" WITH"); + print0(ucase ? " WITH" : " with"); with = true; } - print(" MAX_UPDATES_PER_HOUR "); + print0(ucase ? " MAX_UPDATES_PER_HOUR " : " max_updates_per_hour "); x.getMaxUpdatesPerHour().accept(this); } if (x.getMaxConnectionsPerHour() != null) { if (!with) { - print(" WITH"); + print0(ucase ? " WITH" : " with"); with = true; } - print(" MAX_CONNECTIONS_PER_HOUR "); + print0(ucase ? " MAX_CONNECTIONS_PER_HOUR " : " max_connections_per_hour "); x.getMaxConnectionsPerHour().accept(this); } if (x.getMaxUserConnections() != null) { if (!with) { - print(" WITH"); + print0(ucase ? " WITH" : " with"); with = true; } - print(" MAX_USER_CONNECTIONS "); + print0(ucase ? " MAX_USER_CONNECTIONS " : " max_user_connections "); x.getMaxUserConnections().accept(this); } if (x.isAdminOption()) { if (!with) { - print(" WITH"); + print0(ucase ? " WITH" : " with"); with = true; } - print(" ADMIN OPTION"); + print0(ucase ? " ADMIN OPTION" : " admin option"); } if (x.getIdentifiedBy() != null) { - print(" IDENTIFIED BY "); + print0(ucase ? " IDENTIFIED BY " : " identified by "); x.getIdentifiedBy().accept(this); } @@ -2027,7 +2037,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab protected void printGrantOn(SQLGrantStatement x) { if (x.getOn() != null) { - print(" ON "); + print0(ucase ? " ON " : " on "); if (x.getObjectType() != null) { print(x.getObjectType().name()); @@ -2040,11 +2050,11 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLRevokeStatement x) { - print("ROVOKE "); + print0(ucase ? "ROVOKE " : "rovoke "); printAndAccept(x.getPrivileges(), ", "); if (x.getOn() != null) { - print(" ON "); + print0(ucase ? " ON " : " on "); if (x.getObjectType() != null) { print(x.getObjectType().name()); @@ -2055,7 +2065,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } if (x.getFrom() != null) { - print(" FROM "); + print0(ucase ? " FROM " : " from "); x.getFrom().accept(this); } @@ -2064,10 +2074,10 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLDropDatabaseStatement x) { - print("DROP DATABASE "); + print0(ucase ? "DROP DATABASE " : "drop databasE "); if (x.isIfExists()) { - print("IF EXISTS "); + print0(ucase ? "IF EXISTS " : "if exists "); } x.getDatabase().accept(this); @@ -2077,10 +2087,10 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLDropFunctionStatement x) { - print("DROP FUNCTION "); + print0(ucase ? "DROP FUNCTION " : "drop function "); if (x.isIfExists()) { - print("IF EXISTS "); + print0(ucase ? "IF EXISTS " : "if exists "); } x.getName().accept(this); @@ -2090,10 +2100,10 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLDropTableSpaceStatement x) { - print("DROP TABLESPACE "); + print0(ucase ? "DROP TABLESPACE " : "drop tablespace "); if (x.isIfExists()) { - print("IF EXISTS "); + print0(ucase ? "IF EXISTS " : "if exists "); } x.getName().accept(this); @@ -2103,10 +2113,10 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLDropProcedureStatement x) { - print("DROP PROCEDURE "); + print0(ucase ? "DROP PROCEDURE " : "drop procedure "); if (x.isIfExists()) { - print("IF EXISTS "); + print0(ucase ? "IF EXISTS " : "if exists "); } x.getName().accept(this); @@ -2116,29 +2126,29 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLAlterTableAddIndex x) { - print("ADD "); + print0(ucase ? "ADD " : "add "); if (x.getType() != null) { print(x.getType()); - print(" "); + print(' '); } if (x.isUnique()) { - print("UNIQUE "); + print0(ucase ? "UNIQUE " : "unique "); } print(x.getKeyOrIndex()); - print(" "); + print(' '); if (x.getName() != null) { x.getName().accept(this); print(' '); } - print("("); + print('('); printAndAccept(x.getItems(), ", "); - print(")"); + print(')'); if (x.getUsing() != null) { - print(" USING "); + print0(ucase ? " USING " : " using "); print(x.getUsing()); } return false; @@ -2147,32 +2157,33 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLAlterTableAddConstraint x) { if (x.isWithNoCheck()) { - print("WITH NOCHECK "); + print0(ucase ? "WITH NOCHECK " : "with nocheck "); } - print("ADD "); + print0(ucase ? "ADD " : "add "); x.getConstraint().accept(this); return false; } public boolean visit(SQLCreateTriggerStatement x) { - print("CREATE "); + print0(ucase ? "CREATE " : "create "); if (x.isOrReplace()) { - print("OR REPLEACE "); + print0(ucase ? "OR REPLEACE " : "or repleace "); } - print("TRIGGER "); + print0(ucase ? "TRIGGER " : "trigger "); x.getName().accept(this); incrementIndent(); println(); if (TriggerType.INSTEAD_OF.equals(x.getTriggerType())) { - print("INSTEAD OF"); + print0(ucase ? "INSTEAD OF" : "instead of"); } else { - print(x.getTriggerType().name()); + String triggerTypeName = x.getTriggerType().name(); + print0(ucase ? triggerTypeName : triggerTypeName.toLowerCase()); } for (TriggerEvent event : x.getTriggerEvents()) { @@ -2180,12 +2191,12 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab print(event.name()); } println(); - print("ON "); + print0(ucase ? "ON " : "on "); x.getOn().accept(this); if (x.isForEachRow()) { println(); - print("FOR EACH ROW"); + print0(ucase ? "FOR EACH ROW" : "for each row"); } decrementIndent(); println(); @@ -2204,17 +2215,17 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLUnionQueryTableSource x) { - print("("); + print('('); incrementIndent(); println(); x.getUnion().accept(this); decrementIndent(); println(); - print(")"); + print(')'); if (x.getAlias() != null) { print(' '); - print(x.getAlias()); + print0(x.getAlias()); } return false; @@ -2222,10 +2233,10 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLTimestampExpr x) { - print("TIMESTAMP "); + print0(ucase ? "TIMESTAMP " : "timestamp "); if (x.isWithTimeZone()) { - print(" WITH TIME ZONE "); + print0(ucase ? " WITH TIME ZONE " : " with time zone "); } print('\''); @@ -2233,7 +2244,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab print('\''); if (x.getTimeZone() != null) { - print(" AT TIME ZONE '"); + print0(ucase ? " AT TIME ZONE '" : " at time zone '"); print(x.getTimeZone()); print('\''); } @@ -2243,7 +2254,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLBinaryExpr x) { - print("b'"); + print0("b'"); print(x.getValue()); print('\''); @@ -2252,21 +2263,21 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLAlterTableRename x) { - print("RENAME TO "); + print0(ucase ? "RENAME TO " : "rename to "); x.getTo().accept(this); return false; } @Override public boolean visit(SQLShowTablesStatement x) { - print("SHOW TABLES"); + print0(ucase ? "SHOW TABLES" : "show tables"); if (x.getDatabase() != null) { - print(" FROM "); + print0(ucase ? " FROM " : " from "); x.getDatabase().accept(this); } if (x.getLike() != null) { - print(" LIKE "); + print0(ucase ? " LIKE " : " like "); x.getLike().accept(this); } return false; @@ -2276,10 +2287,10 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab if (comments != null) { for (int i = 0; i < comments.size(); ++i) { if (i != 0) { - print(seperator); + print0(seperator); } String comment = comments.get(i); - print(comment); + print0(comment); } } } @@ -2288,68 +2299,69 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab if (comments != null) { for (int i = 0; i < comments.size(); ++i) { String comment = comments.get(i); - println(comment); + print0(comment); + println(); } } } @Override public boolean visit(SQLAlterViewRenameStatement x) { - print("ALTER VIEW "); + print0(ucase ? "ALTER VIEW " : "alter view "); x.getName().accept(this); - print(" RENAME TO "); + print0(ucase ? " RENAME TO " : " rename to "); x.getTo().accept(this); return false; } @Override public boolean visit(SQLAlterTableAddPartition x) { - print("ADD "); + print0(ucase ? "ADD " : "add "); if (x.isIfNotExists()) { - print("IF NOT EXISTS "); + print0(ucase ? "IF NOT EXISTS " : "if not exists "); } - print("PARTITION ("); + print0(ucase ? "PARTITION (" : "partition ("); printAndAccept(x.getPartition(), ", "); - print(")"); + print(')'); return false; } @Override public boolean visit(SQLAlterTableDropPartition x) { - print("DROP "); + print0(ucase ? "DROP " : "drop "); if (x.isIfNotExists()) { - print("IF NOT EXISTS "); + print0(ucase ? "IF NOT EXISTS " : "if not exists "); } - print("PARTITION ("); + print0(ucase ? "PARTITION (" : "partition ("); printAndAccept(x.getPartition(), ", "); - print(")"); + print(')'); if (x.isPurge()) { - print(" PURGE"); + print0(ucase ? " PURGE" : " purge"); } return false; } @Override public boolean visit(SQLAlterTableRenamePartition x) { - print("PARTITION ("); + print0(ucase ? "PARTITION (" : "partition ("); printAndAccept(x.getPartition(), ", "); - print(") RENAME TO PARTITION("); + print(ucase ? ") RENAME TO PARTITION(" : ") rename to partition("); printAndAccept(x.getTo(), ", "); - print(")"); + print(')'); return false; } @Override public boolean visit(SQLAlterTableSetComment x) { - print("SET COMMENT "); + print0(ucase ? "SET COMMENT " : "set comment "); x.getComment().accept(this); return false; } @Override public boolean visit(SQLAlterTableSetLifecycle x) { - print("SET LIFECYCLE "); + print0(ucase ? "SET LIFECYCLE " : "set lifecycle "); x.getLifecycle().accept(this); return false; } @@ -2357,34 +2369,34 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLAlterTableEnableLifecycle x) { if (x.getPartition().size() != 0) { - print("PARTITION ("); + print0(ucase ? "PARTITION (" : "partition ("); printAndAccept(x.getPartition(), ", "); - print(") "); + print0(") "); } - print("ENABLE LIFECYCLE"); + print0(ucase ? "ENABLE LIFECYCLE" : "enable lifecycle"); return false; } @Override public boolean visit(SQLAlterTableDisableLifecycle x) { if (x.getPartition().size() != 0) { - print("PARTITION ("); + print0(ucase ? "PARTITION (" : "partition ("); printAndAccept(x.getPartition(), ", "); - print(") "); + print0(") "); } - print("DISABLE LIFECYCLE"); + print0(ucase ? "DISABLE LIFECYCLE" : "disable lifecycle"); return false; } @Override public boolean visit(SQLAlterTableTouch x) { - print("TOUCH"); + print0(ucase ? "TOUCH" : "touch"); if (x.getPartition().size() != 0) { - print(" PARTITION ("); + print0(ucase ? " PARTITION (" : " partition ("); printAndAccept(x.getPartition(), ", "); - print(")"); + print(')'); } return false; } @@ -2392,33 +2404,41 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLArrayExpr x) { x.getExpr().accept(this); - print("["); + print('['); printAndAccept(x.getValues(), ", "); - print("]"); + print(']'); return false; } @Override public boolean visit(SQLOpenStatement x) { - print("OPEN "); + print0(ucase ? "OPEN " : "open "); print(x.getCursorName()); return false; } @Override public boolean visit(SQLFetchStatement x) { - print("FETCH "); + print0(ucase ? "FETCH " : "fetch "); x.getCursorName().accept(this); - print(" INTO "); + print0(ucase ? " INTO " : " into "); printAndAccept(x.getInto(), ", "); return false; } @Override public boolean visit(SQLCloseStatement x) { - print("CLOSE "); + print0(ucase ? "CLOSE " : "close "); print(x.getCursorName()); return false; } + + public boolean isUppCase() { + return ucase; + } + + public void setUppCase(boolean val) { + this.ucase = val; + } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlSelectTest_14.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlSelectTest_14.java index 1611bf1bc4..242c653093 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlSelectTest_14.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlSelectTest_14.java @@ -68,5 +68,14 @@ public class MySqlSelectTest_14 extends MysqlTest { + "\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); } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsSelectTest4.java b/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsSelectTest4.java index f1965ee7d6..07a59a3dda 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsSelectTest4.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/odps/OdpsSelectTest4.java @@ -29,5 +29,10 @@ public class OdpsSelectTest4 extends TestCase { + "\nFROM dual", SQLUtils.formatOdps(sql)); } - + public void test_distribute_by_lcase() throws Exception { + String sql = "select total_day_cnt * EXP(-datediff(to_date('20150819', 'yyyymmdd'), last_time, 'dd') / 60) from dual";// + + Assert.assertEquals("select total_day_cnt * EXP(-datediff(to_date('20150819', 'yyyymmdd'), last_time, 'dd') / 60)" + + "\nfrom dual", SQLUtils.formatOdps(sql, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION)); + } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGSelectIntoTest.java b/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGSelectIntoTest.java index 4bec319099..b9ff01e325 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGSelectIntoTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/postgresql/PGSelectIntoTest.java @@ -20,6 +20,7 @@ import java.util.List; import org.junit.Assert; import com.alibaba.druid.sql.PGTest; +import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.postgresql.parser.PGSQLStatementParser; import com.alibaba.druid.sql.dialect.postgresql.visitor.PGSchemaStatVisitor; @@ -32,13 +33,13 @@ public class PGSelectIntoTest extends PGTest { PGSQLStatementParser parser = new PGSQLStatementParser(sql); List statementList = parser.parseStatementList(); - SQLStatement statemen = statementList.get(0); + SQLStatement stmt = statementList.get(0); print(statementList); Assert.assertEquals(1, statementList.size()); PGSchemaStatVisitor visitor = new PGSchemaStatVisitor(); - statemen.accept(visitor); + stmt.accept(visitor); System.out.println("Tables : " + visitor.getTables()); System.out.println("fields : " + visitor.getColumns()); @@ -49,5 +50,17 @@ public class PGSelectIntoTest extends PGTest { Assert.assertTrue(visitor.getColumns().contains(new Column("films", "*"))); Assert.assertTrue(visitor.getColumns().contains(new Column("films", "date_prod"))); + + String result = SQLUtils.toPGString(stmt); + Assert.assertEquals(result,"SELECT *" // + + "\nINTO films_recent" // + + "\nFROM films" // + + "\nWHERE date_prod >= '2002-01-01'"); + + String result_lcase = SQLUtils.toPGString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION); + Assert.assertEquals(result_lcase,"select *" // + + "\ninto films_recent" // + + "\nfrom films" // + + "\nwhere date_prod >= '2002-01-01'"); } }