From 7f49f87f276c878f486766144c38a6f6fd08a2e9 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Mon, 5 Aug 2024 16:15:15 +0100 Subject: [PATCH] Oracle fix PR comments. --- packages/backend-core/src/sql/sql.ts | 2 ++ packages/server/src/api/routes/tests/search.spec.ts | 3 --- packages/server/src/integrations/oracle.ts | 7 +++++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/backend-core/src/sql/sql.ts b/packages/backend-core/src/sql/sql.ts index bafaef40e4..8ab8fea20e 100644 --- a/packages/backend-core/src/sql/sql.ts +++ b/packages/backend-core/src/sql/sql.ts @@ -682,6 +682,8 @@ class InternalBuilder { const direction = value.direction === SortOrder.ASCENDING ? "asc" : "desc" + // TODO: figure out a way to remove this conditional, not relying on + // the defaults of each datastore. let nulls: "first" | "last" | undefined = undefined if ( this.client === SqlClient.POSTGRES || diff --git a/packages/server/src/api/routes/tests/search.spec.ts b/packages/server/src/api/routes/tests/search.spec.ts index 7d7fa7b1e0..8a1669d34c 100644 --- a/packages/server/src/api/routes/tests/search.spec.ts +++ b/packages/server/src/api/routes/tests/search.spec.ts @@ -1596,9 +1596,6 @@ describe.each([ // Our bigints are int64s in most datasources. let BIG = "9223372036854775807" - if (name === DatabaseName.ORACLE) { - // BIG = "9223372036854775808" - } beforeAll(async () => { table = await createTable({ diff --git a/packages/server/src/integrations/oracle.ts b/packages/server/src/integrations/oracle.ts index d1c0978b89..95e4943c7a 100644 --- a/packages/server/src/integrations/oracle.ts +++ b/packages/server/src/integrations/oracle.ts @@ -500,6 +500,13 @@ class OracleIntegration extends Sql implements DatasourcePlus { password: this.config.password, connectString, } + + // We set the timezone of the connection to match the timezone of the + // Budibase server, this is because several column types (e.g. time-only + // timestamps) do not store timezone information, so to avoid storing one + // time and getting a different one back we need to make sure the timezone + // of the server matches the timezone of the database. There's an assumption + // here that the server is running in the same timezone as the database. const tz = Intl.DateTimeFormat().resolvedOptions().timeZone const connection = await oracledb.getConnection(attributes) await connection.execute(`ALTER SESSION SET TIME_ZONE = '${tz}'`)