提交 fafdb478 authored 作者: Thomas Mueller's avatar Thomas Mueller

Issue 347: the RunScript and Shell tools now ignore empty statements.

上级 4312fc58
...@@ -161,6 +161,9 @@ public class RunScript extends Tool { ...@@ -161,6 +161,9 @@ public class RunScript extends Tool {
if (sql == null) { if (sql == null) {
break; break;
} }
if (sql.trim().length() == 0) {
continue;
}
boolean resultSet = stat.execute(sql); boolean resultSet = stat.execute(sql);
if (resultSet) { if (resultSet) {
if (rs != null) { if (rs != null) {
...@@ -196,6 +199,9 @@ public class RunScript extends Tool { ...@@ -196,6 +199,9 @@ public class RunScript extends Tool {
break; break;
} }
String trim = sql.trim(); String trim = sql.trim();
if (trim.length() == 0) {
continue;
}
if (trim.startsWith("@") && StringUtils.toUpperEnglish(trim).startsWith("@INCLUDE")) { if (trim.startsWith("@") && StringUtils.toUpperEnglish(trim).startsWith("@INCLUDE")) {
sql = trim; sql = trim;
sql = sql.substring("@INCLUDE".length()).trim(); sql = sql.substring("@INCLUDE".length()).trim();
...@@ -205,48 +211,46 @@ public class RunScript extends Tool { ...@@ -205,48 +211,46 @@ public class RunScript extends Tool {
process(conn, sql, continueOnError, charsetName); process(conn, sql, continueOnError, charsetName);
} else { } else {
try { try {
if (trim.length() > 0) { if (showResults && !trim.startsWith("-->")) {
if (showResults && !trim.startsWith("-->")) { out.print(sql + ";");
out.print(sql + ";"); }
} if (showResults || checkResults) {
if (showResults || checkResults) { boolean query = stat.execute(sql);
boolean query = stat.execute(sql); if (query) {
if (query) { ResultSet rs = stat.getResultSet();
ResultSet rs = stat.getResultSet(); int columns = rs.getMetaData().getColumnCount();
int columns = rs.getMetaData().getColumnCount(); StringBuilder buff = new StringBuilder();
StringBuilder buff = new StringBuilder(); while (rs.next()) {
while (rs.next()) { buff.append("\n-->");
buff.append("\n-->"); for (int i = 0; i < columns; i++) {
for (int i = 0; i < columns; i++) { String s = rs.getString(i + 1);
String s = rs.getString(i + 1); if (s != null) {
if (s != null) { s = StringUtils.replaceAll(s, "\r\n", "\n");
s = StringUtils.replaceAll(s, "\r\n", "\n"); s = StringUtils.replaceAll(s, "\n", "\n--> ");
s = StringUtils.replaceAll(s, "\n", "\n--> "); s = StringUtils.replaceAll(s, "\r", "\r--> ");
s = StringUtils.replaceAll(s, "\r", "\r--> ");
}
buff.append(' ').append(s);
} }
buff.append(' ').append(s);
} }
buff.append("\n;"); }
String result = buff.toString(); buff.append("\n;");
if (showResults) { String result = buff.toString();
out.print(result); if (showResults) {
} out.print(result);
if (checkResults) { }
String expected = r.readStatement() + ";"; if (checkResults) {
expected = StringUtils.replaceAll(expected, "\r\n", "\n"); String expected = r.readStatement() + ";";
expected = StringUtils.replaceAll(expected, "\r", "\n"); expected = StringUtils.replaceAll(expected, "\r\n", "\n");
if (!expected.equals(result)) { expected = StringUtils.replaceAll(expected, "\r", "\n");
expected = StringUtils.replaceAll(expected, " ", "+"); if (!expected.equals(result)) {
result = StringUtils.replaceAll(result, " ", "+"); expected = StringUtils.replaceAll(expected, " ", "+");
throw new SQLException("Unexpected output for:\n" + sql.trim() + "\nGot:\n" + result + "\nExpected:\n" + expected); result = StringUtils.replaceAll(result, " ", "+");
} throw new SQLException("Unexpected output for:\n" + sql.trim() + "\nGot:\n" + result + "\nExpected:\n" + expected);
} }
} }
} else {
stat.execute(sql);
} }
} else {
stat.execute(sql);
} }
} catch (Exception e) { } catch (Exception e) {
if (continueOnError) { if (continueOnError) {
......
...@@ -419,6 +419,9 @@ public class Shell extends Tool implements Runnable { ...@@ -419,6 +419,9 @@ public class Shell extends Tool implements Runnable {
} }
private void execute(String sql) { private void execute(String sql) {
if (sql.trim().length() == 0) {
return;
}
long time = System.currentTimeMillis(); long time = System.currentTimeMillis();
try { try {
ResultSet rs = null; ResultSet rs = null;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论