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]