postgresql-jdbc.git / summary / log / commit / refs
commit 115c4a42e70643ec22a163dff239b24bb1bc8798
Author: Dave Cramer <dave.cramer@credativ.ca>
Commit: Craig Ringer <ringerc@ringerc.id.au>
Date: Thu Sep 13 11:43:40 2012 +0000
Added explicit test case for array handling from Craig Ringer
.../test/jdbc3/SendRecvBufferSizeTest.java | 3 ++
org/postgresql/test/jdbc4/ArrayTest.java | 33 ++++++++++++++++++++++
2 files changed, 36 insertions(+)
diff --git a/org/postgresql/test/jdbc3/SendRecvBufferSizeTest.java b/org/postgresql/test/jdbc3/SendRecvBufferSizeTest.java
index 54c51a5a..80d49ac4 100644
--- a/org/postgresql/test/jdbc3/SendRecvBufferSizeTest.java
+++ b/org/postgresql/test/jdbc3/SendRecvBufferSizeTest.java
@@ -9,6 +9,8 @@ package org.postgresql.test.jdbc3;
import java.sql.*;
import junit.framework.TestCase;
+
+import org.postgresql.jdbc2.AbstractJdbc2Connection;
import org.postgresql.test.TestUtil;
public class SendRecvBufferSizeTest extends TestCase {
@@ -38,6 +40,7 @@ public class SendRecvBufferSizeTest extends TestCase {
TestUtil.closeDB(_conn);
}
+
// dummy test
public void testSelect() throws SQLException {
Statement stmt = _conn.createStatement();
diff --git a/org/postgresql/test/jdbc4/ArrayTest.java b/org/postgresql/test/jdbc4/ArrayTest.java
index 714fd156..f852aee3 100644
--- a/org/postgresql/test/jdbc4/ArrayTest.java
+++ b/org/postgresql/test/jdbc4/ArrayTest.java
@@ -21,9 +21,11 @@ public class ArrayTest extends TestCase {
protected void setUp() throws Exception {
_conn = TestUtil.openDB();
+ TestUtil.createTable(_conn, "arrtest", "intarr int[], decarr decimal(2,1)[], strarr text[]");
}
protected void tearDown() throws SQLException {
+ TestUtil.dropTable(_conn, "arrtest");
TestUtil.closeDB(_conn);
}
@@ -146,4 +148,35 @@ public class ArrayTest extends TestCase {
assertEquals(77, out[1][1], 0.00001);
}
+ public void testSetObjectFromJavaArray() throws SQLException {
+ String[] strArray = new String[]{"a","b","c"};
+
+ PreparedStatement pstmt = _conn.prepareStatement("INSERT INTO arrtest(strarr) VALUES (?)");
+
+ // Incorrect, but commonly attempted by many ORMs:
+ try {
+ pstmt.setObject(1, strArray, Types.ARRAY);
+ pstmt.executeUpdate();
+ fail("setObject() with a Java array parameter and Types.ARRAY shouldn't succeed");
+ } catch (org.postgresql.util.PSQLException ex) {
+ // Expected failure.
+ }
+
+ // Also incorrect, but commonly attempted by many ORMs:
+ try {
+ pstmt.setObject(1, strArray);
+ pstmt.executeUpdate();
+ fail("setObject() with a Java array parameter and no Types argument shouldn't succeed");
+ } catch (org.postgresql.util.PSQLException ex) {
+ // Expected failure.
+ }
+
+ // Correct way, though the use of "text" as a type is non-portable.
+ // Only supported for JDK 1.6 and JDBC4
+ Array sqlArray = _conn.createArrayOf("text", strArray);
+ pstmt.setArray(1, sqlArray);
+ pstmt.executeUpdate();
+
+ pstmt.close();
+ }
}
[parent: eb54c2115366]