From 39bb771e1be1a659d986c020ad651a0eeb339ed6 Mon Sep 17 00:00:00 2001 From: Knut Wannheden Date: Wed, 9 Oct 2019 15:40:54 +0200 Subject: [PATCH] [jOOQ/jOOQ#9343] Fix UDTDataType#getQualifiedName() `UDTDataType#getQualifiedName()` returned a wrong result for types defined in the default schema (i.e. the schema with no name). In SQL the type name was rendered as `".my_type"` rather than simply `"my_type"`. --- .../main/java/org/jooq/impl/TableDataType.java | 16 ++++++++++------ .../src/main/java/org/jooq/impl/UDTDataType.java | 16 ++++++++++------ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/TableDataType.java b/jOOQ/src/main/java/org/jooq/impl/TableDataType.java index ce317799ab..870e599edc 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableDataType.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableDataType.java @@ -37,6 +37,7 @@ */ package org.jooq.impl; +import org.jooq.Name; import org.jooq.Record; import org.jooq.SQLDialect; import org.jooq.Table; @@ -57,14 +58,17 @@ final class TableDataType extends DefaultDataType { } private static String getQualifiedName(Table table) { + Name name = table.getQualifiedName(); + if (!name.qualified()) + return name.first(); + StringBuilder sb = new StringBuilder(); - - if (table.getSchema() != null) { - sb.append(table.getSchema().getName()); - sb.append("."); + Name[] parts = name.parts(); + for (int i = 0; i < parts.length; i++) { + sb.append(parts[i].first()); + if (i < parts.length - 1) + sb.append('.'); } - - sb.append(table.getName()); return sb.toString(); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/UDTDataType.java b/jOOQ/src/main/java/org/jooq/impl/UDTDataType.java index 37f1ea6469..8b9ea83e10 100644 --- a/jOOQ/src/main/java/org/jooq/impl/UDTDataType.java +++ b/jOOQ/src/main/java/org/jooq/impl/UDTDataType.java @@ -37,6 +37,7 @@ */ package org.jooq.impl; +import org.jooq.Name; import org.jooq.SQLDialect; import org.jooq.UDT; import org.jooq.UDTRecord; @@ -56,14 +57,17 @@ final class UDTDataType> extends DefaultDataType { } private static String getQualifiedName(UDT udt) { + Name name = udt.getQualifiedName(); + if (!name.qualified()) + return name.first(); + StringBuilder sb = new StringBuilder(); - - if (udt.getSchema() != null) { - sb.append(udt.getSchema().getName()); - sb.append("."); + Name[] parts = name.parts(); + for (int i = 0; i < parts.length; i++) { + sb.append(parts[i].first()); + if (i < parts.length - 1) + sb.append('.'); } - - sb.append(udt.getName()); return sb.toString(); } }