This is an automated email from the git hooks/post-receive script. ebourg-guest pushed a commit to annotated tag REL9_3_1100 in repository libpostgresql-jdbc-java.
commit 471a09ee31f92f04813b275402fbf5a8c6b16bf0 Author: Kris Jurka <[email protected]> Date: Tue Mar 26 05:33:45 2013 -0700 Lookup correct array delimiter in Connection.createArrayOf. The old code had hardcoded a comma, but that's not true for all datatypes. Identification and fix by sumo in pull request #49, testcase by me. --- org/postgresql/jdbc4/AbstractJdbc4Connection.java | 9 +++++---- org/postgresql/test/jdbc4/ArrayTest.java | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/org/postgresql/jdbc4/AbstractJdbc4Connection.java b/org/postgresql/jdbc4/AbstractJdbc4Connection.java index d25710a..817e457 100644 --- a/org/postgresql/jdbc4/AbstractJdbc4Connection.java +++ b/org/postgresql/jdbc4/AbstractJdbc4Connection.java @@ -82,29 +82,30 @@ abstract class AbstractJdbc4Connection extends org.postgresql.jdbc3g.AbstractJdb if (oid == Oid.UNSPECIFIED) throw new PSQLException(GT.tr("Unable to find server array type for provided name {0}.", typeName), PSQLState.INVALID_NAME); + char delim = getTypeInfo().getArrayDelimiter(oid); StringBuffer sb = new StringBuffer(); - appendArray(sb, elements); + appendArray(sb, elements, delim); // This will not work once we have a JDBC 5, // but it'll do for now. return new Jdbc4Array(this, oid, sb.toString()); } - private static void appendArray(StringBuffer sb, Object elements) + private static void appendArray(StringBuffer sb, Object elements, char delim) { sb.append('{'); int nElements = java.lang.reflect.Array.getLength(elements); for (int i=0; i<nElements; i++) { if (i > 0) { - sb.append(','); + sb.append(delim); } Object o = java.lang.reflect.Array.get(elements, i); if (o == null) { sb.append("NULL"); } else if (o.getClass().isArray()) { - appendArray(sb, o); + appendArray(sb, o, delim); } else { String s = o.toString(); AbstractJdbc2Array.escapeArrayElement(sb, s); diff --git a/org/postgresql/test/jdbc4/ArrayTest.java b/org/postgresql/test/jdbc4/ArrayTest.java index f852aee..ae23d5c 100644 --- a/org/postgresql/test/jdbc4/ArrayTest.java +++ b/org/postgresql/test/jdbc4/ArrayTest.java @@ -10,6 +10,7 @@ package org.postgresql.test.jdbc4; import java.sql.*; import junit.framework.TestCase; import org.postgresql.test.TestUtil; +import org.postgresql.geometric.PGbox; public class ArrayTest extends TestCase { @@ -70,6 +71,25 @@ public class ArrayTest extends TestCase { assertEquals("\"\\'z", out[1][1]); } + public void testCreateArrayWithNonStandardDelimiter() throws SQLException { + PGbox in[] = new PGbox[2]; + in[0] = new PGbox(1, 2, 3, 4); + in[1] = new PGbox(5, 6, 7, 8); + + PreparedStatement pstmt = _conn.prepareStatement("SELECT ?::box[]"); + pstmt.setArray(1, _conn.createArrayOf("box", in)); + ResultSet rs = pstmt.executeQuery(); + assertTrue(rs.next()); + Array arr = rs.getArray(1); + ResultSet arrRs = arr.getResultSet(); + assertTrue(arrRs.next()); + assertEquals(in[0], arrRs.getObject(2)); + assertTrue(arrRs.next()); + assertEquals(in[1], arrRs.getObject(2)); + assertFalse(arrRs.next()); + } + + public void testCreateArrayOfNull() throws SQLException { if (!TestUtil.haveMinimumServerVersion(_conn, "8.2")) return; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/libpostgresql-jdbc-java.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

