in core/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java [94:242]
public boolean visit(MySqlSelectQueryBlock x) {
final boolean bracket = x.isParenthesized();
if (bracket) {
print('(');
}
if ((!isParameterized()) && isPrettyFormat() && x.hasBeforeComment()) {
printlnComments(x.getBeforeCommentsDirect());
}
String cachedSelectList = x.getCachedSelectList();
if (cachedSelectList != null) {
if (!isEnabled(VisitorFeature.OutputSkipSelectListCacheString)) {
print0(cachedSelectList);
}
} else {
print0(ucase ? "SELECT " : "select ");
for (int i = 0, size = x.getHintsSize(); i < size; ++i) {
SQLCommentHint hint = x.getHints().get(i);
hint.accept(this);
print(' ');
}
switch (x.getDistionOption()) {
case SQLSetQuantifier.ALL:
print0(ucase ? "ALL " : "all ");
break;
case SQLSetQuantifier.DISTINCT:
print0(ucase ? "DISTINCT " : "distinct ");
break;
case SQLSetQuantifier.DISTINCTROW:
print0(ucase ? "DISTINCTROW " : "distinctrow ");
break;
case SQLSetQuantifier.UNIQUE:
print0(ucase ? "UNIQUE " : "unique ");
break;
default:
break;
}
if (x.isHignPriority()) {
print0(ucase ? "HIGH_PRIORITY " : "high_priority ");
}
if (x.isStraightJoin()) {
print0(ucase ? "STRAIGHT_JOIN " : "straight_join ");
}
if (x.isSmallResult()) {
print0(ucase ? "SQL_SMALL_RESULT " : "sql_small_result ");
}
if (x.isBigResult()) {
print0(ucase ? "SQL_BIG_RESULT " : "sql_big_result ");
}
if (x.isBufferResult()) {
print0(ucase ? "SQL_BUFFER_RESULT " : "sql_buffer_result ");
}
if (x.getCache() != null) {
if (x.getCache().booleanValue()) {
print0(ucase ? "SQL_CACHE " : "sql_cache ");
} else {
print0(ucase ? "SQL_NO_CACHE " : "sql_no_cache ");
}
}
if (x.isCalcFoundRows()) {
print0(ucase ? "SQL_CALC_FOUND_ROWS " : "sql_calc_found_rows ");
}
printSelectList(x.getSelectList());
SQLName forcePartition = x.getForcePartition();
if (forcePartition != null) {
println();
print0(ucase ? "FORCE PARTITION " : "force partition ");
printExpr(forcePartition, parameterized);
}
SQLExprTableSource into = x.getInto();
if (into != null) {
println();
print0(ucase ? "INTO " : "into ");
printTableSource(into);
}
}
printFrom(x);
printWhere(x);
printHierarchical(x);
printGroupBy(x);
printWindow(x);
printOrderBy(x);
printLimit(x);
SQLName procedureName = x.getProcedureName();
if (procedureName != null) {
print0(ucase ? " PROCEDURE " : " procedure ");
procedureName.accept(this);
if (!x.getProcedureArgumentList().isEmpty()) {
print('(');
printAndAccept(x.getProcedureArgumentList(), ", ");
print(')');
}
}
if (x.isForUpdate()) {
println();
print0(ucase ? "FOR UPDATE" : "for update");
if (x.isNoWait()) {
print0(ucase ? " NOWAIT" : " nowait");
} else if (x.getWaitTime() != null) {
print0(ucase ? " WAIT " : " wait ");
x.getWaitTime().accept(this);
}
if (x.isSkipLocked()) {
print0(ucase ? " SKIP LOCKED" : " skip locked");
}
}
if (x.isForShare()) {
println();
print0(ucase ? "FOR SHARE" : "for share");
}
if (x.isLockInShareMode()) {
println();
print0(ucase ? "LOCK IN SHARE MODE" : "lock in share mode");
}
if ((!isParameterized()) && isPrettyFormat() && x.hasAfterComment()) {
printAfterComments(x.getAfterCommentsDirect());
}
if (bracket) {
print(')');
}
return false;
}