Author: cbegin
Date: Fri Jun 26 22:46:36 2009
New Revision: 788897
URL: http://svn.apache.org/viewvc?rev=788897&view=rev
Log:
added full script execution option to sql runner (only for JDBC drivers that
support sending large delimited scripts directly).
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/databases/jpetstore/jpetstore-hsqldb-schema.sql
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/migration/MigratorTest.java
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java?rev=788897&r1=788896&r2=788897&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java
Fri Jun 26 22:46:36 2009
@@ -1,7 +1,6 @@
package org.apache.ibatis.jdbc;
import java.io.BufferedReader;
-import java.io.IOException;
import java.io.PrintWriter;
import java.io.Reader;
import java.sql.*;
@@ -57,6 +56,39 @@
public void runScript(Reader reader) {
setAutoCommit();
+ try {
+ if (sendFullScript) {
+ executeFullScript(reader);
+ } else {
+ executeLineByLine(reader);
+ }
+ } finally {
+ rollbackConnection();
+ flush();
+ }
+ }
+
+ private void executeFullScript(Reader reader) {
+ final String lineseparator = System.getProperty("line.separator");
+ StringBuffer script = new StringBuffer();
+ try {
+ BufferedReader lineReader = new BufferedReader(reader);
+ String line;
+ while ((line = lineReader.readLine()) != null) {
+ script.append(line);
+ script.append(lineseparator);
+ }
+ System.out.println(script);
+ executeStatement(script.toString());
+ commitConnection();
+ } catch (Exception e) {
+ String message = "Error executing: " + script + ". Cause: " + e;
+ printlnError(message);
+ throw new RuntimeSqlException(message, e);
+ }
+ }
+
+ private void executeLineByLine(Reader reader) {
StringBuffer command = new StringBuffer();
try {
BufferedReader lineReader = new BufferedReader(reader);
@@ -70,9 +102,6 @@
String message = "Error executing: " + command + ". Cause: " + e;
printlnError(message);
throw new RuntimeSqlException(message, e);
- } finally {
- rollbackConnection();
- flush();
}
}
@@ -190,7 +219,7 @@
}
}
} catch (SQLException e) {
- printlnError("Error printing results: " + e.getMessage());
+ printlnError("Error printing results: " + e.getMessage());
}
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java?rev=788897&r1=788896&r2=788897&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java
Fri Jun 26 22:46:36 2009
@@ -179,6 +179,7 @@
ScriptRunner scriptRunner = new ScriptRunner(dataSource.getConnection());
scriptRunner.setAutoCommit(true);
scriptRunner.setStopOnError(!force);
+ scriptRunner.setSendFullScript(false);
scriptRunner.setLogWriter(outWriter);
scriptRunner.setErrorLogWriter(outWriter);
return scriptRunner;
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/databases/jpetstore/jpetstore-hsqldb-schema.sql
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/databases/jpetstore/jpetstore-hsqldb-schema.sql?rev=788897&r1=788896&r2=788897&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/databases/jpetstore/jpetstore-hsqldb-schema.sql
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/databases/jpetstore/jpetstore-hsqldb-schema.sql
Fri Jun 26 22:46:36 2009
@@ -1,20 +1,20 @@
-drop index productCat;
-drop index productName;
-drop index itemProd;
-
-drop table lineitem;
-drop table orderstatus;
-drop table orders;
-drop table bannerdata;
-drop table profile;
-drop table signon;
-drop table inventory;
-drop table item;
-drop table product;
-drop table account;
-drop table category;
-drop table supplier;
-drop table sequence;
+drop index productCat if exists;
+drop index productName if exists;
+drop index itemProd if exists;
+
+drop table lineitem if exists;
+drop table orderstatus if exists;
+drop table orders if exists;
+drop table bannerdata if exists;
+drop table profile if exists;
+drop table signon if exists;
+drop table inventory if exists;
+drop table item if exists;
+drop table product if exists;
+drop table account if exists;
+drop table category if exists;
+drop table supplier if exists;
+drop table sequence if exists;
create table supplier (
suppid int not null,
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java?rev=788897&r1=788896&r2=788897&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java
Fri Jun 26 22:46:36 2009
@@ -15,6 +15,20 @@
public class ScriptRunnerTest extends BaseDataTest {
@Test
+ public void shouldRunScriptsBySendingFullScriptAtOnce() throws Exception {
+ DataSource ds = createUnpooledDataSource(JPETSTORE_PROPERTIES);
+ Connection conn = ds.getConnection();
+ ScriptRunner runner = new ScriptRunner(conn);
+ runner.setSendFullScript(true);
+ runner.setAutoCommit(true);
+ runner.setStopOnError(false);
+ runner.setErrorLogWriter(null);
+ runner.setLogWriter(null);
+ runJPetStoreScripts(runner);
+ assertProductsTableExistsAndLoaded();
+ }
+
+ @Test
public void shouldRunScriptsUsingConnection() throws Exception {
DataSource ds = createUnpooledDataSource(JPETSTORE_PROPERTIES);
Connection conn = ds.getConnection();
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/migration/MigratorTest.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/migration/MigratorTest.java?rev=788897&r1=788896&r2=788897&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/migration/MigratorTest.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/migration/MigratorTest.java
Fri Jun 26 22:46:36 2009
@@ -25,6 +25,7 @@
DataSource ds = createUnpooledDataSource(BLOG_PROPERTIES);
Connection conn = ds.getConnection();
SqlRunner executor = new SqlRunner(conn);
+ safeRun(executor, "DROP TABLE bootstrap");
safeRun(executor, "DROP TABLE comment");
safeRun(executor, "DROP TABLE post_tag");
safeRun(executor, "DROP TABLE tag");