From ccea1d181b39c06e382b51a62f47ca4ace869445 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 19 Nov 2025 08:36:10 +0100 Subject: [PATCH] [jOOQ/jOOQ#19247] Table names may conflict with enum / domain names --- .../java/org/jooq/meta/DefaultDataTypeDefinition.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/DefaultDataTypeDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/DefaultDataTypeDefinition.java index 09a1791074..0c39062d14 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/DefaultDataTypeDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/DefaultDataTypeDefinition.java @@ -302,8 +302,13 @@ public class DefaultDataTypeDefinition implements DataTypeDefinition { if (userType == null) return false; - // [#19247] In PostgreSQL, tables expose types that can be used as UDTs as well in SQL - return getDatabase().getTable(schema, userType) != null; + // [#19247] In PostgreSQL, tables expose types that can be used as UDTs as well in SQL. + // Some RDBMS have multiple namespaces per object type, e.g. a domain S.D may conflict with a table S.D + return getDatabase().getDomain(schema, userType) == null + && getDatabase().getEnum(schema, userType) == null + && getDatabase().getUDT(schema, userType) == null + && getDatabase().getArray(schema, userType) == null + && getDatabase().getTable(schema, userType) != null; } @Override