Skip to content

Commit c20c0f5

Browse files
committed
Fixes #319 ScriptRunner log writter doesn't work when the full script is sent.
1 parent 3acb2de commit c20c0f5

File tree

2 files changed

+45
-2
lines changed

2 files changed

+45
-2
lines changed

src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,9 @@ private void executeFullScript(Reader reader) {
114114
script.append(line);
115115
script.append(LINE_SEPARATOR);
116116
}
117-
executeStatement(script.toString());
117+
String command = script.toString();
118+
println(command);
119+
executeStatement(command);
118120
commitConnection();
119121
} catch (Exception e) {
120122
String message = "Error executing: " + script + ". Cause: " + e;

src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@
2626

2727
import javax.sql.DataSource;
2828
import java.io.IOException;
29+
import java.io.PrintWriter;
2930
import java.io.Reader;
31+
import java.io.StringReader;
32+
import java.io.StringWriter;
3033
import java.sql.Connection;
3134
import java.sql.SQLException;
3235
import java.util.List;
@@ -121,7 +124,7 @@ public void commentAferStatementDelimiterShouldNotCauseRunnerFail() throws Excep
121124
fail(e.getMessage());
122125
}
123126
}
124-
127+
125128
@Test
126129
public void shouldReturnWarningIfNotTheCurrentDelimiterUsed() throws Exception {
127130
DataSource ds = createUnpooledDataSource(JPETSTORE_PROPERTIES);
@@ -164,6 +167,44 @@ public void changingDelimiterShouldNotCauseRunnerFail() throws Exception {
164167
}
165168
}
166169

170+
@Test
171+
public void testLogging() throws Exception {
172+
DataSource ds = createUnpooledDataSource(JPETSTORE_PROPERTIES);
173+
Connection conn = ds.getConnection();
174+
ScriptRunner runner = new ScriptRunner(conn);
175+
runner.setAutoCommit(true);
176+
runner.setStopOnError(false);
177+
runner.setErrorLogWriter(null);
178+
runner.setSendFullScript(false);
179+
StringWriter sw = new StringWriter();
180+
PrintWriter logWriter = new PrintWriter(sw);
181+
runner.setLogWriter(logWriter);
182+
183+
Reader reader = new StringReader("select userid from account where userid = 'j2ee';");
184+
runner.runScript(reader);
185+
186+
assertEquals("select userid from account where userid = 'j2ee'\n\nUSERID\t\nj2ee\t\n", sw.toString());
187+
}
188+
189+
@Test
190+
public void testLoggingFullScipt() throws Exception {
191+
DataSource ds = createUnpooledDataSource(JPETSTORE_PROPERTIES);
192+
Connection conn = ds.getConnection();
193+
ScriptRunner runner = new ScriptRunner(conn);
194+
runner.setAutoCommit(true);
195+
runner.setStopOnError(false);
196+
runner.setErrorLogWriter(null);
197+
runner.setSendFullScript(true);
198+
StringWriter sw = new StringWriter();
199+
PrintWriter logWriter = new PrintWriter(sw);
200+
runner.setLogWriter(logWriter);
201+
202+
Reader reader = new StringReader("select userid from account where userid = 'j2ee';");
203+
runner.runScript(reader);
204+
205+
assertEquals("select userid from account where userid = 'j2ee';\n\nUSERID\t\nj2ee\t\n", sw.toString());
206+
}
207+
167208
private void runJPetStoreScripts(ScriptRunner runner) throws IOException, SQLException {
168209
runScript(runner, JPETSTORE_DDL);
169210
runScript(runner, JPETSTORE_DATA);

0 commit comments

Comments
 (0)