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


Reply via email to