From e8ea2d651addb3f211e0629cc5b0c04f9baf05eb Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 12 May 2023 15:58:05 +0200 Subject: [PATCH] [jOOQ/jOOQ#10234] Unable to rename table with qualified table name on Oracle dialect --- .../java/org/jooq/impl/AlterTableImpl.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java index fb23241046..0d182b4ae0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java @@ -233,7 +233,7 @@ implements private static final Set NO_SUPPORT_IF_NOT_EXISTS_COLUMN = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD); private static final Set SUPPORT_RENAME_COLUMN = SQLDialect.supportedBy(DERBY); private static final Set SUPPORT_RENAME_TABLE = SQLDialect.supportedBy(DERBY); - private static final Set NO_SUPPORT_RENAME_QUALIFIED_TABLE = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB); + private static final Set NO_SUPPORT_RENAME_QUALIFIED_TABLE = SQLDialect.supportedBy(DERBY, POSTGRES, YUGABYTEDB); private static final Set NO_SUPPORT_ALTER_TYPE_AND_NULL = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB); private static final Set NO_SUPPORT_DROP_CONSTRAINT = SQLDialect.supportedBy(MARIADB, MYSQL); private static final Set REQUIRE_REPEAT_ADD_ON_MULTI_ALTER = SQLDialect.supportedBy(FIREBIRD, MARIADB, MYSQL, POSTGRES, YUGABYTEDB); @@ -1198,16 +1198,17 @@ implements } else if (renameTo != null) { boolean qualify = ctx.qualify(); + boolean unqualify = unqualifyRenameTo(ctx); ctx.start(ALTER_TABLE_RENAME); - if (NO_SUPPORT_RENAME_QUALIFIED_TABLE.contains(ctx.dialect())) + if (unqualify) ctx.qualify(false); ctx.visit(renameObject || renameTable ? K_TO : K_RENAME_TO).sql(' ') .visit(renameTo); - if (NO_SUPPORT_RENAME_QUALIFIED_TABLE.contains(ctx.dialect())) + if (unqualify) ctx.qualify(qualify); ctx.end(ALTER_TABLE_RENAME); @@ -1693,6 +1694,14 @@ implements ctx.formatIndentEnd(); } + private final boolean unqualifyRenameTo(Context ctx) { + return NO_SUPPORT_RENAME_QUALIFIED_TABLE.contains(ctx.dialect()) + && renameTo.getQualifiedName().qualified() + + // [#10234] Omit qualification only for same-schema qualified renames + && renameTo.getQualifiedName().qualifier().equals(table.getQualifiedName().qualifier()); + } + private final Keyword addColumnKeyword(Context ctx) { switch (ctx.family()) { @@ -1843,6 +1852,9 @@ implements + + +