diff --git a/lib/queryBuilder/transformations/WrapMysqlModifySubqueryTransformation.js b/lib/queryBuilder/transformations/WrapMysqlModifySubqueryTransformation.js index cd2caf2d6..45753f53d 100644 --- a/lib/queryBuilder/transformations/WrapMysqlModifySubqueryTransformation.js +++ b/lib/queryBuilder/transformations/WrapMysqlModifySubqueryTransformation.js @@ -2,6 +2,8 @@ const { QueryTransformation } = require('./QueryTransformation'); const { isMySql } = require('../../utils/knexUtils'); +const { once } = require('../../utils/objectUtils'); +const getJoinBuilder = once(() => require('../JoinBuilder').JoinBuilder); /** * Mysql doesn't allow queries like this: @@ -30,6 +32,13 @@ class WrapMysqlModifySubqueryTransformation extends QueryTransformation { return query; } + // This transformation should not apply to join builder, otherwise it causes: + // "TypeError: parentQuery.isUpdate is not a function" + const JoinBuilder = getJoinBuilder(); + if (parentQuery instanceof JoinBuilder) { + return query; + } + // This transformation only applies to update and delete queries. if (!parentQuery.isUpdate() && !parentQuery.isDelete()) { return query;