diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/FetchTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/FetchTests.java index d16888055a..3fc9313b6c 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/FetchTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/FetchTests.java @@ -267,15 +267,20 @@ extends BaseTest extends Query { * You can access data like this *
query.fetchArray(fieldIndex)[recordIndex]
* - * @return The resulting values. + * @return The resulting values. This may be an array type more concrete + * than Object[], depending on whether jOOQ has any + * knowledge about fieldIndex's actual type. * @throws DataAccessException if something went wrong executing the query */ Object[] fetchArray(int fieldIndex) throws DataAccessException; @@ -589,7 +591,9 @@ public interface ResultQuery extends Query { * You can access data like this *
query.fetchArray(fieldName)[recordIndex]
* - * @return The resulting values. + * @return The resulting values. This may be an array type more concrete + * than Object[], depending on whether jOOQ has any + * knowledge about fieldName's actual type. * @throws DataAccessException if something went wrong executing the query */ Object[] fetchArray(String fieldName) throws DataAccessException; diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java index f6d1c5bbc4..18f453b343 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java @@ -444,7 +444,10 @@ abstract class AbstractResultQuery extends AbstractQuery imple @Override public final Object[] fetchArray(int fieldIndex) { - return fetch(fieldIndex).toArray(); + Result fetch = fetch(); + Class type = fetch.getField(fieldIndex).getType(); + List list = fetch.getValues(fieldIndex); + return list.toArray((Object[]) Array.newInstance(type, list.size())); } @SuppressWarnings("unchecked") @@ -461,7 +464,10 @@ abstract class AbstractResultQuery extends AbstractQuery imple @Override public final Object[] fetchArray(String fieldName) { - return fetch(fieldName).toArray(); + Result fetch = fetch(); + Class type = fetch.getField(fieldName).getType(); + List list = fetch.getValues(fieldName); + return list.toArray((Object[]) Array.newInstance(type, list.size())); } @SuppressWarnings("unchecked")