Changeset: e7baa1ae0b92 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/e7baa1ae0b92
Modified Files:
        src/test/java/JDBC_API_Tester.java
        src/test/java/org/monetdb/jdbc/ApiTests.java
Branch: default
Log Message:

Convert Test_Sbatching() -> ApiTests#testBatching()


diffs (199 lines):

diff --git a/src/test/java/JDBC_API_Tester.java 
b/src/test/java/JDBC_API_Tester.java
--- a/src/test/java/JDBC_API_Tester.java
+++ b/src/test/java/JDBC_API_Tester.java
@@ -2657,132 +2657,6 @@ public final class JDBC_API_Tester exten
        }
 
        @Test
-       public void Test_Sbatching() {
-               sb.setLength(0);        // clear the output log buffer
-
-               Statement stmt = null;
-               PreparedStatement pstmt = null;
-               ResultSet rs = null;
-               try {
-                       con.setAutoCommit(false);
-                       // >> false: auto commit should be off now
-                       sb.append("0. 
false\t").append(con.getAutoCommit()).append("\n");
-
-                       stmt = con.createStatement();
-
-                       sb.append("1. create...");
-                       if (stmt.executeUpdate("CREATE TABLE Test_Sbatching ( 
id int )") != 0)
-                               sb.append("Wrong return status\n");
-                       else
-                               sb.append("passed\n");
-
-                       // for large batches of DML always set sys.optimizer = 
'minimal_pipe'. It makes a big difference in performance.
-                       stmt.execute("SET sys.optimizer = 'minimal_pipe'");
-
-                       // start batching a large amount of inserts
-                       for (int i = 1; i <= 3432; i++) {
-                               stmt.addBatch("INSERT INTO Test_Sbatching 
VALUES (" + i + ")");
-                               if (i % 1500 == 0) {
-                                       sb.append("2. executing batch (1500 
inserts)...");
-                                       int[] cnts = stmt.executeBatch();
-                                       sb.append("passed\n");
-                                       sb.append("3. checking number of update 
counts...");
-                                       if (cnts.length != 1500)
-                                               sb.append("Invalid size: 
").append(cnts.length);
-                                       sb.append(cnts.length).append(" 
passed\n");
-                                       sb.append("4. checking update counts 
(should all be 1)...");
-                                       for (int j = 0; j < cnts.length; j++) {
-                                               if (cnts[j] != 1)
-                                                       sb.append("Unexpected 
value: ").append(cnts[j]);
-                                       }
-                                       sb.append("passed\n");
-                                       con.commit();
-                               }
-                       }
-                       sb.append("5. executing final batch...");
-                       stmt.executeBatch();
-                       con.commit();
-                       sb.append("passed\n");
-
-                       pstmt = con.prepareStatement("INSERT INTO 
Test_Sbatching VALUES (?)");
-                       // start batching a large amount of prepared inserts 
using JDBC 4.2 executeLargeBatch()
-                       for (int i = 1; i <= 3568; i++) {
-                               pstmt.setInt(1, i);
-                               pstmt.addBatch();
-                               if (i % 3000 == 0) {
-                                       sb.append("2. executing batch (3000 
inserts)...");
-                                       long[] cnts = pstmt.executeLargeBatch();
-                                       sb.append("passed\n");
-                                       sb.append("3. checking number of update 
counts...");
-                                       if (cnts.length != 3000)
-                                               sb.append("Invalid size: 
").append(cnts.length);
-                                       sb.append(cnts.length).append(" 
passed\n");
-                                       sb.append("4. checking update counts 
(should all be 1)...");
-                                       for (int j = 0; j < cnts.length; j++) {
-                                               if (cnts[j] != 1)
-                                                       sb.append("Unexpected 
value: ").append(cnts[j]);
-                                       }
-                                       sb.append("passed\n");
-                                       con.commit();
-                               }
-                       }
-                       sb.append("5. executing final Largebatch...");
-                       pstmt.executeLargeBatch();
-                       con.commit();
-                       sb.append("passed\n");
-
-                       sb.append("6. clearing the batch...");
-                       stmt.clearBatch();
-                       pstmt.clearBatch();
-                       sb.append("passed\n");
-
-                       sb.append("7. checking table count...");
-                       rs = stmt.executeQuery("SELECT COUNT(*) FROM 
Test_Sbatching");
-                       rs.next();
-                       sb.append(rs.getInt(1)).append(" passed\n");
-
-                       sb.append("8. drop table...");
-                       if (stmt.executeUpdate("DROP TABLE Test_Sbatching") != 
0)
-                               sb.append("Wrong return status\n");
-                       else
-                               sb.append("passed\n");
-
-                       // rs.close();
-                       stmt.close();
-                       pstmt.close();
-
-                       con.commit();
-                       con.setAutoCommit(true);
-                       // >> true: auto commit should be on by default
-                       sb.append("0. 
true\t").append(con.getAutoCommit()).append("\n");
-               } catch (SQLException e) {
-                       sb.append("FAILED: 
").append(e.getMessage()).append("\n");
-               }
-
-               closeStmtResSet(stmt, rs);
-               closeStmtResSet(pstmt, null);
-
-               compareExpectedOutput("Test_Sbatching",
-                       "0. false       false\n" +
-                       "1. create...passed\n" +
-                       "2. executing batch (1500 inserts)...passed\n" +
-                       "3. checking number of update counts...1500 passed\n" +
-                       "4. checking update counts (should all be 
1)...passed\n" +
-                       "2. executing batch (1500 inserts)...passed\n" +
-                       "3. checking number of update counts...1500 passed\n" +
-                       "4. checking update counts (should all be 
1)...passed\n" +
-                       "5. executing final batch...passed\n" +
-                       "2. executing batch (3000 inserts)...passed\n" +
-                       "3. checking number of update counts...3000 passed\n" +
-                       "4. checking update counts (should all be 
1)...passed\n" +
-                       "5. executing final Largebatch...passed\n" +
-                       "6. clearing the batch...passed\n" +
-                       "7. checking table count...7000 passed\n" +
-                       "8. drop table...passed\n" +
-                       "0. true        true\n");
-       }
-
-       @Test
        public void Test_SgeneratedKeys() {
                sb.setLength(0);        // clear the output log buffer
 
diff --git a/src/test/java/org/monetdb/jdbc/ApiTests.java 
b/src/test/java/org/monetdb/jdbc/ApiTests.java
--- a/src/test/java/org/monetdb/jdbc/ApiTests.java
+++ b/src/test/java/org/monetdb/jdbc/ApiTests.java
@@ -1169,4 +1169,59 @@ public class ApiTests {
                        conn.setAutoCommit(true);
                }
        }
+
+       @Test
+       public void testBatching() throws SQLException {
+               final int n1 = 3432;
+               final int n2 = 3568;
+               int i;
+               stmt.execute("DROP TABLE IF EXISTS testbatching");
+               stmt.execute("CREATE TABLE testbatching(id INT)");
+
+               // Test regular statement with executeBatch
+               for (i = 1; i <= n1; i++) {
+                       stmt.addBatch("INSERT INTO testbatching VALUES (" + i + 
")");
+                       if (i % 1500 == 0)
+                               testBatching_execute(stmt, false, 1500);
+               }
+               testBatching_execute(stmt, false, n1 % 1500);
+               stmt.clearBatch();
+
+               // Test prepared statement with executeLargeBatch
+               pstmt = conn.prepareStatement("INSERT INTO testbatching VALUES 
(?)");
+               for (i = 1; i <= n2; i++) {
+                       pstmt.setInt(1, 1);
+                       pstmt.addBatch();
+                       if (i % 3000 == 0)
+                               testBatching_execute(pstmt, true, 3000);
+               }
+               testBatching_execute(pstmt, true, n2 % 3000);
+               pstmt.clearBatch();
+
+               // Check row count
+               assertEquals(n1 + n2, queryInt("SELECT COUNT(*) FROM 
testbatching"));
+       }
+
+       private void testBatching_execute(Statement s, boolean large, int 
expected) throws SQLException {
+               int[] ints = null;
+               long[] longs = null;
+               int resultCount;
+
+               if (large) {
+                       longs = s.executeLargeBatch();
+                       resultCount = longs.length;
+               } else {
+                       ints = s.executeBatch();
+                       resultCount = ints.length;
+               }
+
+               assertEquals(expected, resultCount);
+
+               for (int i = 0; i < resultCount; i++)
+                       assertEquals(
+                                       1L,
+                                       large ? longs[i] : (long)ints[i],
+                                       "result #" + i + " is wrong"
+                       );
+       }
 }
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to