From 7d26f8423587ab3d9a1591ff6ae8185567fa6d2b Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 20 Nov 2019 15:25:34 +0100 Subject: [PATCH] [jOOQ/jOOQ#8528] Interpret TRUNCATE --- .../main/java/org/jooq/impl/DDLInterpreter.java | 14 ++++++++++++++ jOOQ/src/main/java/org/jooq/impl/TruncateImpl.java | 10 ++++++++++ 2 files changed, 24 insertions(+) diff --git a/jOOQ/src/main/java/org/jooq/impl/DDLInterpreter.java b/jOOQ/src/main/java/org/jooq/impl/DDLInterpreter.java index 503fc2b9ac..232eeda883 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DDLInterpreter.java +++ b/jOOQ/src/main/java/org/jooq/impl/DDLInterpreter.java @@ -141,6 +141,8 @@ final class DDLInterpreter { accept0((AlterTableImpl) query); else if (query instanceof DropTableImpl) accept0((DropTableImpl) query); + else if (query instanceof TruncateImpl) + accept0((TruncateImpl) query); else if (query instanceof CreateViewImpl) accept0((CreateViewImpl) query); @@ -591,6 +593,18 @@ final class DDLInterpreter { drop(schema.tables, existing, query.$cascade()); } + private final void accept0(TruncateImpl query) { + Table table = query.$table(); + + MutableSchema schema = getSchema(table.getSchema()); + MutableTable existing = schema.table(table); + + if (existing == null) + throw tableNotExists(table); + else if (!existing.options.type().isTable()) + throw objectNotTable(table); + } + private final void accept0(CreateViewImpl query) { Table table = query.$view(); MutableSchema schema = getSchema(table.getSchema()); diff --git a/jOOQ/src/main/java/org/jooq/impl/TruncateImpl.java b/jOOQ/src/main/java/org/jooq/impl/TruncateImpl.java index 91d6b040cc..bd9aef3b76 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TruncateImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/TruncateImpl.java @@ -82,6 +82,12 @@ final class TruncateImpl extends AbstractRowCountQuery impleme this.table = table; } + final Table $table() { return table; } + + // ------------------------------------------------------------------------ + // XXX: DSL API + // ------------------------------------------------------------------------ + @Override public final TruncateFinalStep cascade() { cascade = true; @@ -106,6 +112,10 @@ final class TruncateImpl extends AbstractRowCountQuery impleme return this; } + // ------------------------------------------------------------------------ + // XXX: QueryPart API + // ------------------------------------------------------------------------ + @Override public final void accept(Context ctx) { switch (ctx.family()) {