Index: org/postgresql/jdbc2/AbstractJdbc2Array.java =================================================================== RCS file: /cvsroot/jdbc/pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Array.java,v retrieving revision 1.28 diff -u -r1.28 AbstractJdbc2Array.java --- org/postgresql/jdbc2/AbstractJdbc2Array.java 27 Sep 2011 11:15:23 -0000 1.28 +++ org/postgresql/jdbc2/AbstractJdbc2Array.java 27 Sep 2011 16:12:35 -0000 @@ -183,7 +183,10 @@ dims[d] = ByteConverter.int4(fieldBytes, pos); pos += 4; /*int lbound = ByteConverter.int4(fieldBytes, pos);*/ pos += 4; } - if (count > 0 && dimensions > 0) { + if (dimensions == 0) { + return java.lang.reflect.Array.newInstance(elementOidToClass(elementOid), 0); + } + if (count > 0) { dims[0] = Math.min(count, dims[0]); } Object arr = java.lang.reflect.Array.newInstance(elementOidToClass(elementOid), dims); @@ -258,7 +261,9 @@ } Vector rows = new Vector(); Field[] fields = new Field[2]; - storeValues(rows, fields, elementOid, dims, pos, 0, index); + if (dimensions > 0) { + storeValues(rows, fields, elementOid, dims, pos, 0, index); + } BaseStatement stat = (BaseStatement) connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); return stat.createDriverResultSet(fields, rows); } Index: org/postgresql/test/jdbc4/ArrayTest.java =================================================================== RCS file: /cvsroot/jdbc/pgjdbc/org/postgresql/test/jdbc4/ArrayTest.java,v retrieving revision 1.5 diff -u -r1.5 ArrayTest.java --- org/postgresql/test/jdbc4/ArrayTest.java 2 Aug 2011 13:50:29 -0000 1.5 +++ org/postgresql/test/jdbc4/ArrayTest.java 27 Sep 2011 16:12:35 -0000 @@ -107,6 +107,9 @@ Integer out[] = (Integer [])arr.getArray(); assertEquals(0, out.length); + + ResultSet arrRs = arr.getResultSet(); + assertFalse(arrRs.next()); } public void testCreateArrayWithoutServer() throws SQLException {