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

Convert Test_PSlargebatchval() -> ApiTests#testLargeBatchValue()


diffs (161 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
@@ -1024,90 +1024,6 @@ public final class JDBC_API_Tester exten
        }
 
        @Test
-       public void Test_PSlargebatchval() {
-               sb.setLength(0);        // clear the output log buffer
-
-               byte[] errorBytes = new byte[] { (byte) 0xe2, (byte) 0x80, 
(byte) 0xa7 };
-               String errorStr = new String(errorBytes, 
StandardCharsets.UTF_8);
-               StringBuilder repeatedErrorStr = new StringBuilder();
-               for (int i = 0; i < 8170;i++) {
-                       repeatedErrorStr.append(errorStr);
-               }
-               String largeStr = repeatedErrorStr.toString();
-
-               Statement stmt = null;
-               PreparedStatement pstmt = null;
-               ResultSet rs = null;
-               try {
-                       // >> true: auto commit should be on
-                       sb.append("0. 
true\t").append(con.getAutoCommit()).append("\n");
-
-                       stmt = con.createStatement();
-                       sb.append("1. creating test table...");
-                       stmt.execute("CREATE TABLE Test_PSlargebatchval (c INT, 
a CLOB, b DOUBLE)");
-                       sb.append("success\n");
-
-                       sb.append("2. prepare insert...");
-                       pstmt = con.prepareStatement("INSERT INTO 
Test_PSlargebatchval VALUES (?,?,?)");
-                       sb.append("success\n");
-
-                       pstmt.setLong(1, 1L);
-                       pstmt.setString(2, largeStr);
-                       pstmt.setDouble(3, 1.0);
-                       pstmt.addBatch();
-                       pstmt.executeBatch();
-                       sb.append("3. inserted 1 large string\n");
-
-                       /* test issue reported at 
https://github.com/MonetDB/MonetDB/issues/3470 */
-                       pstmt.setLong(1, -2L);
-                       pstmt.setClob(2, new StringReader(largeStr));
-                       pstmt.setDouble(3, -2.0);
-                       pstmt.addBatch();
-                       pstmt.executeBatch();
-                       sb.append("4. inserted 1 large clob via StringReader() 
object\n");
-
-                       Clob myClob = con.createClob();
-                       myClob.setString(1L, largeStr);
-
-                       pstmt.setLong(1, 123456789L);
-                       pstmt.setClob(2, myClob);
-                       pstmt.setDouble(3, 12345678901.98765);
-                       pstmt.addBatch();
-                       pstmt.executeBatch();
-                       sb.append("5. inserted 1 large clob via createClob() 
object\n");
-
-                       pstmt.close();
-
-                       sb.append("6. select count(*)... ");
-                       rs = stmt.executeQuery("SELECT COUNT(*) FROM 
Test_PSlargebatchval");
-                       if (rs.next())
-                               sb.append(rs.getInt(1)).append(" rows 
inserted.\n");
-                       rs.close();
-
-                       sb.append("7. drop table...");
-                       stmt.execute("DROP TABLE Test_PSlargebatchval");
-                       sb.append("success\n");
-                       stmt.close();
-               } catch (SQLException e) {
-                       sb.append("FAILED: 
").append(e.getMessage()).append("\n");
-                       while ((e = e.getNextException()) != null)
-                               sb.append("FAILED: 
").append(e.getMessage()).append("\n");
-               }
-               closeStmtResSet(stmt, rs);
-               closeStmtResSet(pstmt, null);
-
-               compareExpectedOutput("Test_PSlargebatchval",
-                       "0. true        true\n" +
-                       "1. creating test table...success\n" +
-                       "2. prepare insert...success\n" +
-                       "3. inserted 1 large string\n" +
-                       "4. inserted 1 large clob via StringReader() object\n" +
-                       "5. inserted 1 large clob via createClob() object\n" +
-                       "6. select count(*)... 3 rows inserted.\n" +
-                       "7. drop table...success\n");
-       }
-
-       @Test
        public void Test_PSlargeresponse() {
                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
@@ -8,12 +8,14 @@ import org.monetdb.testinfra.CloseOnFail
 import org.monetdb.testinfra.Config;
 import org.monetdb.testinfra.MonetVersionNumber;
 
+import java.io.StringReader;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.sql.*;
 import java.util.ArrayList;
 import java.util.HashMap;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.junit.jupiter.api.Assertions.*;
 import static org.junit.jupiter.api.Assumptions.assumeTrue;
 import static org.monetdb.testinfra.Assertions.assertSQLException;
@@ -737,4 +739,48 @@ public class ApiTests {
 
                stmt.executeUpdate("DROP TABLE test_getobject");
        }
+
+       @Test
+       public void testLargeBatchValue() throws SQLException {
+               /* test issue reported at 
https://github.com/MonetDB/MonetDB/issues/3470 */
+
+               stmt.executeUpdate("DROP TABLE IF EXISTS test_largeval");
+               stmt.executeUpdate("CREATE TABLE test_largeval(c INT, a CLOB, b 
DOUBLE)");
+
+               // U+2027 Unicode name: HYPHENATION POINT
+               byte[] errorBytes = new byte[]{(byte) 0xe2, (byte) 0x80, (byte) 
0xa7};
+               String errorStr = new String(errorBytes, UTF_8);
+               StringBuilder repeatedErrorStr = new StringBuilder();
+               for (int i = 0; i < 8170; i++) {
+                       repeatedErrorStr.append(errorStr);
+               }
+               String largeStr = repeatedErrorStr.toString();
+
+               String ins = "INSERT INTO test_largeval VALUES (?, ?, ?)";
+               try (PreparedStatement ps = conn.prepareStatement(ins)) {
+                       ps.setLong(1, 1L);
+                       ps.setString(2, largeStr);  // pass string directly
+                       ps.setDouble(3, 1.0);
+                       ps.addBatch();
+                       ps.executeBatch();
+
+                       ps.setLong(1, -2L);
+                       ps.setClob(2, new StringReader(largeStr));  // pass 
string as clob via reader
+                       ps.setDouble(3, -2.0);
+                       ps.addBatch();
+
+                       Clob myClob = conn.createClob();
+                       myClob.setString(1L, largeStr);
+                       ps.setLong(1, 123456789L);
+                       ps.setClob(2, myClob);
+                       ps.setDouble(3, 1245678901.98765);
+                       ps.addBatch();
+
+                       ps.executeBatch();
+               }
+
+               assertEquals(3, queryInt("SELECT COUNT(*) FROM test_largeval"));
+
+               stmt.executeUpdate("DROP TABLE test_largeval");
+       }
 }
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to