From bc797238aadfc5ea40d25763691362b4cef7f741 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Fri, 2 Aug 2024 17:17:33 +0100 Subject: [PATCH] row.spec.ts passing in full --- packages/backend-core/src/sql/sql.ts | 10 +++++++++- packages/server/src/api/routes/tests/row.spec.ts | 13 +++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/packages/backend-core/src/sql/sql.ts b/packages/backend-core/src/sql/sql.ts index aa5d4b7796..bafaef40e4 100644 --- a/packages/backend-core/src/sql/sql.ts +++ b/packages/backend-core/src/sql/sql.ts @@ -478,7 +478,15 @@ class InternalBuilder { } }, (key: string[], array) => { - query = query[fnc](key, Array.isArray(array) ? array : [array]) + if (this.client === SqlClient.ORACLE) { + const keyStr = `(${key.map(k => this.convertClobs(k)).join(",")})` + const binding = `(${array + .map((a: any) => `(${new Array(a.length).fill("?").join(",")})`) + .join(",")})` + query = query.whereRaw(`${keyStr} IN ${binding}`, array.flat()) + } else { + query = query[fnc](key, Array.isArray(array) ? array : [array]) + } } ) } diff --git a/packages/server/src/api/routes/tests/row.spec.ts b/packages/server/src/api/routes/tests/row.spec.ts index 770a60822d..cf94eb9f13 100644 --- a/packages/server/src/api/routes/tests/row.spec.ts +++ b/packages/server/src/api/routes/tests/row.spec.ts @@ -67,11 +67,11 @@ async function waitForEvent( } describe.each([ - // ["internal", undefined], - // [DatabaseName.POSTGRES, getDatasource(DatabaseName.POSTGRES)], - // [DatabaseName.MYSQL, getDatasource(DatabaseName.MYSQL)], - // [DatabaseName.SQL_SERVER, getDatasource(DatabaseName.SQL_SERVER)], - // [DatabaseName.MARIADB, getDatasource(DatabaseName.MARIADB)], + ["internal", undefined], + [DatabaseName.POSTGRES, getDatasource(DatabaseName.POSTGRES)], + [DatabaseName.MYSQL, getDatasource(DatabaseName.MYSQL)], + [DatabaseName.SQL_SERVER, getDatasource(DatabaseName.SQL_SERVER)], + [DatabaseName.MARIADB, getDatasource(DatabaseName.MARIADB)], [DatabaseName.ORACLE, getDatasource(DatabaseName.ORACLE)], ])("/rows (%s)", (providerType, dsProvider) => { const isInternal = dsProvider === undefined @@ -1409,9 +1409,10 @@ describe.each([ await assertRowUsage(rowUsage + 3) }) - // Upserting isn't yet supported in MSSQL, see: + // Upserting isn't yet supported in MSSQL / Oracle, see: // https://github.com/knex/knex/pull/6050 !isMSSQL && + !isOracle && it("should be able to update existing rows with bulkImport", async () => { const table = await config.api.table.save( saveTableRequest({