diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/RoutineAndUDTTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/RoutineAndUDTTests.java index 083b774414..c990442e4f 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/RoutineAndUDTTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/RoutineAndUDTTests.java @@ -881,6 +881,10 @@ extends BaseTest result; + // [#1184] Test data type + assertTrue(TArrays_NUMBER_R().getDataType().isArray()); + assertFalse(TBook_ID().getDataType().isArray()); + // An empty array // -------------- ArrayRecord array = newNUMBER_R(); @@ -990,6 +994,10 @@ extends BaseTest table; Integer[] array; + // [#1184] Test data type + assertTrue(TArrays_NUMBER().getDataType().isArray()); + assertFalse(TBook_ID().getDataType().isArray()); + // Cross join the array table with the unnested string array value // --------------------------------------------------------------- diff --git a/jOOQ/src/main/java/org/jooq/DataType.java b/jOOQ/src/main/java/org/jooq/DataType.java index 272acf4a35..5645230ea2 100644 --- a/jOOQ/src/main/java/org/jooq/DataType.java +++ b/jOOQ/src/main/java/org/jooq/DataType.java @@ -210,4 +210,9 @@ public interface DataType extends Serializable { * */ boolean isBinary(); + + /** + * Whether this data type is an array type. + */ + boolean isArray(); } diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java index f3bc537a34..0983a8c9b4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java @@ -454,6 +454,12 @@ public abstract class AbstractDataType implements DataType { return type == byte[].class; } + @Override + public final boolean isArray() { + return ArrayRecord.class.isAssignableFrom(type) + || (!isBinary() && type.isArray()); + } + // ------------------------------------------------------------------------ // The Object API // ------------------------------------------------------------------------