From d50c937c68bf4174c69e0fadd4ada6de99ca0089 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 23 Jul 2024 11:39:50 +0100 Subject: [PATCH] use oracle coalesce --- packages/backend-core/src/sql/sql.ts | 14 ++++++++------ packages/server/src/integrations/tests/sql.spec.ts | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/backend-core/src/sql/sql.ts b/packages/backend-core/src/sql/sql.ts index 8dfe687239..a67da7bc10 100644 --- a/packages/backend-core/src/sql/sql.ts +++ b/packages/backend-core/src/sql/sql.ts @@ -436,9 +436,10 @@ class InternalBuilder { [value] ) } else if (this.client === SqlClient.ORACLE) { - query = query[fnc](`${quotedIdentifier(this.client, key)} = ?`, [ - value, - ]) + query = query[fnc]( + `COALESCE(${quotedIdentifier(this.client, key)}, -1) = ?`, + [value] + ) } else { query = query[fnc]( `COALESCE(${quotedIdentifier(this.client, key)} = ?, FALSE)`, @@ -459,9 +460,10 @@ class InternalBuilder { [value] ) } else if (this.client === SqlClient.ORACLE) { - query = query[fnc](`${quotedIdentifier(this.client, key)} != ?`, [ - value, - ]) + query = query[fnc]( + `COALESCE(${quotedIdentifier(this.client, key)}, -1) != ?`, + [value] + ) } else { query = query[fnc]( `COALESCE(${quotedIdentifier(this.client, key)} != ?, TRUE)`, diff --git a/packages/server/src/integrations/tests/sql.spec.ts b/packages/server/src/integrations/tests/sql.spec.ts index 7379c25b74..3b8bf1e8fd 100644 --- a/packages/server/src/integrations/tests/sql.spec.ts +++ b/packages/server/src/integrations/tests/sql.spec.ts @@ -239,7 +239,7 @@ describe("SQL query builder", () => { expect(query).toEqual({ bindings: ["John", limit, 5000], - sql: `select * from (select * from (select * from (select * from "test" where "test"."name" = :1 order by "test"."id" asc) where rownum <= :2) "test" order by "test"."id" asc) where rownum <= :3`, + sql: `select * from (select * from (select * from (select * from "test" where COALESCE("test"."name", -1) = :1 order by "test"."id" asc) where rownum <= :2) "test" order by "test"."id" asc) where rownum <= :3`, }) }) @@ -256,7 +256,7 @@ describe("SQL query builder", () => { expect(query).toEqual({ bindings: ["John", limit, 5000], - sql: `select * from (select * from (select * from (select * from "test" where "test"."name" != :1 order by "test"."id" asc) where rownum <= :2) "test" order by "test"."id" asc) where rownum <= :3`, + sql: `select * from (select * from (select * from (select * from "test" where COALESCE("test"."name", -1) != :1 order by "test"."id" asc) where rownum <= :2) "test" order by "test"."id" asc) where rownum <= :3`, }) }) })