Empty arrays cause SQLExceptions when using Array.getArray

Поиск
Список
Период
Сортировка
От Doug Fields
Тема Empty arrays cause SQLExceptions when using Array.getArray
Дата
Msg-id 5.1.0.14.2.20020220190907.03550840@mail.pexicom.com
обсуждение исходный текст
Список pgsql-jdbc
Hello, I have the following table and values:

=# \d array_test
                               Table "array_test"
  Attribute
|   Type    |                       Modifier
-----------+-----------+-------------------------------------------------------
  id        | integer   | not null default nextval('"array_test_id_seq"'::text)
  first     | integer[] |
  second    | integer[] |
  number    | integer   |
Index: array_test_pkey

=# select * from array_test;
  id |   first    |              second               | number
----+------------+-----------------------------------+--------
   1 | {1,2,3}    | {4,5,6}                           |      7
   2 | {10,20,30} | {40,50,60}                        |     70
   3 | {100,200}  | {300,400,500,600}                 |    700
   4 | {1000}     | {2000,3000,4000,5000,6000}        |   7000
   5 | {}         | {10000,2000,3000,4000,5000,6000}  |  70000
   6 |            | {100000,2000,3000,4000,5000,6000} | 700000
   7 | {9,8,7}    | {6,5,4}                           |   8482
(7 rows)

When I am getting row 5, the ResultSet.getArray().getArray() call fails:

DbArrayTest.doTest: SQLException: Bad Integer
DbArrayTest.doTest: SQLState:     null
DbArrayTest.doTest: VendorError:  0
Bad Integer
         at org.postgresql.jdbc2.ResultSet.toInt(ResultSet.java:1481)
         at org.postgresql.jdbc2.Array.getArray(Array.java:127)
         at org.postgresql.jdbc2.Array.getArray(Array.java:54)
         at com.pexicom.test.DbArrayTest.doTest(DbArrayTest.java:55)

Code snippet in question:

         Array arrayObj;
         int[] array;
             while (rs.next()) {
                 System.out.println("\nColumn 1: " + rs.getInt(1));
                 arrayObj = rs.getArray(2);
                 if (arrayObj != null) {
                     array = (int[])arrayObj.getArray();
                     System.out.println("Column 2: " + arrayObj);

It fails at the arrayObj.getArray() call.

This shouldn't happen; it should return a zero-length array.

Thanks,

Doug


В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Doug Fields
Дата:
Сообщение: [PATCH] Empty arrays cause SQLExceptions when using Array.getArray
Следующее
От: Doug Fields
Дата:
Сообщение: Setting array values in JDBC (Driver 7.2)