From 9d9fa20b3bfaa6a7b5af3b69e078ba74ce9d18de Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 22 May 2013 21:26:20 +0200 Subject: [PATCH] [#2464] Skip tests for some databases --- .../src/org/jooq/test/_/testcases/AliasTests.java | 7 +++++++ jOOQ/src/main/java/org/jooq/DSLContext.java | 2 ++ .../main/java/org/jooq/impl/DeleteQueryImpl.java | 13 ++++++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/AliasTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/AliasTests.java index 97ffeea544..96961ffd33 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/AliasTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/AliasTests.java @@ -193,6 +193,13 @@ extends BaseTest b = TBookToBookStore().as("b"); diff --git a/jOOQ/src/main/java/org/jooq/DSLContext.java b/jOOQ/src/main/java/org/jooq/DSLContext.java index e3d1913081..df87884803 100644 --- a/jOOQ/src/main/java/org/jooq/DSLContext.java +++ b/jOOQ/src/main/java/org/jooq/DSLContext.java @@ -4194,6 +4194,8 @@ public interface DSLContext { * .where(field1.greaterThan(100)) * .execute(); * + *

+ * Some but not all databases support aliased tables in delete statements. */ @Support @Transition( diff --git a/jOOQ/src/main/java/org/jooq/impl/DeleteQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/DeleteQueryImpl.java index 9ac1f5122e..ebd358c96a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DeleteQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DeleteQueryImpl.java @@ -36,6 +36,8 @@ package org.jooq.impl; +import static org.jooq.SQLDialect.MYSQL; + import java.util.Collection; import org.jooq.BindContext; @@ -101,7 +103,16 @@ class DeleteQueryImpl extends AbstractQuery implements DeleteQ public final void toSQL(RenderContext context) { boolean declare = context.declareTables(); - context.keyword("delete from "); + context.keyword("delete "); + + // [#2464] MySQL supports a peculiar multi-table DELETE syntax for aliased tables: + // DELETE t1 FROM my_table AS t1 + if (getFrom() instanceof TableAlias && context.configuration().dialect() == MYSQL) { + context.sql(getFrom()) + .sql(" "); + } + + context.keyword("from "); context.declareTables(true) .sql(getFrom()) .declareTables(declare);