From 43f42acd314dfa79450d40df27eba7d12fa7977d Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 2 Mar 2023 10:32:47 +0100 Subject: [PATCH] [jOOQ/jOOQ#14736] PostgreSQL Numeric array type with precision/scale too large in generated code --- .../org/jooq/meta/postgres/PostgresTableDefinition.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java index bef287eb88..c70a434d11 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java @@ -46,6 +46,7 @@ import static org.jooq.impl.DSL.greatest; import static org.jooq.impl.DSL.inline; import static org.jooq.impl.DSL.lower; import static org.jooq.impl.DSL.name; +import static org.jooq.impl.DSL.nullif; import static org.jooq.impl.DSL.nvl; import static org.jooq.impl.DSL.substring; import static org.jooq.impl.DSL.when; @@ -104,7 +105,7 @@ public class PostgresTableDefinition extends AbstractTableDefinition { .else_(COLUMNS.DATA_TYPE); Field udtSchema = COLUMNS.UDT_SCHEMA; - // [#8067] [#11658] [#13919] + // [#8067] [#11658] [#13919] [#14736] // A more robust / sophisticated decoding might be available via // - information_schema._pg_char_max_length // - information_schema._pg_numeric_precision @@ -129,14 +130,14 @@ public class PostgresTableDefinition extends AbstractTableDefinition { ) .when( COLUMNS.UDT_NAME.eq(inline("_numeric")), - PG_ATTRIBUTE.ATTTYPMOD.sub(inline(4)).shr(inline(16)).bitAnd(inline(65535)) + nullif(PG_ATTRIBUTE.ATTTYPMOD, inline(-1)).sub(inline(4)).shr(inline(16)).bitAnd(inline(65535)) ) ); Field scale = nvl( COLUMNS.NUMERIC_SCALE, when( COLUMNS.UDT_NAME.eq(inline("_numeric")), - PG_ATTRIBUTE.ATTTYPMOD.sub(inline(4)).bitAnd(inline(65535)) + nullif(PG_ATTRIBUTE.ATTTYPMOD, inline(-1)).sub(inline(4)).bitAnd(inline(65535)) ) );