From 4b1f8101e658ff41961c8a8b274e087221eabffb Mon Sep 17 00:00:00 2001 From: Jamie Howard Date: Wed, 16 Nov 2022 09:34:08 +0000 Subject: [PATCH] fix(entity-manager): use db.connection for .raw() chore(database): revert getConnection() --- .../lib/entity-manager/regular-relations.js | 17 +++++++++++------ packages/core/database/lib/index.js | 4 +++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/core/database/lib/entity-manager/regular-relations.js b/packages/core/database/lib/entity-manager/regular-relations.js index a21ca847fd..282a7f7139 100644 --- a/packages/core/database/lib/entity-manager/regular-relations.js +++ b/packages/core/database/lib/entity-manager/regular-relations.js @@ -226,8 +226,7 @@ const cleanOrderColumns = async ({ id, attribute, db, inverseRelIds, transaction // https://github.com/knex/knex/issues/2504 switch (strapi.db.dialect.client) { case 'mysql': - await db - .getConnection() + await db.connection .raw( `UPDATE ?? as a, @@ -242,9 +241,14 @@ const cleanOrderColumns = async ({ id, attribute, db, inverseRelIds, transaction ) .transacting(trx); break; - default: - await db - .getConnection() + default: { + const schemaName = db.connection.getSchemaName(); + let joinTableName = joinTable.name; + if (schemaName) { + joinTableName = `${schemaName}.${joinTableName}`; + } + + await db.connection .raw( `UPDATE ?? as a SET ${update.join(', ')} @@ -254,9 +258,10 @@ const cleanOrderColumns = async ({ id, attribute, db, inverseRelIds, transaction WHERE ${where.join(' OR ')} ) AS b WHERE b.id = a.id`, - [joinTable.name, ...updateBinding, ...selectBinding, joinTable.name, ...whereBinding] + [joinTableName, ...updateBinding, ...selectBinding, joinTableName, ...whereBinding] ) .transacting(trx); + } /* `UPDATE :joinTable: as a SET :orderColumn: = b.src_order, :inverseOrderColumn: = b.inv_order diff --git a/packages/core/database/lib/index.js b/packages/core/database/lib/index.js index ee9060ce28..3e003fcbf7 100644 --- a/packages/core/database/lib/index.js +++ b/packages/core/database/lib/index.js @@ -48,7 +48,9 @@ class Database { } getConnection(tableName) { - return tableName ? this.connection(tableName) : this.connection; + const schema = this.connection.getSchemaName(); + const connection = tableName ? this.connection(tableName) : this.connection; + return schema ? connection.withSchema(schema) : connection; } getSchemaConnection(trx = this.connection) {