From bb1b3c2c6ece9614535817410bc703b51a167d6a Mon Sep 17 00:00:00 2001 From: Alexandre Bodin Date: Thu, 16 Sep 2021 22:18:13 +0200 Subject: [PATCH] Run sub queries for update and delete with joins --- .../core/database/lib/query/query-builder.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/core/database/lib/query/query-builder.js b/packages/core/database/lib/query/query-builder.js index e21148141b..27d26290d2 100644 --- a/packages/core/database/lib/query/query-builder.js +++ b/packages/core/database/lib/query/query-builder.js @@ -191,6 +191,18 @@ const createQueryBuilder = (uid, db) => { this.select('*'); } + if (['delete', 'update'].includes(state.type) && state.joins.length > 0) { + this.select('id'); + const subQB = this.getKnexQuery(); + + const nestedSubQuery = db.connection.select('id').from(subQB.as('subQuery')); + + return db + .connection(tableName) + [state.type]() + .whereIn('id', nestedSubQuery); + } + switch (state.type) { case 'select': { if (state.select.length === 0) { @@ -223,12 +235,14 @@ const createQueryBuilder = (uid, db) => { } case 'update': { qb.update(state.data); - break; } case 'delete': { qb.del(); - + break; + } + case 'truncate': { + db.truncate(); break; } }