From 899f666209f1a12c7963ea728a816a3d1cf8e7bf Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 3 Feb 2020 09:27:53 +0100 Subject: [PATCH] [jOOQ/jOOQ#8105] Eager apply delay foreign keys if necessary If the SET FOREIGN_KEY_CHECKS = 1 command is issued, we must apply delayed foreign keys eagerly. --- jOOQ/src/main/java/org/jooq/impl/Interpreter.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/Interpreter.java b/jOOQ/src/main/java/org/jooq/impl/Interpreter.java index 8b45088310..e5b96f6c8b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Interpreter.java +++ b/jOOQ/src/main/java/org/jooq/impl/Interpreter.java @@ -118,7 +118,7 @@ final class Interpreter { private final MutableSchema defaultSchema; private MutableSchema currentSchema; private boolean delayForeignKeyDeclarations; - private final Deque delayedForeignKeyDeclarations; + private final Deque delayedForeignKeyDeclarations; // Caches private final Map interpretedCatalogs = new HashMap<>(); @@ -1008,8 +1008,12 @@ final class Interpreter { } private final void accept0(SetCommand query) { - if ("foreign_key_checks".equals(query.$name().last().toLowerCase(locale))) + if ("foreign_key_checks".equals(query.$name().last().toLowerCase(locale))) { delayForeignKeyDeclarations = !Convert.convert(query.$value().getValue(), boolean.class); + + if (!delayForeignKeyDeclarations) + applyDelayedForeignKeys(); + } else throw unsupportedQuery(query); }