diff --git a/src/main/java/com/alibaba/druid/sql/SQLUtils.java b/src/main/java/com/alibaba/druid/sql/SQLUtils.java index 3788df5dcc..745141080f 100644 --- a/src/main/java/com/alibaba/druid/sql/SQLUtils.java +++ b/src/main/java/com/alibaba/druid/sql/SQLUtils.java @@ -133,10 +133,18 @@ public class SQLUtils { public static String formatMySql(String sql) { return format(sql, JdbcUtils.MYSQL); } + + public static String formatMySql(String sql, FormatOption option) { + return format(sql, JdbcUtils.MYSQL, option); + } public static String formatOracle(String sql) { return format(sql, JdbcUtils.ORACLE); } + + public static String formatOracle(String sql, FormatOption option) { + return format(sql, JdbcUtils.ORACLE, option); + } public static String formatOdps(String sql) { return format(sql, JdbcUtils.ODPS); @@ -151,8 +159,20 @@ public class SQLUtils { } public static String toOracleString(SQLObject sqlObject) { + return toOracleString(sqlObject, null); + } + + public static String toOracleString(SQLObject sqlObject, FormatOption option) { StringBuilder out = new StringBuilder(); - sqlObject.accept(new OracleOutputVisitor(out, false)); + OracleOutputVisitor visitor = new OracleOutputVisitor(out, false); + + if (option == null) { + option = DEFAULT_FORMAT_OPTION; + } + + visitor.setUppCase(option.isUppCase()); + + sqlObject.accept(visitor); String sql = out.toString(); return sql; @@ -194,8 +214,8 @@ public class SQLUtils { return sql; } - public static String formatPGSql(String sql) { - return format(sql, JdbcUtils.POSTGRESQL); + public static String formatPGSql(String sql, FormatOption option) { + return format(sql, JdbcUtils.POSTGRESQL, option); } public static SQLExpr toSQLExpr(String sql, String dbType) { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/db2/visitor/DB2OutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/db2/visitor/DB2OutputVisitor.java index 59d7ebac23..297e06da63 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/db2/visitor/DB2OutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/db2/visitor/DB2OutputVisitor.java @@ -42,32 +42,32 @@ public class DB2OutputVisitor extends SQLASTOutputVisitor implements DB2ASTVisit SQLOrderBy orderBy= ((SQLSelect) parent).getOrderBy(); if (orderBy!=null&&orderBy.getItems().size() > 0) { println(); - print("ORDER BY "); + print0(ucase ? "ORDER BY " : "order by "); printAndAccept(orderBy.getItems(), ", "); ((SQLSelect) parent).setOrderBy(null); } } println(); - print("FETCH FIRST "); + print0(ucase ? "FETCH FIRST " : "fetch first "); x.getFirst().accept(this); - print(" ROWS ONLY"); + print0(ucase ? " ROWS ONLY" : " rows only"); } if (x.isForReadOnly()) { println(); - print("FOR READ ONLY"); + print0(ucase ? "FOR READ ONLY" : "for read only"); } if (x.getIsolation() != null) { println(); - print("WITH "); - print(x.getIsolation().name()); + print0(ucase ? "WITH " : "with "); + print0(x.getIsolation().name()); } if (x.getOptimizeFor() != null) { println(); - print("OPTIMIZE FOR "); + print0(ucase ? "OPTIMIZE FOR " : "optimize for "); x.getOptimizeFor().accept(this); } @@ -82,7 +82,7 @@ public class DB2OutputVisitor extends SQLASTOutputVisitor implements DB2ASTVisit @Override public boolean visit(DB2ValuesStatement x) { - print("VALUES "); + print0(ucase ? "VALUES " : "values "); x.getExpr().accept(this); return false; } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectUnPivot.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectUnPivot.java index 50fc96db4c..b669211e76 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectUnPivot.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/stmt/OracleSelectUnPivot.java @@ -60,12 +60,12 @@ public class OracleSelectUnPivot extends OracleSelectPivotBase { public static enum NullsIncludeType { INCLUDE_NULLS, EXCLUDE_NULLS; - public static String toString(NullsIncludeType type) { + public static String toString(NullsIncludeType type, boolean ucase) { if (INCLUDE_NULLS.equals(type)) { - return "INCLUDE NULLS"; + return ucase ? "INCLUDE NULLS" : "include nulls"; } if (EXCLUDE_NULLS.equals(type)) { - return "EXCLUDE NULLS"; + return ucase ? "EXCLUDE NULLS" : "exclude nulls"; } throw new IllegalArgumentException(); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java index 4d4f8041b7..7515bcc6b0 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java @@ -200,7 +200,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (isPrettyFormat()) { if (x.getParent() != null) { - print(";"); + print(';'); } else { println(";"); } @@ -209,23 +209,23 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS private void printHints(List hints) { if (hints.size() > 0) { - print("/*+ "); + print0("/*+ "); printAndAccept(hints, ", "); - print(" */"); + print0(" */"); } } public boolean visit(SQLAllColumnExpr x) { - print("*"); + print('*'); return false; } public boolean visit(OracleAnalytic x) { - print("OVER ("); + print0(ucase ? "OVER (" : "over ("); boolean space = false; if (x.getPartitionBy().size() > 0) { - print("PARTITION BY "); + print0(ucase ? "PARTITION BY " : "partition by "); printAndAccept(x.getPartitionBy(), ", "); space = true; @@ -233,7 +233,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (x.getOrderBy() != null) { if (space) { - print(" "); + print(' '); } x.getOrderBy().accept(this); space = true; @@ -241,51 +241,51 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (x.getWindowing() != null) { if (space) { - print(" "); + print(' '); } x.getWindowing().accept(this); } - print(")"); + print(')'); return false; } public boolean visit(OracleAnalyticWindowing x) { - print(x.getType().name().toUpperCase()); - print(" "); + print0(x.getType().name().toUpperCase()); + print(' '); x.getExpr().accept(this); return false; } public boolean visit(OracleDateExpr x) { - print("DATE '"); - print(x.getLiteral()); + print0(ucase ? "DATE '" : "date '"); + print0(x.getLiteral()); print('\''); return false; } public boolean visit(OracleDbLinkExpr x) { x.getExpr().accept(this); - print("@"); - print(x.getDbLink()); + print('@'); + print0(x.getDbLink()); return false; } public boolean visit(OracleDeleteStatement x) { if (x.getTableName() != null) { - print("DELETE "); + print0(ucase ? "DELETE " : "delete "); if (x.getHints().size() > 0) { printAndAccept(x.getHints(), ", "); print(' '); } - print("FROM "); + print0(ucase ? "FROM " : "from "); if (x.isOnly()) { - print("ONLY ("); + print0(ucase ? "ONLY (" : "only ("); x.getTableName().accept(this); - print(")"); + print(')'); } else { x.getTableName().accept(this); } @@ -296,7 +296,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (x.getWhere() != null) { println(); incrementIndent(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); x.getWhere().setParent(x); x.getWhere().accept(this); decrementIndent(); @@ -311,44 +311,44 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } public boolean visit(OracleExtractExpr x) { - print("EXTRACT("); - print(x.getUnit().name()); - print(" FROM "); + print0(ucase ? "EXTRACT(" : "extract("); + print0(x.getUnit().name()); + print0(ucase ? " FROM " : " from "); x.getFrom().accept(this); - print(")"); + print(')'); return false; } public boolean visit(OracleIntervalExpr x) { if (x.getValue() instanceof SQLLiteralExpr) { - print("INTERVAL "); + print0(ucase ? "INTERVAL " : "interval "); x.getValue().accept(this); - print(" "); + print(' '); } else { print('('); x.getValue().accept(this); - print(") "); + print0(") "); } - print(x.getType().name()); + print0(x.getType().name()); if (x.getPrecision() != null) { - print("("); + print('('); print(x.getPrecision().intValue()); if (x.getFactionalSecondsPrecision() != null) { - print(", "); + print0(", "); print(x.getFactionalSecondsPrecision().intValue()); } - print(")"); + print(')'); } if (x.getToType() != null) { - print(" TO "); - print(x.getToType().name()); + print0(ucase ? " TO " : " to "); + print0(x.getToType().name()); if (x.getToFactionalSecondsPrecision() != null) { - print("("); + print('('); print(x.getToFactionalSecondsPrecision().intValue()); - print(")"); + print(')'); } } @@ -357,11 +357,11 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS public boolean visit(OracleOrderBy x) { if (x.getItems().size() > 0) { - print("ORDER "); + print0(ucase ? "ORDER " : "order "); if (x.isSibings()) { - print("SIBLINGS "); + print0(ucase ? "SIBLINGS " : "siblings "); } - print("BY "); + print0(ucase ? "BY " : "by "); printAndAccept(x.getItems(), ", "); } @@ -370,12 +370,12 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS public boolean visit(OracleOuterExpr x) { x.getExpr().accept(this); - print("(+)"); + print0("(+)"); return false; } public boolean visit(OraclePLSQLCommitStatement astNode) { - print("/"); + print('/'); println(); return false; } @@ -397,7 +397,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS x.getQuery().accept(this); if (x.getRestriction() != null) { - print(" "); + print(' '); x.getRestriction().accept(this); } @@ -415,19 +415,19 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } public boolean visit(OracleSelectForUpdate x) { - print("FOR UPDATE"); + print0(ucase ? "FOR UPDATE" : "for update"); if (x.getOf().size() > 0) { - print("("); + print('('); printAndAccept(x.getOf(), ", "); - print(")"); + print(')'); } if (x.isNotWait()) { - print(" NOWAIT"); + print0(ucase ? " NOWAIT" : " nowait"); } else if (x.isSkipLocked()) { - print(" SKIP LOCKED"); + print0(ucase ? " SKIP LOCKED" : " skip locked"); } else if (x.getWait() != null) { - print(" WAIT "); + print0(ucase ? " WAIT " : " wait "); x.getWait().accept(this); } return false; @@ -435,19 +435,19 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS public boolean visit(OracleSelectHierachicalQueryClause x) { if (x.getStartWith() != null) { - print("START WITH "); + print0(ucase ? "START WITH " : "start with "); x.getStartWith().accept(this); println(); } - print("CONNECT BY "); + print0(ucase ? "CONNECT BY " : "connect by "); if (x.isNoCycle()) { - print("NOCYCLE "); + print0(ucase ? "NOCYCLE " : "nocycle "); } if (x.isPrior()) { - print("PRIOR "); + print0(ucase ? "PRIOR " : "prior "); } x.getConnectBy().accept(this); @@ -459,7 +459,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS x.getLeft().accept(this); if (x.getJoinType() == JoinType.COMMA) { - print(", "); + print0(", "); x.getRight().accept(this); } else { boolean isRoot = x.getParent() instanceof SQLSelectQueryBlock; @@ -468,8 +468,8 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } println(); - print(JoinType.toString(x.getJoinType())); - print(" "); + print0(ucase ? x.getJoinType().name : x.getJoinType().name_lcase); + print(' '); x.getRight().accept(this); @@ -478,15 +478,15 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } if (x.getCondition() != null) { - print(" ON "); + print0(ucase ? " ON " : " on "); x.getCondition().accept(this); - print(" "); + print(' '); } if (x.getUsing().size() > 0) { - print(" USING ("); + print0(ucase ? " USING (" : " using ("); printAndAccept(x.getUsing(), ", "); - print(")"); + print(')'); } if (x.getFlashback() != null) { @@ -501,44 +501,44 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS public boolean visit(OracleOrderByItem x) { x.getExpr().accept(this); if (x.getType() != null) { - print(" "); - print(x.getType().name().toUpperCase()); + print(' '); + print0(x.getType().name().toUpperCase()); } if (x.getNullsOrderType() != null) { - print(" "); - print(x.getNullsOrderType().toFormalString()); + print(' '); + print0(x.getNullsOrderType().toFormalString()); } return false; } public boolean visit(OracleSelectPivot x) { - print("PIVOT"); + print0(ucase ? "PIVOT" : "pivot"); if (x.isXml()) { - print(" XML"); + print0(ucase ? " XML" : " xml"); } - print(" ("); + print0(" ("); printAndAccept(x.getItems(), ", "); if (x.getPivotFor().size() > 0) { - print(" FOR "); + print0(ucase ? " FOR " : " for "); if (x.getPivotFor().size() == 1) { ((SQLExpr) x.getPivotFor().get(0)).accept(this); } else { - print("("); + print('('); printAndAccept(x.getPivotFor(), ", "); - print(")"); + print(')'); } } if (x.getPivotIn().size() > 0) { - print(" IN ("); + print0(ucase ? " IN (" : " in ("); printAndAccept(x.getPivotIn(), ", "); - print(")"); + print(')'); } - print(")"); + print(')'); return false; } @@ -546,8 +546,8 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS public boolean visit(OracleSelectPivot.Item x) { x.getExpr().accept(this); if ((x.getAlias() != null) && (x.getAlias().length() > 0)) { - print(" AS "); - print(x.getAlias()); + print0(ucase ? " AS " : " as "); + print0(x.getAlias()); } return false; } @@ -561,7 +561,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } public boolean visit(OracleSelectQueryBlock x) { - print("SELECT "); + print0(ucase ? "SELECT " : "select "); if (x.getHints().size() > 0) { printAndAccept(x.getHints(), ", "); @@ -569,25 +569,25 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } 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.getInto() != null) { println(); - print("INTO "); + print0(ucase ? "INTO " : "into "); x.getInto().accept(this); } println(); - print("FROM "); + print0(ucase ? "FROM " : "from "); if (x.getFrom() == null) { - print("DUAL"); + print0(ucase ? "DUAL" : "dual"); } else { x.getFrom().setParent(x); x.getFrom().accept(this); @@ -595,7 +595,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (x.getWhere() != null) { println(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); x.getWhere().setParent(x); x.getWhere().accept(this); } @@ -619,27 +619,27 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } public boolean visit(OracleSelectRestriction.CheckOption x) { - print("CHECK OPTION"); + print0(ucase ? "CHECK OPTION" : "check option"); if (x.getConstraint() != null) { - print(" "); + print(' '); x.getConstraint().accept(this); } return false; } public boolean visit(OracleSelectRestriction.ReadOnly x) { - print("READ ONLY"); + print0(ucase ? "READ ONLY" : "read only"); return false; } public boolean visit(OracleSelectSubqueryTableSource x) { - print("("); + print('('); incrementIndent(); println(); x.getSelect().accept(this); decrementIndent(); println(); - print(")"); + print(')'); if (x.getPivot() != null) { println(); @@ -652,8 +652,8 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } if ((x.getAlias() != null) && (x.getAlias().length() != 0)) { - print(" "); - print(x.getAlias()); + print(' '); + print0(x.getAlias()); } return false; @@ -661,20 +661,20 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS public boolean visit(OracleSelectTableReference x) { if (x.isOnly()) { - print("ONLY ("); + print0(ucase ? "ONLY (" : "only ("); x.getExpr().accept(this); if (x.getPartition() != null) { - print(" "); + print(' '); x.getPartition().accept(this); } - print(")"); + print(')'); } else { x.getExpr().accept(this); if (x.getPartition() != null) { - print(" "); + print(' '); x.getPartition().accept(this); } } @@ -684,7 +684,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } if (x.getSampleClause() != null) { - print(" "); + print(' '); x.getSampleClause().accept(this); } @@ -704,44 +704,44 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } public boolean visit(OracleSelectUnPivot x) { - print("UNPIVOT"); + print0(ucase ? "UNPIVOT" : "unpivot"); if (x.getNullsIncludeType() != null) { - print(" "); - print(OracleSelectUnPivot.NullsIncludeType.toString(x.getNullsIncludeType())); + print(' '); + print0(OracleSelectUnPivot.NullsIncludeType.toString(x.getNullsIncludeType(), ucase)); } - print(" ("); + print0(" ("); if (x.getItems().size() == 1) { ((SQLExpr) x.getItems().get(0)).accept(this); } else { - print(" ("); + print0(" ("); printAndAccept(x.getItems(), ", "); - print(")"); + print(')'); } if (x.getPivotFor().size() > 0) { - print(" FOR "); + print0(ucase ? " FOR " : " for "); if (x.getPivotFor().size() == 1) { ((SQLExpr) x.getPivotFor().get(0)).accept(this); } else { - print("("); + print('('); printAndAccept(x.getPivotFor(), ", "); - print(")"); + print(')'); } } if (x.getPivotIn().size() > 0) { - print(" IN ("); + print0(ucase ? " IN (" : " in ("); printAndAccept(x.getPivotIn(), ", "); - print(")"); + print(')'); } - print(")"); + print(')'); return false; } public boolean visit(OracleUpdateStatement x) { - print("UPDATE "); + print0(ucase ? "UPDATE " : "update "); if (x.getHints().size() > 0) { printAndAccept(x.getHints(), ", "); @@ -749,9 +749,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } if (x.isOnly()) { - print("ONLY ("); + print0(ucase ? "ONLY (" : "only ("); x.getTableSource().accept(this); - print(")"); + print(')'); } else { x.getTableSource().accept(this); } @@ -760,17 +760,17 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS 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.getWhere() != null) { println(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); incrementIndent(); x.getWhere().setParent(x); x.getWhere().accept(this); @@ -779,9 +779,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (x.getReturning().size() > 0) { println(); - print("RETURNING "); + print0(ucase ? "RETURNING " : "returning "); printAndAccept(x.getReturning(), ", "); - print(" INTO "); + print0(ucase ? " INTO " : " into "); printAndAccept(x.getReturningInto(), ", "); } @@ -901,20 +901,20 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(SampleClause x) { - print("SAMPLE "); + print0(ucase ? "SAMPLE " : "sample "); if (x.isBlock()) { - print("BLOCK "); + print0(ucase ? "BLOCK " : "block "); } - print("("); + print('('); printAndAccept(x.getPercent(), ", "); - print(")"); + print(')'); if (x.getSeedValue() != null) { - print(" SEED ("); + print0(ucase ? " SEED (" : " seed ("); x.getSeedValue().accept(this); - print(")"); + print(')'); } return false; @@ -933,19 +933,19 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(PartitionExtensionClause x) { if (x.isSubPartition()) { - print("SUBPARTITION "); + print0(ucase ? "SUBPARTITION " : "subpartition "); } else { - print("PARTITION "); + print0(ucase ? "PARTITION " : "partition "); } if (x.getPartition() != null) { - print("("); + print('('); x.getPartition().accept(this); - print(")"); + print(')'); } else { - print("FOR ("); + print0(ucase ? "FOR (" : "for ("); printAndAccept(x.getFor(), ","); - print(")"); + print(')'); } return false; } @@ -957,11 +957,11 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(VersionsFlashbackQueryClause x) { - print("VERSIONS BETWEEN "); - print(x.getType().name()); - print(" "); + print0(ucase ? "VERSIONS BETWEEN " : "versions between "); + print0(x.getType().name()); + print(' '); x.getBegin().accept(this); - print(" AND "); + print0(ucase ? " AND " : " and "); x.getEnd().accept(this); return false; } @@ -973,11 +973,11 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(AsOfFlashbackQueryClause x) { - print("AS OF "); - print(x.getType().name()); - print(" ("); + print0(ucase ? "AS OF " : "as of "); + print0(x.getType().name()); + print0(" ("); x.getExpr().accept(this); - print(")"); + print(')'); return false; } @@ -988,10 +988,10 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(GroupingSetExpr x) { - print("GROUPING SETS"); - print(" ("); + print0(ucase ? "GROUPING SETS" : "grouping sets"); + print0(" ("); printAndAccept(x.getParameters(), ", "); - print(")"); + print(')'); return false; } @@ -1005,20 +1005,20 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS 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(')'); if (x.getSearchClause() != null) { println(); @@ -1039,11 +1039,11 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(SearchClause x) { - print("SEARCH "); - print(x.getType().name()); - print(" FIRST BY "); + print0(ucase ? "SEARCH " : "search "); + print0(x.getType().name()); + print0(ucase ? " FIRST BY " : " first by "); printAndAccept(x.getItems(), ", "); - print(" SET "); + print0(ucase ? " SET " : " set "); x.getOrderingColumn().accept(this); return false; @@ -1056,13 +1056,13 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(CycleClause x) { - print("CYCLE "); + print0(ucase ? "CYCLE " : "cycle "); printAndAccept(x.getAliases(), ", "); - print(" SET "); + print0(ucase ? " SET " : " set "); x.getMark().accept(this); - print(" TO "); + print0(ucase ? " TO " : " to "); x.getValue().accept(this); - print(" DEFAULT "); + print0(ucase ? " DEFAULT " : " default "); x.getDefaultValue().accept(this); return false; @@ -1075,7 +1075,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleBinaryFloatExpr x) { - print(x.getValue().toString()); + print0(x.getValue().toString()); print('F'); return false; } @@ -1087,7 +1087,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleBinaryDoubleExpr x) { - print(x.getValue().toString()); + print0(x.getValue().toString()); print('D'); return false; } @@ -1104,13 +1104,13 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleCursorExpr x) { - print("CURSOR("); + print0(ucase ? "CURSOR(" : "cursor("); incrementIndent(); println(); x.getQuery().accept(this); decrementIndent(); println(); - print(")"); + print(')'); return false; } @@ -1122,7 +1122,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleIsSetExpr x) { x.getNestedTable().accept(this); - print(" IS A SET"); + print0(ucase ? " IS A SET" : " is a set"); return false; } @@ -1134,9 +1134,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(ReturnRowsClause x) { if (x.isAll()) { - print("RETURN ALL ROWS"); + print0(ucase ? "RETURN ALL ROWS" : "return all rows"); } else { - print("RETURN UPDATED ROWS"); + print0(ucase ? "RETURN UPDATED ROWS" : "return updated rows"); } return false; } @@ -1148,12 +1148,12 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(ModelClause x) { - print("MODEL"); + print0(ucase ? "MODEL" : "model"); incrementIndent(); for (CellReferenceOption opt : x.getCellReferenceOptions()) { print(' '); - print(opt.name); + print0(opt.name); } if (x.getReturnRowsClause() != null) { @@ -1180,7 +1180,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(MainModelClause x) { if (x.getMainModelName() != null) { - print(" MAIN "); + print0(ucase ? " MAIN " : " main "); x.getMainModelName().accept(this); } @@ -1189,7 +1189,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS for (CellReferenceOption opt : x.getCellReferenceOptions()) { println(); - print(opt.name); + print0(opt.name); } println(); @@ -1210,14 +1210,14 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS println(); } - print("DIMENSION BY ("); + print0(ucase ? "DIMENSION BY (" : "dimension by ("); printAndAccept(x.getDimensionByColumns(), ", "); - print(")"); + print(')'); println(); - print("MEASURES ("); + print0(ucase ? "MEASURES (" : "measures ("); printAndAccept(x.getMeasuresColumns(), ", "); - print(")"); + print(')'); return false; } @@ -1228,9 +1228,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(QueryPartitionClause x) { - print("PARTITION BY ("); + print0(ucase ? "PARTITION BY (" : "partition by ("); printAndAccept(x.getExprList(), ", "); - print(")"); + print(')'); return false; } @@ -1243,8 +1243,8 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS public boolean visit(ModelColumn x) { x.getExpr().accept(this); if (x.getAlias() != null) { - print(" "); - print(x.getAlias()); + print(' '); + print0(x.getAlias()); } return false; } @@ -1257,28 +1257,28 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(ModelRulesClause x) { if (x.getOptions().size() > 0) { - print("RULES"); + print0(ucase ? "RULES" : "rules"); for (ModelRuleOption opt : x.getOptions()) { - print(" "); - print(opt.name); + print(' '); + print0(opt.name); } } if (x.getIterate() != null) { - print(" ITERATE ("); + print0(ucase ? " ITERATE (" : " iterate ("); x.getIterate().accept(this); - print(")"); + print(')'); if (x.getUntil() != null) { - print(" UNTIL ("); + print0(ucase ? " UNTIL (" : " until ("); x.getUntil().accept(this); - print(")"); + print(')'); } } - print(" ("); + print0(" ("); printAndAccept(x.getCellAssignmentItems(), ", "); - print(")"); + print(')'); return false; } @@ -1291,18 +1291,18 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(CellAssignmentItem x) { if (x.getOption() != null) { - print(x.getOption().name); - print(" "); + print0(x.getOption().name); + print(' '); } x.getCellAssignment().accept(this); if (x.getOrderBy() != null) { - print(" "); + print(' '); x.getOrderBy().accept(this); } - print(" = "); + print0(" = "); x.getExpr().accept(this); return false; @@ -1316,9 +1316,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(CellAssignment x) { x.getMeasureColumn().accept(this); - print("["); + print0("["); printAndAccept(x.getConditions(), ", "); - print("]"); + print0("]"); return false; } @@ -1329,27 +1329,27 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleMergeStatement x) { - print("MERGE "); + print0(ucase ? "MERGE " : "merge "); if (x.getHints().size() > 0) { printAndAccept(x.getHints(), ", "); - print(" "); + print(' '); } - print("INTO "); + print0(ucase ? "INTO " : "into "); x.getInto().accept(this); if (x.getAlias() != null) { - print(" "); - print(x.getAlias()); + print(' '); + print0(x.getAlias()); } println(); - print("USING "); + print0(ucase ? "USING " : "using "); x.getUsing().accept(this); - print(" ON ("); + print0(ucase ? " ON (" : " on ("); x.getOn().accept(this); - print(") "); + print0(") "); if (x.getUpdateClause() != null) { println(); @@ -1376,12 +1376,12 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(MergeUpdateClause x) { - print("WHEN MATCHED THEN UPDATE SET "); + print0(ucase ? "WHEN MATCHED THEN UPDATE SET " : "when matched then update set "); printAndAccept(x.getItems(), ", "); if (x.getWhere() != null) { incrementIndent(); println(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); x.getWhere().setParent(x); x.getWhere().accept(this); decrementIndent(); @@ -1390,7 +1390,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (x.getDeleteWhere() != null) { incrementIndent(); println(); - print("DELETE WHERE "); + print0(ucase ? "DELETE WHERE " : "delete where "); x.getDeleteWhere().setParent(x); x.getDeleteWhere().accept(this); decrementIndent(); @@ -1406,18 +1406,18 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(MergeInsertClause x) { - print("WHEN NOT MATCHED THEN INSERT"); + print0(ucase ? "WHEN NOT MATCHED THEN INSERT" : "when not matched then insert"); if (x.getColumns().size() > 0) { - print(" "); + print(' '); printAndAccept(x.getColumns(), ", "); } - print(" VALUES ("); + print0(ucase ? " VALUES (" : " values ("); printAndAccept(x.getValues(), ", "); - print(")"); + print(')'); if (x.getWhere() != null) { incrementIndent(); println(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); x.getWhere().setParent(x); x.getWhere().accept(this); decrementIndent(); @@ -1433,21 +1433,21 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleErrorLoggingClause x) { - print("LOG ERRORS "); + print0(ucase ? "LOG ERRORS " : "log errors "); if (x.getInto() != null) { - print("INTO "); + print0(ucase ? "INTO " : "into "); x.getInto().accept(this); - print(" "); + print(' '); } if (x.getSimpleExpression() != null) { - print("("); + print('('); x.getSimpleExpression().accept(this); - print(")"); + print(')'); } if (x.getLimit() != null) { - print(" REJECT LIMIT "); + print0(ucase ? " REJECT LIMIT " : " reject limit "); x.getLimit().accept(this); } @@ -1461,9 +1461,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleReturningClause x) { - print("RETURNING "); + print0(ucase ? "RETURNING " : "returning "); printAndAccept(x.getItems(), ", "); - print(" INTO "); + print0(ucase ? " INTO " : " into "); printAndAccept(x.getValues(), ", "); return false; @@ -1478,37 +1478,37 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS public boolean visit(OracleInsertStatement x) { //visit((SQLInsertStatement) x); - print("INSERT "); + print0(ucase ? "INSERT " : "insert "); if (x.getHints().size() > 0) { printAndAccept(x.getHints(), ", "); print(' '); } - print("INTO "); + print0(ucase ? "INTO " : "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 { @@ -1539,30 +1539,30 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(InsertIntoClause x) { - print("INTO "); + print0(ucase ? "INTO " : "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 "); x.getValues().accept(this); } else { if (x.getQuery() != null) { @@ -1582,15 +1582,15 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleMultiInsertStatement x) { - print("INSERT "); + print0(ucase ? "INSERT " : "insert "); if (x.getHints().size() > 0) { this.printHints(x.getHints()); } if (x.getOption() != null) { - print(x.getOption().name()); - print(" "); + print0(x.getOption().name()); + print(' '); } for (int i = 0, size = x.getEntries().size(); i < size; ++i) { @@ -1625,7 +1625,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (x.getElseItem() != null) { println(); - print("ELSE"); + print0(ucase ? "ELSE" : "else"); incrementIndent(); println(); x.getElseItem().accept(this); @@ -1642,9 +1642,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(ConditionalInsertClauseItem x) { - print("WHEN "); + print0(ucase ? "WHEN " : "when "); x.getWhen().accept(this); - print(" THEN"); + print0(ucase ? " THEN" : " then"); incrementIndent(); println(); x.getThen().accept(this); @@ -1665,7 +1665,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleBlockStatement x) { if (x.getParameters().size() != 0) { - print("DECLARE"); + print0(ucase ? "DECLARE" : "declare"); incrementIndent(); println(); @@ -1675,13 +1675,13 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } OracleParameter param = x.getParameters().get(i); param.accept(this); - print(";"); + print(';'); } decrementIndent(); println(); } - print("BEGIN"); + print0(ucase ? "BEGIN" : "begin"); incrementIndent(); println(); for (int i = 0, size = x.getStatementList().size(); i < size; ++i) { @@ -1694,7 +1694,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } decrementIndent(); println(); - print("END"); + print0(ucase ? "END" : "end"); return false; } @@ -1705,15 +1705,15 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleLockTableStatement x) { - print("LOCK TABLE "); + print0(ucase ? "LOCK TABLE " : "lock table "); x.getTable().accept(this); - print(" IN "); - print(x.getLockMode().name()); - print(" MODE "); + print0(ucase ? " IN " : " in "); + print0(x.getLockMode().name()); + print0(ucase ? " MODE " : " mode "); if (x.isNoWait()) { - print("NOWAIT"); + print0(ucase ? "NOWAIT" : "nowait"); } else if (x.getWait() != null) { - print("WAIT "); + print0(ucase ? "WAIT " : "wait "); x.getWait().accept(this); } return false; @@ -1726,7 +1726,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleAlterSessionStatement x) { - print("ALTER SESSION SET "); + print0(ucase ? "ALTER SESSION SET " : "alter session set "); printAndAccept(x.getItems(), ", "); return false; } @@ -1754,12 +1754,12 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (timeZone instanceof SQLIdentifierExpr) { if (((SQLIdentifierExpr) timeZone).getName().equalsIgnoreCase("LOCAL")) { - print(" AT LOCAL"); + print0(ucase ? " AT LOCAL" : "alter session set "); return false; } } - print(" AT TIME ZONE "); + print0(ucase ? " AT TIME ZONE " : " at time zone "); timeZone.accept(this); return false; @@ -1772,10 +1772,10 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleSysdateExpr x) { - print("SYSDATE"); + print0(ucase ? "SYSDATE" : "sysdate"); if (x.getOption() != null) { - print("@"); - print(x.getOption()); + print('@'); + print0(x.getOption()); } return false; } @@ -1792,7 +1792,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleExceptionStatement.Item x) { - print("WHEN "); + print0(ucase ? "WHEN " : "when "); x.getWhen().accept(this); incrementIndent(); @@ -1808,7 +1808,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleExceptionStatement x) { - print("EXCEPTION"); + print0(ucase ? "EXCEPTION" : "exception"); incrementIndent(); for (OracleExceptionStatement.Item item : x.getItems()) { println(); @@ -1825,8 +1825,8 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleArgumentExpr x) { - print(x.getArgumentName()); - print(" => "); + print0(x.getArgumentName()); + print0(" => "); x.getValue().accept(this); return false; } @@ -1839,9 +1839,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleSetTransactionStatement x) { if (x.isReadOnly()) { - print("SET TRANSACTION READ ONLY NAME "); + print0(ucase ? "SET TRANSACTION READ ONLY NAME " : "set transaction read only name "); } else { - print("SET TRANSACTION NAME "); + print0(ucase ? "SET TRANSACTION NAME " : "set transaction name "); } x.getName().accept(this); return false; @@ -1854,22 +1854,22 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleExplainStatement x) { - print("EXPLAIN PLAN"); + print0(ucase ? "EXPLAIN PLAN" : "explain plan"); incrementIndent(); println(); if (x.getStatementId() != null) { - print("SET STATEMENT_ID = "); + print0(ucase ? "SET STATEMENT_ID = " : "set statement_id = "); x.getStatementId().accept(this); println(); } if (x.getInto() != null) { - print("INTO "); + print0(ucase ? "INTO " : "into "); x.getInto().accept(this); println(); } - print("FRO"); + print0(ucase ? "FRO" : "fro"); println(); x.getStatement().accept(this); @@ -1884,13 +1884,13 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleAlterProcedureStatement x) { - print("ALTER PROCEDURE "); + print0(ucase ? "ALTER PROCEDURE " : "alter procedure "); x.getName().accept(this); if (x.isCompile()) { - print(" COMPILE"); + print0(ucase ? " COMPILE" : " compile"); } if (x.isReuseSettings()) { - print(" REUSE SETTINGS"); + print0(ucase ? " REUSE SETTINGS" : " reuse settings"); } return false; } @@ -1902,7 +1902,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleAlterTableDropPartition x) { - print("DROP PARTITION "); + print0(ucase ? "DROP PARTITION " : "drop partition "); x.getName().accept(this); return false; } @@ -1914,7 +1914,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleAlterTableStatement x) { - print("ALTER TABLE "); + print0(ucase ? "ALTER TABLE " : "alter table "); x.getName().accept(this); incrementIndent(); for (SQLAlterTableItem item : x.getItems()) { @@ -1923,7 +1923,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } if (x.isUpdateGlobalIndexes()) { println(); - print("UPDATE GLOABL INDEXES"); + print0(ucase ? "UPDATE GLOABL INDEXES" : "update gloabl indexes"); } decrementIndent(); return false; @@ -1936,7 +1936,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleAlterTableTruncatePartition x) { - print("TRUNCATE PARTITION "); + print0(ucase ? "TRUNCATE PARTITION " : "truncate partition "); x.getName().accept(this); return false; } @@ -1948,7 +1948,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(TableSpaceItem x) { - print("TABLESPACE "); + print0(ucase ? "TABLESPACE " : "tablespace "); x.getTablespace().accept(this); return false; } @@ -1960,11 +1960,11 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(UpdateIndexesClause x) { - print("UPDATE INDEXES"); + print0(ucase ? "UPDATE INDEXES" : "update indexes"); if (x.getItems().size() > 0) { - print("("); + print('('); printAndAccept(x.getItems(), ", "); - print(")"); + print(')'); } return false; } @@ -1976,24 +1976,24 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleAlterTableSplitPartition x) { - print("SPLIT PARTITION "); + print0(ucase ? "SPLIT PARTITION " : "split partition "); x.getName().accept(this); if (x.getAt().size() > 0) { incrementIndent(); println(); - print("AT ("); + print0(ucase ? "AT (" : "at ("); printAndAccept(x.getAt(), ", "); - print(")"); + print(')'); decrementIndent(); } if (x.getInto().size() > 0) { println(); incrementIndent(); - print("INTO ("); + print0(ucase ? "INTO (" : "into ("); printAndAccept(x.getInto(), ", "); - print(")"); + print(')'); decrementIndent(); } @@ -2013,10 +2013,10 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(NestedTablePartitionSpec x) { - print("PARTITION "); + print0(ucase ? "PARTITION " : "partition "); x.getPartition().accept(this); for (SQLObject item : x.getSegmentAttributeItems()) { - print(" "); + print(' '); item.accept(this); } return false; @@ -2029,19 +2029,19 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleAlterTableModify x) { - print("MODIFY ("); + print0(ucase ? "MODIFY (" : "modify ("); incrementIndent(); for (int i = 0, size = x.getColumns().size(); i < size; ++i) { println(); SQLColumnDefinition column = x.getColumns().get(i); column.accept(this); if (i != size - 1) { - print(", "); + print0(", "); } } decrementIndent(); println(); - print(")"); + print(')'); return false; } @@ -2053,63 +2053,63 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleCreateIndexStatement 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("("); + print('('); printAndAccept(x.getItems(), ", "); - print(")"); + print(')'); if (x.isIndexOnlyTopLevel()) { println(); - print("INDEX ONLY TOPLEVEL"); + print0(ucase ? "INDEX ONLY TOPLEVEL" : "index only toplevel"); } if (x.getPtcfree() != null) { println(); - print("PCTFREE "); + print0(ucase ? "PCTFREE " : "pctfree "); x.getPtcfree().accept(this); } if (x.getInitrans() != null) { println(); - print("INITRANS "); + print0(ucase ? "INITRANS " : "initrans "); x.getInitrans().accept(this); } if (x.getMaxtrans() != null) { println(); - print("MAXTRANS "); + print0(ucase ? "MAXTRANS " : "maxtrans "); x.getMaxtrans().accept(this); } if (x.isComputeStatistics()) { println(); - print("COMPUTE STATISTICS"); + print0(ucase ? "COMPUTE STATISTICS" : "compute statistics"); } if (x.getTablespace() != null) { println(); - print("TABLESPACE "); + print0(ucase ? "TABLESPACE " : "tablespace "); x.getTablespace().accept(this); } if (x.isOnline()) { - print(" ONLINE"); + print0(ucase ? " ONLINE" : " online"); } if (x.isNoParallel()) { - print(" NOPARALLEL"); + print0(ucase ? " NOPARALLEL" : " noparallel"); } else if (x.getParallel() != null) { - print(" PARALLEL "); + print0(ucase ? " PARALLEL " : " parallel "); x.getParallel().accept(this); } return false; @@ -2122,25 +2122,25 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleAlterIndexStatement x) { - print("ALTER INDEX "); + print0(ucase ? "ALTER INDEX " : "alter index "); x.getName().accept(this); if (x.getRenameTo() != null) { - print(" RENAME TO "); + print0(ucase ? " RENAME TO " : " rename to "); x.getRenameTo().accept(this); } if (x.getMonitoringUsage() != null) { - print(" MONITORING USAGE"); + print0(ucase ? " MONITORING USAGE" : " monitoring usage"); } if (x.getRebuild() != null) { - print(" "); + print(' '); x.getRebuild().accept(this); } if (x.getParallel() != null) { - print(" PARALLEL"); + print0(ucase ? " PARALLEL" : " parallel"); x.getParallel().accept(this); } @@ -2154,10 +2154,10 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(Rebuild x) { - print("REBUILD"); + print0(ucase ? "REBUILD" : "rebuild"); if (x.getOption() != null) { - print(" "); + print(' '); x.getOption().accept(this); } return false; @@ -2170,12 +2170,12 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleForStatement x) { - print("FOR "); + print0(ucase ? "FOR " : "for "); x.getIndex().accept(this); - print(" IN "); + print0(ucase ? " IN " : " in "); x.getRange().accept(this); println(); - print("LOOP"); + print0(ucase ? "LOOP" : "loop"); incrementIndent(); println(); @@ -2190,7 +2190,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS decrementIndent(); println(); - print("END LOOP"); + print0(ucase ? "END LOOP" : "end loop"); return false; } @@ -2201,7 +2201,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(Else x) { - print("ELSE"); + print0(ucase ? "ELSE" : "else"); incrementIndent(); println(); @@ -2213,7 +2213,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS item.setParent(x); item.accept(this); } - print(";"); + print(';'); decrementIndent(); return false; @@ -2221,9 +2221,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(ElseIf x) { - print("ELSE IF "); + print0(ucase ? "ELSE IF " : "else if "); x.getCondition().accept(this); - print(" THEN"); + print0(ucase ? " THEN" : " then"); incrementIndent(); println(); @@ -2235,7 +2235,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS item.setParent(x); item.accept(this); } - print(";"); + print(';'); decrementIndent(); return false; @@ -2253,9 +2253,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleIfStatement x) { - print("IF "); + print0(ucase ? "IF " : "if "); x.getCondition().accept(this); - print(" THEN"); + print0(ucase ? " THEN" : " then"); incrementIndent(); println(); for (int i = 0, size = x.getStatements().size(); i < size; ++i) { @@ -2266,7 +2266,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS println(); } } - print(";"); + print(';'); decrementIndent(); for (ElseIf elseIf : x.getElseIfList()) { @@ -2279,7 +2279,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS x.getElseItem().accept(this); } println(); - print("END IF"); + print0(ucase ? "END IF" : "end if"); return false; } @@ -2291,7 +2291,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleRangeExpr x) { x.getLowBound().accept(this); - print(".."); + print0(".."); x.getUpBound().accept(this); return false; } @@ -2303,16 +2303,16 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS protected void visitColumnDefault(SQLColumnDefinition x) { if (x.getParent() instanceof OracleBlockStatement) { - print(" := "); + print0(" := "); } else { - print(" DEFAULT "); + print0(ucase ? " DEFAULT " : " default "); } x.getDefaultExpr().accept(this); } @Override public boolean visit(OracleAlterTableAddConstaint x) { - print("ADD "); + print0(ucase ? "ADD " : "add "); x.getConstraint().accept(this); return false; } @@ -2325,13 +2325,13 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OraclePrimaryKey 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(')'); printConstraintState(x); @@ -2346,28 +2346,28 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (x.getExceptionsInto() != null) { println(); - print("EXCEPTIONS INTO "); + print0(ucase ? "EXCEPTIONS INTO " : "exceptions into "); x.getExceptionsInto().accept(this); } if (x.getEnable() != null) { if (x.getEnable().booleanValue()) { - print(" ENABLE"); + print0(ucase ? " ENABLE" : " enable"); } else { - print(" DIABLE"); + print0(ucase ? " DIABLE" : " diable"); } } if (x.getInitially() != null) { - print(" INITIALLY "); - print(x.getInitially().name()); + print0(ucase ? " INITIALLY " : " initially "); + print0(x.getInitially().name()); } if (x.getDeferrable() != null) { if (x.getDeferrable().booleanValue()) { - print(" DEFERRABLE"); + print0(ucase ? " DEFERRABLE" : " deferrable"); } else { - print(" NOT DEFERRABLE"); + print0(ucase ? " NOT DEFERRABLE" : " not deferrable"); } } } @@ -2383,72 +2383,72 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (x.isOrganizationIndex()) { println(); - print("ORGANIZATION INDEX"); + print0(ucase ? "ORGANIZATION INDEX" : "organization index"); } if (x.getPtcfree() != null) { println(); - print("PCTFREE "); + print0(ucase ? "PCTFREE " : "pctfree "); x.getPtcfree().accept(this); } if (x.getInitrans() != null) { println(); - print("INITRANS "); + print0(ucase ? "INITRANS " : "initrans "); x.getInitrans().accept(this); } if (x.getMaxtrans() != null) { println(); - print("MAXTRANS "); + print0(ucase ? "MAXTRANS " : "maxtrans "); x.getMaxtrans().accept(this); } if (x.isInMemoryMetadata()) { println(); - print("IN_MEMORY_METADATA"); + print0(ucase ? "IN_MEMORY_METADATA" : "in_memory_metadata"); } if (x.isCursorSpecificSegment()) { println(); - print("CURSOR_SPECIFIC_SEGMENT"); + print0(ucase ? "CURSOR_SPECIFIC_SEGMENT" : "cursor_specific_segment"); } if (x.getParallel() == Boolean.TRUE) { println(); - print("PARALLEL"); + print0(ucase ? "PARALLEL" : "parallel"); } else if (x.getParallel() == Boolean.FALSE) { println(); - print("NOPARALLEL"); + print0(ucase ? "NOPARALLEL" : "noparallel"); } if (x.getCache() == Boolean.TRUE) { println(); - print("CACHE"); + print0(ucase ? "CACHE" : "cache"); } else if (x.getCache() == Boolean.FALSE) { println(); - print("NOCACHE"); + print0(ucase ? "NOCACHE" : "nocache"); } if (x.getCompress() == Boolean.TRUE) { println(); - print("COMPRESS"); + print0(ucase ? "COMPRESS" : "compress"); } else if (x.getCompress() == Boolean.FALSE) { println(); - print("NOCOMPRESS"); + print0(ucase ? "NOCOMPRESS" : "nocompress"); } if (x.getLogging() == Boolean.TRUE) { println(); - print("LOGGING"); + print0(ucase ? "LOGGING" : "logging"); } else if (x.getLogging() == Boolean.FALSE) { println(); - print("NOLOGGING"); + print0(ucase ? "NOLOGGING" : "nologging"); } if (x.getTablespace() != null) { println(); - print("TABLESPACE "); + print0(ucase ? "TABLESPACE " : "tablespace "); x.getTablespace().accept(this); } @@ -2464,12 +2464,12 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (x.isOnCommit()) { println(); - print("ON COMMIT"); + print0(ucase ? "ON COMMIT" : "on commit"); } if (x.isPreserveRows()) { println(); - print("PRESERVE ROWS"); + print0(ucase ? "PRESERVE ROWS" : "preserve rows"); } if (x.getPartitioning() != null) { @@ -2479,7 +2479,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (x.getSelect() != null) { println(); - print("AS"); + print0(ucase ? "AS" : "as"); println(); x.getSelect().accept(this); } @@ -2493,14 +2493,14 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleStorageClause x) { - print("STORAGE ("); + print0(ucase ? "STORAGE (" : "storage ("); boolean first = true; if (x.getInitial() != null) { if (!first) { print(' '); } - print("INITIAL "); + print0(ucase ? "INITIAL " : "initial "); x.getInitial().accept(this); first = false; } @@ -2509,7 +2509,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (!first) { print(' '); } - print("MAXSIZE "); + print0(ucase ? "MAXSIZE " : "maxsize "); x.getMaxSize().accept(this); first = false; } @@ -2518,7 +2518,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (!first) { print(' '); } - print("FREELISTS "); + print0(ucase ? "FREELISTS " : "freelists "); x.getFreeLists().accept(this); first = false; } @@ -2528,7 +2528,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS print(' '); } - print("FREELIST GROUPS "); + print0(ucase ? "FREELIST GROUPS " : "freelist groups "); x.getFreeListGroups().accept(this); first = false; } @@ -2537,7 +2537,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (!first) { print(' '); } - print("BUFFER_POOL "); + print0(ucase ? "BUFFER_POOL " : "buffer_pool "); x.getBufferPool().accept(this); first = false; } @@ -2546,12 +2546,12 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (!first) { print(' '); } - print("OBJNO "); + print0(ucase ? "OBJNO " : "objno "); x.getObjno().accept(this); first = false; } - print(")"); + print(')'); return false; } @@ -2562,7 +2562,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleGotoStatement x) { - print("GOTO "); + print0(ucase ? "GOTO " : "GOTO "); x.getLabel().accept(this); return false; } @@ -2574,9 +2574,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleLabelStatement x) { - print("<<"); + print0("<<"); x.getLabel().accept(this); - print(">>"); + print0(">>"); return false; } @@ -2588,9 +2588,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleParameter 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(); @@ -2599,12 +2599,12 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } else { x.getName().accept(this); - print(" "); + print(' '); x.getDataType().accept(this); if (x.getDefaultValue() != null) { - print(" := "); + print0(" := "); x.getDefaultValue().accept(this); } } @@ -2619,23 +2619,23 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleCommitStatement x) { - print("COMMIT"); + print0(ucase ? "COMMIT" : "commit"); if (x.isWrite()) { - print(" WRITE"); + print0(ucase ? " WRITE" : " write"); if (x.getWait() != null) { if (x.getWait().booleanValue()) { - print(" WAIT"); + print0(ucase ? " WAIT" : " wait"); } else { - print(" NOWAIT"); + print0(ucase ? " NOWAIT" : " nowait"); } } if (x.getImmediate() != null) { if (x.getImmediate().booleanValue()) { - print(" IMMEDIATE"); + print0(ucase ? " IMMEDIATE" : " immediate"); } else { - print(" BATCH"); + print0(ucase ? " BATCH" : " batch"); } } } @@ -2650,18 +2650,18 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleAlterTriggerStatement x) { - print("ALTER TRIGGER "); + print0(ucase ? "ALTER TRIGGER " : "alter trigger "); x.getName().accept(this); if (x.isCompile()) { - print(" COMPILE"); + print0(ucase ? " COMPILE" : " compile"); } if (x.getEnable() != null) { if (x.getEnable().booleanValue()) { - print("ENABLE"); + print0(ucase ? "ENABLE" : "enable"); } else { - print("DISABLE"); + print0(ucase ? "DISABLE" : "disable"); } } return false; @@ -2674,18 +2674,18 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleAlterSynonymStatement x) { - print("ALTER SYNONYM "); + print0(ucase ? "ALTER SYNONYM " : "alter synonym "); x.getName().accept(this); if (x.isCompile()) { - print(" COMPILE"); + print0(ucase ? " COMPILE" : " compile"); } if (x.getEnable() != null) { if (x.getEnable().booleanValue()) { - print("ENABLE"); + print0(ucase ? "ENABLE" : "enable"); } else { - print("DISABLE"); + print0(ucase ? "DISABLE" : "disable"); } } return false; @@ -2698,9 +2698,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(AsOfSnapshotClause x) { - print("AS OF SNAPSHOT("); + print0(ucase ? "AS OF SNAPSHOT(" : "as of snapshot("); x.getExpr().accept(this); - print(")"); + print(')'); return false; } @@ -2711,18 +2711,18 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleAlterViewStatement x) { - print("ALTER VIEW "); + print0(ucase ? "ALTER VIEW " : "alter view "); x.getName().accept(this); if (x.isCompile()) { - print(" COMPILE"); + print0(ucase ? " COMPILE" : " compile"); } if (x.getEnable() != null) { if (x.getEnable().booleanValue()) { - print("ENABLE"); + print0(ucase ? "ENABLE" : "enable"); } else { - print("DISABLE"); + print0(ucase ? "DISABLE" : "disable"); } } return false; @@ -2735,7 +2735,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleAlterTableMoveTablespace x) { - print(" MOVE TABLESPACE "); + print0(ucase ? " MOVE TABLESPACE " : " move tablespace "); x.getName().accept(this); return false; } @@ -2748,7 +2748,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleSizeExpr x) { x.getValue().accept(this); - print(x.getUnit().name()); + print0(x.getUnit().name()); return false; } @@ -2762,14 +2762,14 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS printAndAccept(x.getFileNames(), ", "); if (x.getSize() != null) { - print(" SIZE "); + print0(ucase ? " SIZE " : " size "); x.getSize().accept(this); } if (x.isAutoExtendOff()) { - print(" AUTOEXTEND OFF"); + print0(ucase ? " AUTOEXTEND OFF" : " autoextend off"); } else if (x.getAutoExtendOn() != null) { - print(" AUTOEXTEND ON "); + print0(ucase ? " AUTOEXTEND ON " : " autoextend on "); x.getAutoExtendOn().accept(this); } return false; @@ -2782,7 +2782,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleAlterTablespaceAddDataFile x) { - print("ADD DATAFILE"); + print0(ucase ? "ADD DATAFILE" : "add datafile"); incrementIndent(); for (OracleFileSpecification file : x.getFiles()) { println(); @@ -2799,7 +2799,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleAlterTablespaceStatement x) { - print("ALTER TABLESPACE "); + print0(ucase ? "ALTER TABLESPACE " : "alter tablespace "); x.getName().accept(this); println(); x.getItem().accept(this); @@ -2813,61 +2813,61 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(SQLTruncateStatement x) { - print("TRUNCATE TABLE "); + print0(ucase ? "TRUNCATE TABLE " : "truncate table "); printAndAccept(x.getTableSources(), ", "); if (x.isPurgeSnapshotLog()) { - print(" PURGE SNAPSHOT LOG"); + print0(ucase ? " PURGE SNAPSHOT LOG" : " purge snapshot log"); } return false; } @Override public boolean visit(OracleCreateSequenceStatement x) { - print("CREATE SEQUENCE "); + print0(ucase ? "CREATE SEQUENCE " : "create sequence "); x.getName().accept(this); if (x.getStartWith() != null) { - print(" START WITH "); + print0(ucase ? " START WITH " : " start with "); x.getStartWith().accept(this); } if (x.getIncrementBy() != null) { - print(" INCREMENT BY "); + print0(ucase ? " INCREMENT BY " : " increment by "); x.getIncrementBy().accept(this); } if (x.getMaxValue() != null) { - print(" MAXVALUE "); + print0(ucase ? " MAXVALUE " : " maxvalue "); x.getMaxValue().accept(this); } if (x.isNoMaxValue()) { - print(" NOMAXVALUE"); + print0(ucase ? " NOMAXVALUE" : " nomaxvalue"); } if (x.getMinValue() != null) { - print(" MINVALUE "); + print0(ucase ? " MINVALUE " : " minvalue "); x.getMinValue().accept(this); } if (x.isNoMinValue()) { - print(" NOMINVALUE"); + print0(ucase ? " NOMINVALUE" : " nominvalue"); } if (x.getCycle() != null) { if (x.getCycle().booleanValue()) { - print(" CYCLE"); + print0(ucase ? " CYCLE" : " cycle"); } else { - print(" NOCYCLE"); + print0(ucase ? " NOCYCLE" : " nocycle"); } } if (x.getCache() != null) { if (x.getCache().booleanValue()) { - print(" CACHE"); + print0(ucase ? " CACHE" : " cache"); } else { - print(" NOCACHE"); + print0(ucase ? " NOCACHE" : " nocache"); } } @@ -2881,11 +2881,11 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleRangeValuesClause x) { - print("PARTITION "); + print0(ucase ? "PARTITION " : "partition "); x.getName().accept(this); - print(" VALUES LESS THAN ("); + print0(ucase ? " VALUES LESS THAN (" : " values less than ("); printAndAccept(x.getValues(), ", "); - print(")"); + print(')'); return false; } @@ -2896,34 +2896,34 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OraclePartitionByRangeClause x) { - print("PARTITION BY RANGE ("); + print0(ucase ? "PARTITION BY RANGE (" : "partition by range ("); printAndAccept(x.getColumns(), ", "); - print(")"); + print(')'); if (x.getInterval() != null) { - print(" INTERVAL "); + print0(ucase ? " INTERVAL " : " interval "); x.getInterval().accept(this); } if (x.getStoreIn().size() > 0) { - print(" STORE IN ("); + print0(ucase ? " STORE IN (" : " store in ("); printAndAccept(x.getStoreIn(), ", "); - print(")"); + print(')'); } println(); - print("("); + print('('); incrementIndent(); for (int i = 0, size = x.getRanges().size(); i < size; ++i) { if (i != 0) { - print(","); + print(','); } println(); x.getRanges().get(i).accept(this); } decrementIndent(); println(); - print(")"); + print(')'); return false; } @@ -2934,7 +2934,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleLoopStatement x) { - print("LOOP"); + print0(ucase ? "LOOP" : "loop"); incrementIndent(); println(); @@ -2949,7 +2949,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS decrementIndent(); println(); - print("END LOOP"); + print0(ucase ? "END LOOP" : "end loop"); return false; } @@ -2960,9 +2960,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleExitStatement x) { - print("EXIT"); + print0(ucase ? "EXIT" : "exit"); if (x.getWhen() != null) { - print(" WHEN "); + print0(ucase ? " WHEN " : " when "); x.getWhen().accept(this); } return false; @@ -2980,9 +2980,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleSavePointStatement x) { - print("ROLLBACK"); + print0(ucase ? "ROLLBACK" : "rollback"); if (x.getTo() != null) { - print(" TO "); + print0(ucase ? " TO " : " to "); x.getTo().accept(this); } return false; @@ -2996,22 +2996,22 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleCreateProcedureStatement 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(); } OracleParameter param = x.getParameters().get(i); @@ -3020,7 +3020,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS decrementIndent(); println(); - print(")"); + print(')'); } println(); @@ -3036,40 +3036,40 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleCreateDatabaseDbLinkStatement x) { - print("CREATE "); + print0(ucase ? "CREATE " : "create "); if (x.isShared()) { - print("SHARE "); + print0(ucase ? "SHARE " : "share "); } if (x.isPublic()) { - print("PUBLIC "); + print0(ucase ? "PUBLIC " : "public "); } - print("DATABASE LINK "); + print0(ucase ? "DATABASE LINK " : "database link "); x.getName().accept(this); if (x.getUser() != null) { - print(" CONNECT TO "); + print0(ucase ? " CONNECT TO " : " connect to "); x.getUser().accept(this); if (x.getPassword() != null) { - print(" IDENTIFIED BY "); - print(x.getPassword()); + print0(ucase ? " IDENTIFIED BY " : " identified by "); + print0(x.getPassword()); } } if (x.getAuthenticatedUser() != null) { - print(" AUTHENTICATED BY "); + print0(ucase ? " AUTHENTICATED BY " : " authenticated by "); x.getAuthenticatedUser().accept(this); if (x.getAuthenticatedPassword() != null) { - print(" IDENTIFIED BY "); - print(x.getAuthenticatedPassword()); + print0(ucase ? " IDENTIFIED BY " : " identified by "); + print0(x.getAuthenticatedPassword()); } } if (x.getUsing() != null) { - print(" USING "); + print0(ucase ? " USING " : " using "); x.getUsing().accept(this); } @@ -3083,11 +3083,11 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleDropDbLinkStatement x) { - print("DROP "); + print0(ucase ? "DROP " : "drop "); if (x.isPublic()) { - print("PUBLIC "); + print0(ucase ? "PUBLIC " : "public "); } - print("DATABASE LINK "); + print0(ucase ? "DATABASE LINK " : "database link "); x.getName().accept(this); return false; @@ -3099,32 +3099,32 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS } public boolean visit(SQLCharacterDataType x) { - print(x.getName()); + print0(x.getName()); if (x.getArguments().size() > 0) { - print("("); + print('('); x.getArguments().get(0).accept(this); if (x.getCharType() != null) { print(' '); - print(x.getCharType()); + print0(x.getCharType()); } - print(")"); + print(')'); } return false; } @Override public boolean visit(OracleDataTypeTimestamp x) { - print(x.getName()); + print0(x.getName()); if (x.getArguments().size() > 0) { - print("("); + print('('); x.getArguments().get(0).accept(this); - print(")"); + print(')'); } if (x.isWithTimeZone()) { - print(" WITH TIME ZONE"); + print0(ucase ? " WITH TIME ZONE" : " with time zone"); } else if (x.isWithLocalTimeZone()) { - print(" WITH LOCAL TIME ZONE"); + print0(ucase ? " WITH LOCAL TIME ZONE" : " with local time zone"); } return false; @@ -3137,14 +3137,14 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleDataTypeIntervalYear x) { - print(x.getName()); + print0(x.getName()); if (x.getArguments().size() > 0) { - print("("); + print('('); x.getArguments().get(0).accept(this); - print(")"); + print(')'); } - print(" TO MONTH"); + print0(ucase ? " TO MONTH" : " to month"); return false; } @@ -3156,19 +3156,19 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleDataTypeIntervalDay x) { - print(x.getName()); + print0(x.getName()); if (x.getArguments().size() > 0) { - print("("); + print('('); x.getArguments().get(0).accept(this); - print(")"); + print(')'); } - print(" TO SECOND"); + print0(ucase ? " TO SECOND" : " to second"); if (x.getFractionalSeconds().size() > 0) { - print("("); + print('('); x.getFractionalSeconds().get(0).accept(this); - print(")"); + print(')'); } return false; @@ -3181,40 +3181,40 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleUsingIndexClause x) { - print("USING INDEX"); + print0(ucase ? "USING INDEX" : "using index"); if (x.getIndex() != null) { print(' '); x.getIndex().accept(this); } else { if (x.getPtcfree() != null) { - print(" PCTFREE "); + print0(ucase ? " PCTFREE " : " pctfree "); x.getPtcfree().accept(this); } if (x.getInitrans() != null) { - print(" INITRANS "); + print0(ucase ? " INITRANS " : " initrans "); x.getInitrans().accept(this); } if (x.getMaxtrans() != null) { - print(" MAXTRANS "); + print0(ucase ? " MAXTRANS " : " maxtrans "); x.getMaxtrans().accept(this); } if (x.isComputeStatistics()) { - print(" COMPUTE STATISTICS"); + print0(ucase ? " COMPUTE STATISTICS" : " compute statistics"); } if (x.getTablespace() != null) { - print(" TABLESPACE "); + print0(ucase ? " TABLESPACE " : " tablespace "); x.getTablespace().accept(this); } if (x.getEnable() != null) { if (x.getEnable().booleanValue()) { - print(" ENABLE"); + print0(ucase ? " ENABLE" : " enable"); } else { - print(" DISABLE"); + print0(ucase ? " DISABLE" : " disable"); } } @@ -3234,16 +3234,16 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override public boolean visit(OracleLobStorageClause x) { - print("LOB ("); + print0(ucase ? "LOB (" : "lob ("); printAndAccept(x.getItems(), ","); - print(") STORE AS "); + print0(ucase ? ") STORE AS " : ") store as "); if (x.isSecureFile()) { - print("SECUREFILE "); + print0(ucase ? "SECUREFILE " : "securefile "); } if (x.isBasicFile()) { - print("BASICFILE "); + print0(ucase ? "BASICFILE " : "basicfile "); } boolean first = true; @@ -3252,7 +3252,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (!first) { print(' '); } - print("TABLESPACE "); + print0(ucase ? "TABLESPACE " : "tablespace "); x.getTableSpace().accept(this); first = false; } @@ -3262,9 +3262,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS print(' '); } if (x.getEnable().booleanValue()) { - print("ENABLE STORAGE IN ROW"); + print0(ucase ? "ENABLE STORAGE IN ROW" : "enable storage in row"); } else { - print("DISABLE STORAGE IN ROW"); + print0(ucase ? "DISABLE STORAGE IN ROW" : "disable storage in row"); } } @@ -3272,7 +3272,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (!first) { print(' '); } - print("CHUNK "); + print0(ucase ? "CHUNK " : "chunk "); x.getChunk().accept(this); } @@ -3281,16 +3281,16 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS print(' '); } if (x.getCache().booleanValue()) { - print("CACHE"); + print0(ucase ? "CACHE" : "cache"); } else { - print("NOCACHE"); + print0(ucase ? "NOCACHE" : "nocache"); } if (x.getLogging() != null) { if (x.getLogging().booleanValue()) { - print(" LOGGING"); + print0(ucase ? " LOGGING" : " logging"); } else { - print(" NOLOGGING"); + print0(ucase ? " NOLOGGING" : " nologging"); } } } @@ -3300,9 +3300,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS print(' '); } if (x.getCompress().booleanValue()) { - print("COMPRESS"); + print0(ucase ? "COMPRESS" : "compress"); } else { - print("NOCOMPRESS"); + print0(ucase ? "NOCOMPRESS" : "nocompress"); } } @@ -3311,9 +3311,9 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS print(' '); } if (x.getKeepDuplicate().booleanValue()) { - print("KEEP_DUPLICATES"); + print0(ucase ? "KEEP_DUPLICATES" : "keep_duplicates"); } else { - print("DEDUPLICATE"); + print0(ucase ? "DEDUPLICATE" : "deduplicate"); } } @@ -3367,7 +3367,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS @Override protected void printCascade() { - print(" CASCADE CONSTRAINTS"); + print0(ucase ? " CASCADE CONSTRAINTS" : " cascade constraints"); } @Override @@ -3375,19 +3375,19 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if ("trim".equalsIgnoreCase(x.getMethodName())) { SQLExpr trim_character = (SQLExpr) x.getAttribute("trim_character"); if (trim_character != null) { - print(x.getMethodName()); - print("("); + print0(x.getMethodName()); + print('('); String trim_option = (String) x.getAttribute("trim_option"); if (trim_option != null && trim_option.length() != 0) { - print(trim_option); + print0(trim_option); print(' '); } trim_character.accept(this); if (x.getParameters().size() > 0) { - print(" FROM "); + print0(ucase ? " FROM " : " from "); x.getParameters().get(0).accept(this); } - print(")"); + print(')'); return false; } } @@ -3397,7 +3397,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS public boolean visit(SQLCharExpr x) { if (x.getText() != null && x.getText().length() == 0) { - print("NULL"); + print0(ucase ? "NULL" : "null"); } else { super.visit(x); } 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 15f67a8b11..b908e7701a 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 @@ -136,9 +136,9 @@ public class OracleToMySqlOutputVisitor extends OracleOutputVisitor { if (limit != null) { subSelect.accept(this); println(); - print("LIMIT "); + print0(ucase ? "LIMIT " : "limit "); print(offset); - print(", "); + print0(", "); 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 9ef1b812e8..92a589cbe9 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 @@ -192,7 +192,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor if (x.getInto() != null) { println(); if (x.getIntoOption() != null) { - print(x.getIntoOption().name()); + print0(x.getIntoOption().name()); print(' '); } @@ -296,7 +296,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor if (x.getAlias() != null) { print0(ucase ? " AS " : " as "); - print(x.getAlias()); + print0(x.getAlias()); } if (x.getUsing().size() > 0) { @@ -469,7 +469,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor if (x.getAlias() != null) { print0(ucase ? " AS " : " as "); - print(x.getAlias()); + print0(x.getAlias()); } if (x.getParameters().size() > 0) { @@ -535,7 +535,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(PGExtractExpr x) { print0(ucase ? "EXTRACT (" : "extract ("); - print(x.getField().name()); + print0(x.getField().name()); print0(ucase ? " FROM " : " from "); x.getSource().accept(this); print(')'); @@ -653,7 +653,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor @Override public boolean visit(SQLBinaryExpr x) { print0(ucase ? "B'" : "b'"); - print(x.getValue()); + print0(x.getValue()); print('\''); return false; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java index c2c94ac19c..0d39066cd6 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java @@ -53,14 +53,14 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe } public boolean visit(SQLServerSelectQueryBlock x) { - 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 "); } if (x.getTop() != null) { @@ -72,19 +72,19 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe 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); } @@ -104,23 +104,23 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(SQLServerTop x) { - print("TOP "); + print0(ucase ? "TOP " : "top "); boolean paren = false; if (x.getParent() instanceof SQLServerUpdateStatement || x.getParent() instanceof SQLServerInsertStatement) { paren = true; - print("("); + print('('); } x.getExpr().accept(this); if (paren) { - print(")"); + print(')'); } if (x.isPercent()) { - print(" PERCENT"); + print0(ucase ? " PERCENT" : " percent"); } return false; @@ -133,7 +133,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(SQLServerObjectReferenceExpr x) { - print(x.toString()); + print0(x.toString()); return false; } @@ -144,7 +144,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(SQLServerInsertStatement x) { - print("INSERT "); + print0(ucase ? "INSERT " : "insert "); if (x.getTop() != null) { x.getTop().setParent(x); @@ -152,25 +152,25 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe print(' '); } - print("INTO "); + print0(ucase ? "INTO " : "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(); } @@ -182,11 +182,11 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe if (x.getValuesList().size() != 0) { println(); - print("VALUES"); + print0(ucase ? "VALUES" : "values"); println(); for (int i = 0, size = x.getValuesList().size(); i < size; ++i) { if (i != 0) { - print(","); + print(','); println(); } x.getValuesList().get(i).accept(this); @@ -199,7 +199,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe } if (x.isDefaultValues()) { - print(" DEFAULT VALUES"); + print0(ucase ? " DEFAULT VALUES" : " default values"); } return false; } @@ -211,7 +211,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(SQLServerUpdateStatement x) { - print("UPDATE "); + print0(ucase ? "UPDATE " : "update "); if (x.getTop() != null) { x.getTop().setParent(x); @@ -222,10 +222,10 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe 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); } @@ -238,14 +238,14 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe if (x.getFrom() != null) { println(); - print("FROM "); + print0(ucase ? "FROM " : "from "); x.getFrom().setParent(x); x.getFrom().accept(this); } if (x.getWhere() != null) { println(); - print("WHERE "); + print0(ucase ? "WHERE " : "where "); incrementIndent(); x.getWhere().setParent(x); x.getWhere().accept(this); @@ -264,14 +264,14 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe x.getExpr().accept(this); if (x.getHints() != null && x.getHints().size() > 0) { - print(" WITH ("); + print0(ucase ? " WITH (" : " with ("); printAndAccept(x.getHints(), ", "); - print(")"); + print(')'); } if (x.getAlias() != null) { print(' '); - print(x.getAlias()); + print0(x.getAlias()); } return false; @@ -279,11 +279,11 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(Identity x) { - print("IDENTITY ("); + print0(ucase ? "IDENTITY (" : "identity ("); print(x.getSeed()); - print(", "); + print0(", "); print(x.getIncrement()); - print(")"); + print(')'); return false; } @@ -317,7 +317,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe if (x.getEnable() != null) { if (x.getEnable().booleanValue()) { - print(" ENABLE"); + print0(ucase ? " ENABLE" : " enable"); } } @@ -338,12 +338,12 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(SQLServerExecStatement x) { - print("EXEC "); + print0(ucase ? "EXEC " : "exec "); SQLName returnStatus = x.getReturnStatus(); if (returnStatus != null) { returnStatus.accept(this); - print(" = "); + print0(" = "); } SQLName moduleName = x.getModuleName(); @@ -351,7 +351,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe moduleName.accept(this); print(' '); } else { - print(" ("); + print0(" ("); } printAndAccept(x.getParameters(), ", "); @@ -368,8 +368,8 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(SQLServerSetTransactionIsolationLevelStatement x) { - print("SET TRANSACTION ISOLATION LEVEL "); - print(x.getLevel()); + print0(ucase ? "SET TRANSACTION ISOLATION LEVEL " : "set transaction isolation level "); + print0(x.getLevel()); return false; } @@ -380,10 +380,10 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(SQLServerSetStatement x) { - print("SET "); + print0(ucase ? "SET " : "set "); SQLAssignItem item = x.getItem(); item.getTarget().accept(this); - print(" "); + print(' '); item.getValue().accept(this); return false; } @@ -395,30 +395,30 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(SQLServerOutput x) { - print("OUTPUT "); + print0(ucase ? "OUTPUT " : "output "); printSelectList(x.getSelectList()); if (x.getInto() != null) { incrementIndent(); println(); - print("INTO "); + print0(ucase ? "INTO " : "into "); x.getInto().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(); } } @@ -436,31 +436,31 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe x.getName().accept(this); if(x.getType() == SQLServerDeclareItem.Type.TABLE) { - print(" TABLE"); + print0(ucase ? " TABLE" : " table"); 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(')'); } } else if (x.getType() == SQLServerDeclareItem.Type.CURSOR) { - print(" CURSOR"); + print0(ucase ? " CURSOR" : " cursor"); } else { - print(" "); + print(' '); x.getDataType().accept(this); if (x.getValue() != null) { - print(" = "); + print0(" = "); x.getValue().accept(this); } } @@ -475,7 +475,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(SQLServerDeclareStatement x) { - print("DECLARE "); + print0(ucase ? "DECLARE " : "declare "); this.printAndAccept(x.getItems(), ", "); return false; } @@ -487,7 +487,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(Else x) { - print("ELSE"); + print0(ucase ? "ELSE" : "else"); incrementIndent(); println(); @@ -511,7 +511,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(SQLServerIfStatement x) { - print("IF "); + print0(ucase ? "IF " : "if "); x.getCondition().accept(this); incrementIndent(); println(); @@ -539,7 +539,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(SQLServerBlockStatement x) { - print("BEGIN"); + print0(ucase ? "BEGIN" : "begin"); incrementIndent(); println(); for (int i = 0, size = x.getStatementList().size(); i < size; ++i) { @@ -549,11 +549,11 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe SQLStatement stmt = x.getStatementList().get(i); stmt.setParent(x); stmt.accept(this); - print(";"); + print(';'); } decrementIndent(); println(); - print("END"); + print0(ucase ? "END" : "end"); return false; } @@ -565,11 +565,11 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override protected void printGrantOn(SQLGrantStatement x) { if (x.getOn() != null) { - print(" ON "); + print0(ucase ? " ON " : " on "); if (x.getObjectType() != null) { - print(x.getObjectType().name()); - print("::"); + print0(x.getObjectType().name()); + print0("::"); } x.getOn().accept(this); @@ -586,30 +586,30 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe super.visit(x); if (x.isForBrowse()) { println(); - print("FOR BROWSE"); + print0(ucase ? "FOR BROWSE" : "for browse"); } if (x.getForXmlOptions().size() > 0) { println(); - print("FOR XML "); + print0(ucase ? "FOR XML " : "for xml "); for (int i = 0; i < x.getForXmlOptions().size(); ++i) { if (i != 0) { - print(", "); - print(x.getForXmlOptions().get(i)); + print0(", "); + print0(x.getForXmlOptions().get(i)); } } } if (x.getOffset() != null) { println(); - print("OFFSET "); + print0(ucase ? "OFFSET " : "offset "); x.getOffset().accept(this); - print(" ROWS"); + print0(ucase ? " ROWS" : " rows"); if (x.getRowCount() != null) { - print(" FETCH NEXT "); + print0(ucase ? " FETCH NEXT " : " fetch next "); x.getRowCount().accept(this); - print(" ROWS ONLY"); + print0(ucase ? " ROWS ONLY" : " rows only"); } } return false; @@ -617,20 +617,20 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(SQLServerCommitStatement x) { - print("COMMIT"); + print0(ucase ? "COMMIT" : "commit"); if (x.isWork()) { - print(" WORK"); + print0(ucase ? " WORK" : " work"); } else { - print(" TRANSACTION"); + print0(ucase ? " TRANSACTION" : " transaction"); if (x.getTransactionName() != null) { - print(" "); + print(' '); x.getTransactionName().accept(this); } if (x.getDelayedDurability() != null) { - print(" WITH ( DELAYED_DURABILITY = "); + print0(ucase ? " WITH ( DELAYED_DURABILITY = " : " with ( delayed_durability = "); x.getDelayedDurability().accept(this); - print(" )"); + print0(" )"); } } @@ -644,14 +644,14 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(SQLServerRollbackStatement x) { - print("ROLLBACK"); + print0(ucase ? "ROLLBACK" : "rollback"); if (x.isWork()) { - print(" WORK"); + print0(ucase ? " WORK" : " work"); } else { - print(" TRANSACTION"); + print0(ucase ? " TRANSACTION" : " transaction"); if (x.getName() != null) { - print(" "); + print(' '); x.getName().accept(this); } } @@ -666,21 +666,21 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe @Override public boolean visit(SQLServerWaitForStatement x) { - print("WAITFOR"); + print0(ucase ? "WAITFOR" : "waitfor"); if (x.getDelay() != null) { - print(" DELAY "); + print0(ucase ? " DELAY " : " delay "); x.getDelay().accept(this); } else if (x.getTime() != null) { - print(" TIME "); + print0(ucase ? " TIME " : " time "); x.getTime().accept(this); } if (x.getStatement() != null) { - print(" DELAY "); + print0(ucase ? " DELAY " : " delay "); x.getStatement().accept(this); } if(x.getTimeout() != null) { - print(" ,TIMEOUT "); + print0(ucase ? " ,TIMEOUT " : " ,timeout "); x.getTimeout().accept(this); } @@ -698,7 +698,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe x.getExpr().accept(this); if(x.getType()) { - print(" OUT"); + print0(ucase ? " OUT" : " out"); } return false; } diff --git a/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java b/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java index ea1fcab086..3651788ff4 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java @@ -116,9 +116,9 @@ public class ParameterizedOutputVisitorUtils { x.getExpr().accept(v); if (x.isNot()) { - v.print(" NOT IN (?)"); + v.print(v.isUppCase() ? " NOT IN (?)" : " not in (?)"); } else { - v.print(" IN (?)"); + v.print(v.isUppCase() ? " IN (?)" : " in (?)"); } if (changed) { diff --git a/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedVisitor.java index 1c909b36c7..16db80a22f 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedVisitor.java @@ -1,5 +1,5 @@ /* - * Copyright 1999-2101 Alibaba Group Holding Ltd. + * Copyright 1999-2011 Alibaba Group Holding Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/com/alibaba/druid/sql/visitor/PrintableVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/PrintableVisitor.java index b68cc859a8..089a6c18bb 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/PrintableVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/PrintableVisitor.java @@ -16,6 +16,7 @@ package com.alibaba.druid.sql.visitor; public interface PrintableVisitor extends SQLASTVisitor { + boolean isUppCase(); void print(char value); 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 850faa5bc3..a9f2c50847 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java @@ -520,7 +520,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } public boolean visit(SQLDataType x) { - print(x.getName()); + print0(x.getName()); if (x.getArguments().size() > 0) { print('('); printAndAccept(x.getArguments(), ", "); @@ -549,7 +549,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } public boolean visit(SQLIdentifierExpr x) { - print(x.getName()); + print0(x.getName()); return false; } @@ -612,15 +612,15 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } protected void printFunctionName(String name) { - print(name); + print0(name); } public boolean visit(SQLAggregateExpr x) { - print(x.getMethodName()); + print0(ucase ? x.getMethodName() : x.getMethodName().toLowerCase()); print('('); if (x.getOption() != null) { - print(x.getOption().toString()); + print0(x.getOption().toString()); print(' '); } @@ -657,7 +657,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab print0(ucase ? "NULL" : "null"); } else { print0(ucase ? "N'" : "n'"); - print(x.getText().replace("'", "''")); + print0(x.getText().replace("'", "''")); print('\''); } return false; @@ -816,10 +816,10 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab if (alias != null && alias.length() > 0) { print0(ucase ? " AS " : " as "); if (alias.indexOf(' ') == -1 || alias.charAt(0) == '"' || alias.charAt(0) == '\'') { - print(alias); + print0(alias); } else { print('"'); - print(alias); + print0(alias); print('"'); } } @@ -839,12 +839,12 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab x.getExpr().accept(this); if (x.getType() != null) { print(' '); - print(x.getType().name().toUpperCase()); + print0(x.getType().name().toUpperCase()); } if (x.getCollate() != null) { print0(ucase ? " COLLATE " : " collate "); - print(x.getCollate()); + print0(x.getCollate()); } return false; @@ -855,7 +855,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab if (x.getAlias() != null) { print(' '); - print(x.getAlias()); + print0(x.getAlias()); } if (isPrettyFormat() && x.hasAfterComment()) { @@ -878,7 +878,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab int index = x.getIndex(); if (parameters == null || index >= parameters.size()) { - print(x.getName()); + print0(x.getName()); return false; } @@ -895,7 +895,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab if (param instanceof Number // || param instanceof Boolean) { - print(param.toString()); + print0(param.toString()); return; } @@ -1207,7 +1207,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLUnionQuery x) { x.getLeft().accept(this); println(); - print(x.getOperator().name); + print0(x.getOperator().name); println(); boolean needParen = false; @@ -1234,7 +1234,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLUnaryExpr x) { - print(x.getOperator().name); + print0(x.getOperator().name); SQLExpr expr = x.getExpr(); @@ -1266,7 +1266,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLHexExpr x) { print0("0x"); - print(x.getHex()); + print0(x.getHex()); String charset = (String) x.getAttribute("USING"); if (charset != null) { @@ -1349,7 +1349,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab if (x.getAlias() != null) { print0(ucase ? " AS " : " as "); - print(x.getAlias()); + print0(x.getAlias()); } decrementIndent(); @@ -1452,7 +1452,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab if (x.getAlias() != null) { print(' '); - print(x.getAlias()); + print0(x.getAlias()); } return false; @@ -1480,7 +1480,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLCommentStatement x) { print0(ucase ? "COMMENT ON " : "comment on "); if (x.getType() != null) { - print(x.getType().name()); + print0(x.getType().name()); print(' '); } x.getOn().accept(this); @@ -1806,14 +1806,14 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLAlterTableDropConstraint x) { - print(ucase ? "DROP CONSTRAINT " : "drop constraint "); + print0(ucase ? "DROP CONSTRAINT " : "drop constraint "); x.getConstraintName().accept(this); return false; } @Override public boolean visit(SQLAlterTableStatement x) { - print(ucase ? "ALTER TABLE " : "alter table "); + print0(ucase ? "ALTER TABLE " : "alter table "); x.getName().accept(this); incrementIndent(); for (int i = 0; i < x.getItems().size(); ++i) { @@ -1838,7 +1838,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLCreateIndexStatement x) { print0(ucase ? "CREATE " : "create "); if (x.getType() != null) { - print(x.getType()); + print0(x.getType()); print(' '); } @@ -2040,7 +2040,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab print0(ucase ? " ON " : " on "); if (x.getObjectType() != null) { - print(x.getObjectType().name()); + print0(x.getObjectType().name()); print(' '); } @@ -2057,7 +2057,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab print0(ucase ? " ON " : " on "); if (x.getObjectType() != null) { - print(x.getObjectType().name()); + print0(x.getObjectType().name()); print(' '); } @@ -2128,7 +2128,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLAlterTableAddIndex x) { print0(ucase ? "ADD " : "add "); if (x.getType() != null) { - print(x.getType()); + print0(x.getType()); print(' '); } @@ -2136,7 +2136,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab print0(ucase ? "UNIQUE " : "unique "); } - print(x.getKeyOrIndex()); + print0(x.getKeyOrIndex()); print(' '); if (x.getName() != null) { @@ -2149,7 +2149,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab if (x.getUsing() != null) { print0(ucase ? " USING " : " using "); - print(x.getUsing()); + print0(x.getUsing()); } return false; } @@ -2188,7 +2188,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab for (TriggerEvent event : x.getTriggerEvents()) { print(' '); - print(event.name()); + print0(event.name()); } println(); print0(ucase ? "ON " : "on "); @@ -2205,7 +2205,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } public boolean visit(SQLBooleanExpr x) { - print(x.getValue() ? "true" : "false"); + print0(x.getValue() ? "true" : "false"); return false; } @@ -2240,12 +2240,12 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab } print('\''); - print(x.getLiteral()); + print0(x.getLiteral()); print('\''); if (x.getTimeZone() != null) { print0(ucase ? " AT TIME ZONE '" : " at time zone '"); - print(x.getTimeZone()); + print0(x.getTimeZone()); print('\''); } @@ -2255,7 +2255,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLBinaryExpr x) { print0("b'"); - print(x.getValue()); + print0(x.getValue()); print('\''); return false; @@ -2346,7 +2346,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab public boolean visit(SQLAlterTableRenamePartition x) { print0(ucase ? "PARTITION (" : "partition ("); printAndAccept(x.getPartition(), ", "); - print(ucase ? ") RENAME TO PARTITION(" : ") rename to partition("); + print0(ucase ? ") RENAME TO PARTITION(" : ") rename to partition("); printAndAccept(x.getTo(), ", "); print(')'); return false; @@ -2414,7 +2414,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLOpenStatement x) { print0(ucase ? "OPEN " : "open "); - print(x.getCursorName()); + print0(x.getCursorName()); return false; } @@ -2430,7 +2430,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab @Override public boolean visit(SQLCloseStatement x) { print0(ucase ? "CLOSE " : "close "); - print(x.getCursorName()); + print0(x.getCursorName()); return false; } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleMergeTest4.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleMergeTest4.java index 5e0406ef70..4ef90c8e3b 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleMergeTest4.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleMergeTest4.java @@ -32,13 +32,13 @@ public class OracleMergeTest4 extends OracleTest { OracleStatementParser parser = new OracleStatementParser(sql); List statementList = parser.parseStatementList(); - SQLStatement statemen = statementList.get(0); + SQLStatement stmt = statementList.get(0); print(statementList); - + Assert.assertEquals(1, statementList.size()); - + OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); - statemen.accept(visitor); + stmt.accept(visitor); System.out.println("Tables : " + visitor.getTables()); System.out.println("fields : " + visitor.getColumns()); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest10.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest10.java index e7bb2b0ea4..028551cb76 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest10.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest10.java @@ -20,6 +20,7 @@ import java.util.List; import org.junit.Assert; import com.alibaba.druid.sql.OracleTest; +import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleSchemaStatVisitor; @@ -35,13 +36,24 @@ public class OracleSelectTest10 extends OracleTest { OracleStatementParser parser = new OracleStatementParser(sql); List statementList = parser.parseStatementList(); - SQLStatement statemen = statementList.get(0); - print(statementList); + SQLStatement stmt = statementList.get(0); + + String result = SQLUtils.toOracleString(stmt); + String result_lcase = SQLUtils.toOracleString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION); + Assert.assertEquals("SELECT *" + + "\nFROM pivot_table" + + "\nUNPIVOT INCLUDE NULLS (yearly_total FOR order_mode IN (store AS 'direct', internet AS 'online'))" + + "\nORDER BY year, order_mode", result); + + Assert.assertEquals("select *" + + "\nfrom pivot_table" + + "\nunpivot include nulls (yearly_total for order_mode in (store as 'direct', internet as 'online'))" + + "\norder by year, order_mode", result_lcase); Assert.assertEquals(1, statementList.size()); OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); - statemen.accept(visitor); + stmt.accept(visitor); System.out.println("Tables : " + visitor.getTables()); System.out.println("fields : " + visitor.getColumns()); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest2.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest2.java index e97b8264fe..5c23f816c0 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest2.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest2.java @@ -20,6 +20,7 @@ import java.util.List; import org.junit.Assert; import com.alibaba.druid.sql.OracleTest; +import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleSchemaStatVisitor; @@ -44,13 +45,18 @@ public class OracleSelectTest2 extends OracleTest { OracleStatementParser parser = new OracleStatementParser(sql); List statementList = parser.parseStatementList(); - SQLStatement statemen = statementList.get(0); + SQLStatement stmt = statementList.get(0); print(statementList); Assert.assertEquals(1, statementList.size()); + + String result = SQLUtils.toOracleString(stmt); + String result_lcase = SQLUtils.toOracleString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION); + + Assert.assertEquals(result.toLowerCase(), result_lcase); OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); - statemen.accept(visitor); + stmt.accept(visitor); System.out.println("Tables : " + visitor.getTables()); System.out.println("fields : " + visitor.getColumns()); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest36.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest36.java index e22bd47b89..71ca7b95e1 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest36.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest36.java @@ -20,6 +20,7 @@ import java.util.List; import org.junit.Assert; import com.alibaba.druid.sql.OracleTest; +import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr; import com.alibaba.druid.sql.ast.expr.SQLBinaryOperator; @@ -38,11 +39,25 @@ public class OracleSelectTest36 extends OracleTest { OracleStatementParser parser = new OracleStatementParser(sql); List statementList = parser.parseStatementList(); - SQLStatement statemen = statementList.get(0); + SQLStatement stmt = statementList.get(0); print(statementList); + String result = SQLUtils.toOracleString(stmt); + String result_lcase = SQLUtils.toOracleString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION); + Assert.assertEquals("SELECT ID, name" + + "\nFROM druid_test" + + "\nWHERE (name >= ?" + + "\n\t\tOR name IS NULL)" + + "\n\tAND card_id < ?", result); + + Assert.assertEquals("select ID, name" + + "\nfrom druid_test" + + "\nwhere (name >= ?" + + "\n\t\tor name is null)" + + "\n\tand card_id < ?", result_lcase); + { - SQLSelect select = ((SQLSelectStatement) statemen).getSelect(); + SQLSelect select = ((SQLSelectStatement) stmt).getSelect(); SQLSelectQueryBlock queryBlock = (SQLSelectQueryBlock) select.getQuery(); SQLBinaryOpExpr where = (SQLBinaryOpExpr) queryBlock.getWhere(); Assert.assertEquals(SQLBinaryOperator.BooleanAnd, where.getOperator()); @@ -60,7 +75,7 @@ public class OracleSelectTest36 extends OracleTest { Assert.assertEquals(1, statementList.size()); OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); - statemen.accept(visitor); + stmt.accept(visitor); System.out.println("Tables : " + visitor.getTables()); System.out.println("fields : " + visitor.getColumns()); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest37.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest37.java index aa2f4d3c1a..bd45c7449b 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest37.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest37.java @@ -37,13 +37,13 @@ public class OracleSelectTest37 extends OracleTest { OracleStatementParser parser = new OracleStatementParser(sql); List statementList = parser.parseStatementList(); - SQLStatement statemen = statementList.get(0); + SQLStatement stmt = statementList.get(0); print(statementList); Assert.assertEquals(1, statementList.size()); OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); - statemen.accept(visitor); + stmt.accept(visitor); System.out.println("Tables : " + visitor.getTables()); System.out.println("fields : " + visitor.getColumns()); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest40.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest40.java index c02f8d44f2..1b78bf5dc6 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest40.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSelectTest40.java @@ -23,18 +23,17 @@ import com.alibaba.druid.sql.OracleTest; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleSchemaStatVisitor; -import com.alibaba.druid.stat.TableStat; public class OracleSelectTest40 extends OracleTest { public void test_0() throws Exception { String sql = // "WITH a AS (" + // - " SELECT TO_CHAR(csl.create_time,'yyyyMMdd') create_time, cwl.client_key ck, csl.src_id src_id " + // + " SELECT to_char(csl.create_time,'yyyyMMdd') create_time, cwl.client_key ck, csl.src_id src_id " + // " FROM xxxx csl, xxxx cwl " + // " WHERE 1 =1 AND csl.src_id = cwl.src_id AND csl.curr_url = cwl.curr_url " + // - " AND TO_CHAR(csl.create_time,'yyyyMMdd') BETWEEN ? " + // - " AND ? AND cwl.day = TO_CHAR(csl.create_time,'yyyyMMdd') " + // + " AND to_char(csl.create_time,'yyyyMMdd') BETWEEN ? " + // + " AND ? AND cwl.day = to_char(csl.create_time,'yyyyMMdd') " + // " GROUP BY cwl.client_key, csl.src_id, csl.create_time ORDER BY csl.src_id )" + // ", b AS (" + // " SELECT itn.buyerpaytime, itn.esc_orderid, itn.oldck, " + // @@ -47,18 +46,18 @@ public class OracleSelectTest40 extends OracleTest { "SELECT MAX(cos.location) AS position , a.src_id AS srcid , " + // " COUNT(DISTINCT b.esc_orderid) AS orders , SUM(b.gmv) AS uvGmv, " + // " COUNT(DISTINCT buyer) AS buyers FROM a, b, cp_operate_statistics cos " + // - "WHERE a.ck = b.oldck(+) AND TO_CHAR(cos.day,'yyyyMMdd') = a.create_time " + // + "WHERE a.ck = b.oldck(+) AND to_char(cos.day,'yyyyMMdd') = a.create_time " + // " AND a.create_time = b.buyerpaytime AND a.src_id = cos.src_id GROUP BY a.src_id ORDER BY a.src_id"; // OracleStatementParser parser = new OracleStatementParser(sql); List statementList = parser.parseStatementList(); - SQLStatement statemen = statementList.get(0); + SQLStatement stmt = statementList.get(0); print(statementList); Assert.assertEquals(1, statementList.size()); - + OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); - statemen.accept(visitor); + stmt.accept(visitor); System.out.println("Tables : " + visitor.getTables()); System.out.println("fields : " + visitor.getColumns());