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");