[libpostgresql-jdbc-java] 02/04: Allow updatable ResultSets to update arrays. While we still haven't implemented updateArray, updateObject with an Array should work. Just need to add a mapping for Types.ARRAY for converting the Array to the underlying ResultSet format.
Emmanuel Bourg
ebourg-guest at moszumanska.debian.org
Mon Jan 9 10:19:29 UTC 2017
This is an automated email from the git hooks/post-receive script.
ebourg-guest pushed a commit to tag REL8_0_319
in repository libpostgresql-jdbc-java.
commit 14c0041f3b355b4cd47da4cc0db430f4d2f03ae9
Author: Kris Jurka <books at ejurka.com>
Date: Mon Apr 16 16:37:04 2007 +0000
Allow updatable ResultSets to update arrays. While we still haven't
implemented updateArray, updateObject with an Array should work.
Just need to add a mapping for Types.ARRAY for converting the Array
to the underlying ResultSet format.
As reported by vasylenko.
---
org/postgresql/jdbc2/AbstractJdbc2ResultSet.java | 3 +-
.../test/jdbc2/UpdateableResultTest.java | 35 ++++++++++++++++++++--
2 files changed, 35 insertions(+), 3 deletions(-)
diff --git a/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java b/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java
index d9bf7a0..2ba74d7 100644
--- a/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java
+++ b/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java
@@ -3,7 +3,7 @@
* Copyright (c) 2003-2005, PostgreSQL Global Development Group
*
* IDENTIFICATION
-* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java,v 1.71.2.7 2005/12/04 21:41:35 jurka Exp $
+* $PostgreSQL: pgjdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java,v 1.71.2.8 2006/08/06 18:11:52 jurka Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1721,6 +1721,7 @@ public abstract class AbstractJdbc2ResultSet implements BaseResultSet, org.postg
case Types.NUMERIC:
case Types.REAL:
case Types.TINYINT:
+ case Types.ARRAY:
case Types.OTHER:
rowBuffer[columnIndex] = connection.encodeString(String.valueOf( valueObject));
break;
diff --git a/org/postgresql/test/jdbc2/UpdateableResultTest.java b/org/postgresql/test/jdbc2/UpdateableResultTest.java
index 51912e6..33d18a4 100644
--- a/org/postgresql/test/jdbc2/UpdateableResultTest.java
+++ b/org/postgresql/test/jdbc2/UpdateableResultTest.java
@@ -3,7 +3,7 @@
* Copyright (c) 2001-2005, PostgreSQL Global Development Group
*
* IDENTIFICATION
-* $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java,v 1.19.2.2 2005/09/29 22:12:16 jurka Exp $
+* $PostgreSQL: pgjdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java,v 1.19.2.3 2007/01/05 00:34:28 jurka Exp $
*
*-------------------------------------------------------------------------
*/
@@ -33,7 +33,7 @@ public class UpdateableResultTest extends TestCase
protected void setUp() throws Exception
{
con = TestUtil.openDB();
- TestUtil.createTable(con, "updateable", "id int primary key, name text, notselected text, ts timestamp with time zone", true);
+ TestUtil.createTable(con, "updateable", "id int primary key, name text, notselected text, ts timestamp with time zone, intarr int[]", true);
TestUtil.createTable(con, "second", "id1 int primary key, name1 text");
TestUtil.createTable(con, "stream", "id int primary key, asi text, chr text, bin bytea");
@@ -440,4 +440,35 @@ public class UpdateableResultTest extends TestCase
fail("Should have thrown an exception on bad column index.");
} catch (SQLException sqle) { }
}
+
+ public void testArray() throws SQLException {
+ Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
+ stmt.executeUpdate("INSERT INTO updateable (id, intarr) VALUES (1, '{1,2,3}'::int4[])");
+ ResultSet rs = stmt.executeQuery("SELECT id, intarr FROM updateable");
+ assertTrue(rs.next());
+ rs.updateObject(2, rs.getArray(2));
+ rs.updateRow();
+
+ Array arr = rs.getArray(2);
+ assertEquals(Types.INTEGER, arr.getBaseType());
+ int intarr[] = (int[])arr.getArray();
+ assertEquals(3, intarr.length);
+ assertEquals(1, intarr[0]);
+ assertEquals(2, intarr[1]);
+ assertEquals(3, intarr[2]);
+ rs.close();
+
+ rs = stmt.executeQuery("SELECT id,intarr FROM updateable");
+ assertTrue(rs.next());
+ arr = rs.getArray(2);
+ assertEquals(Types.INTEGER, arr.getBaseType());
+ intarr = (int[])arr.getArray();
+ assertEquals(3, intarr.length);
+ assertEquals(1, intarr[0]);
+ assertEquals(2, intarr[1]);
+ assertEquals(3, intarr[2]);
+
+ rs.close();
+ stmt.close();
+ }
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/libpostgresql-jdbc-java.git
More information about the pkg-java-commits
mailing list