Changeset: 5c88029ac682 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/5c88029ac682
Modified Files:
src/test/java/JDBC_API_Tester.java
src/test/java/org/monetdb/jdbc/ApiTests.java
Branch: default
Log Message:
Convert Test_PSsetBytes() -> ApiTests#testSetBytes()
diffs (233 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
@@ -1054,151 +1054,6 @@ public final class JDBC_API_Tester exten
}
@Test
- public void Test_PSsetBytes() {
- sb.setLength(0); // clear the output log buffer
-
- PreparedStatement pstmt = null;
- ResultSet rs = null;
- try {
- sb.append("1 Create table\n");
- pstmt = con.prepareStatement("create table t7346(col1
clob, col2 blob)");
- sb.append(" pstmt has ")
- .append(pstmt.getMetaData().getColumnCount())
- .append(" result columns and ")
-
.append(pstmt.getParameterMetaData().getParameterCount())
- .append(" parameters\n");
- pstmt.execute();
- pstmt.close();
-
- sb.append("2 Prepare Insert data\n");
- pstmt = con.prepareStatement("insert into t7346
(col1,col2) values(?,?)");
- sb.append(" pstmt has ")
- .append(pstmt.getMetaData().getColumnCount())
- .append(" result columns and ")
-
.append(pstmt.getParameterMetaData().getParameterCount())
- .append(" parameters\n");
-
- String val = "0123456789abcdef";
- pstmt.setString(1, val);
- pstmt.setBytes(2, val.getBytes(StandardCharsets.UTF_8));
- sb.append("3 Insert data row 1\n");
- pstmt.execute();
-
- val = "~!@#$%^&*()_+`1-=][{}\\|';:,<.>/?";
- pstmt.setString(1, val);
- pstmt.setBytes(2, val.getBytes(StandardCharsets.UTF_8));
- sb.append("4 Insert data row 2\n");
- pstmt.execute();
-
- val =
"\u00e0\u004f\u20f0\u0020\u00ea\u003a\u0069\u0010\u00a2\u00d8\u0008\u0001\u002b\u0030\u019c\u129e";
- pstmt.setString(1, val);
- pstmt.setBytes(2, val.getBytes(StandardCharsets.UTF_8));
- sb.append("4 Insert data row 3\n");
- pstmt.execute();
-
- val = "\\X\\Y\\\\";
- pstmt.setString(1, val);
- pstmt.setBytes(2, val.getBytes(StandardCharsets.UTF_8));
- sb.append("4 Insert data row 4\n");
- pstmt.execute();
-
- pstmt.close();
-
- sb.append("5 Prepare Select data\n");
- pstmt = con.prepareStatement("select col1, length(col1)
as len_col1, col2, length(col2) as len_col2 from t7346");
- sb.append(" pstmt has ")
- .append(pstmt.getMetaData().getColumnCount())
- .append(" result columns and ")
-
.append(pstmt.getParameterMetaData().getParameterCount())
- .append(" parameters\n");
- sb.append("6 Execute Select\n");
- rs = pstmt.executeQuery();
- if (rs != null) {
- sb.append(" rs has ")
- .append(rs.getMetaData().getColumnCount())
- .append(" result columns\n");
- sb.append("7 Show data rows\n");
- for (int c = 1; c <=
rs.getMetaData().getColumnCount(); c++) {
- if (c > 1)
- sb.append("\t");
-
sb.append(rs.getMetaData().getColumnName(c));
- }
- sb.append("\n");
- while (rs.next()) {
-
sb.append(rs.getString("col1")).append("\t")
-
.append(rs.getInt("len_col1")).append("\t")
-
.append(byteArrayToHexStr(rs.getBytes("col2"))).append("\t")
-
.append(rs.getString("col2")).append("\t")
-
.append(rs.getInt("len_col2")).append("\n");
- }
- rs.close();
- rs = null;
- }
- pstmt.close();
- pstmt = null;
- } catch (SQLException e) {
- sb.append("FAILED:
").append(e.getMessage()).append("\n");
- }
-
- closeStmtResSet(pstmt, rs);
-
- // cleanup created test table
- try {
- sb.append("8 Drop table\n");
- pstmt = con.prepareStatement("drop table if exists
t7346");
- sb.append(" pstmt has ")
- .append(pstmt.getMetaData().getColumnCount())
- .append(" result columns and ")
-
.append(pstmt.getParameterMetaData().getParameterCount())
- .append(" parameters\n");
- pstmt.execute();
- pstmt.close();
- pstmt = null;
- } catch (SQLException e) {
- sb.append("FAILED:
").append(e.getMessage()).append("\n");
- }
-
- closeStmtResSet(pstmt, rs);
-
- compareExpectedOutput("Test_PSsetBytes",
- "1 Create table\n" +
- " pstmt has 0 result columns and 0 parameters\n" +
- "2 Prepare Insert data\n" +
- " pstmt has 0 result columns and 2 parameters\n" +
- "3 Insert data row 1\n" +
- "4 Insert data row 2\n" +
- "4 Insert data row 3\n" +
- "4 Insert data row 4\n" +
- "5 Prepare Select data\n" +
- " pstmt has 4 result columns and 0 parameters\n" +
- "6 Execute Select\n" +
- " rs has 4 result columns\n" +
- "7 Show data rows\n" +
- "col1 len_col1 col2 len_col2\n" +
- "0123456789abcdef 16
30313233343536373839616263646566 30313233343536373839616263646566
16\n" +
- "~!@#$%^&*()_+`1-=][{}\\|';:,<.>/? 32
7E21402324255E262A28295F2B60312D3D5D5B7B7D5C7C273B3A2C3C2E3E2F3F
7E21402324255E262A28295F2B60312D3D5D5B7B7D5C7C273B3A2C3C2E3E2F3F 32\n" +
-
"\u00e0\u004f\u20f0\u0020\u00ea\u003a\u0069\u0010\u00a2\u00d8\u0008\u0001\u002b\u0030\u019c\u129e
16 C3A04FE283B020C3AA3A6910C2A2C39808012B30C69CE18A9E
C3A04FE283B020C3AA3A6910C2A2C39808012B30C69CE18A9E 25\n" +
- "\\X\\Y\\\\ 6 5C585C595C5C 5C585C595C5C
6\n" +
- "8 Drop table\n" +
- " pstmt has 0 result columns and 0 parameters\n");
- }
-
- static private final char[] HEXES =
{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
- private String byteArrayToHexStr(final byte[] bytes) {
- if (bytes == null)
- return null;
- final int len = bytes.length;
- final StringBuilder buf = new StringBuilder(len * 2);
- // convert the bytes into hex codes
- for (int i = 0; i < len; i++) {
- byte b = bytes[i];
- buf.append(HEXES[(b & 0xF0) >> 4])
- .append(HEXES[(b & 0x0F)]);
- }
- return buf.toString();
- }
-
- @Test
public void Test_PSsomeamount() {
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
@@ -1023,4 +1023,74 @@ public class ApiTests {
stmt.executeUpdate("DROP TABLE table_Test_PSmetadata");
}
+
+ @Test
+ public void testSetBytes() throws SQLException {
+ stmt.executeUpdate("DROP TABLE IF EXISTS test_setbytes");
+
+ // Let's create with a prepared statement for a change
+ String create = "CREATE TABLE test_setbytes(col1 CLOB, col2
BLOB, id SERIAL)";
+ try (PreparedStatement ps = conn.prepareStatement(create)) {
+ assertEquals(0, ps.getMetaData().getColumnCount());
+ assertEquals(0,
ps.getParameterMetaData().getParameterCount());
+ ps.execute();
+ }
+
+ String[] testdata = {
+ "0123456789abcdef",
+ "~!@#$%^&*()_+`1-=][{}\\|';:,<.>/?",
+
"\u00e0\u004f\u20f0\u0020\u00ea\u003a\u0069\u0010\u00a2\u00d8\u0008\u0001\u002b\u0030\u019c\u129e",
+ "X\\Y"
+ };
+
+ // insert them
+ String ins = "INSERT INTO test_setbytes(col1, col2) VALUES (?,
?)";
+ try (PreparedStatement ps = conn.prepareStatement(ins)) {
+ assertEquals(0, ps.getMetaData().getColumnCount());
+ assertEquals(2,
ps.getParameterMetaData().getParameterCount());
+ for (String val : testdata) {
+ ps.setString(1, val);
+ ps.setBytes(2, val.getBytes(UTF_8));
+ ps.addBatch();
+ }
+ ps.executeBatch();
+ }
+
+ // retrieve and compare
+ String sel = "SELECT col1, LENGTH(col1) AS lencol1, col2,
LENGTH(col2) AS lencol2 FROM test_setbytes ORDER BY id";
+ try (PreparedStatement ps = conn.prepareStatement(sel)) {
+ assertEquals(4, ps.getMetaData().getColumnCount());
+ assertEquals(0,
ps.getParameterMetaData().getParameterCount());
+ try (ResultSet rs = ps.executeQuery()) {
+ assertEquals(4,
rs.getMetaData().getColumnCount());
+
+ for (String val : testdata) {
+ assertTrue(rs.next());
+
+ byte[] bin = val.getBytes(UTF_8);
+ String hex = toUppercaseHexDigits(bin);
+ assertEquals(val, rs.getString("col1"));
+ assertEquals(val.length(),
rs.getInt("lencol1"));
+ assertArrayEquals(bin,
rs.getBytes("col2"));
+ assertEquals(hex, rs.getString("col2"));
+ assertEquals(bin.length,
rs.getInt("lencol2"));
+ }
+ assertFalse(rs.next());
+ }
+ }
+
+ stmt.executeUpdate("DROP TABLE test_setbytes");
+ }
+
+ private String toUppercaseHexDigits(byte[] bytes) {
+ StringBuilder sb = new StringBuilder(bytes.length * 2);
+ String digits = "0123456789ABCDEF";
+ for (byte b : bytes) {
+ int hi = b & 0xF0;
+ int lo = b & 0x0F;
+ sb.append(digits.charAt(hi >> 4));
+ sb.append(digits.charAt(lo));
+ }
+ return sb.toString();
+ }
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]