From ee90c64120460bcc2fa3af0f55213166411ed54a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ad=C3=A1mek?= Date: Thu, 21 May 2020 19:27:22 +0200 Subject: [PATCH] fix(mariadb): enable `bigNumberStrings` toggle Closes #578 --- packages/mariadb/src/MariaDbConnection.ts | 8 +++++++ packages/mysql-base/src/MySqlConnection.ts | 1 + tests/EntityManager.mariadb.test.ts | 25 +++++++++++++++++++++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/packages/mariadb/src/MariaDbConnection.ts b/packages/mariadb/src/MariaDbConnection.ts index 1011ccfe84b5..3eca38d87e64 100644 --- a/packages/mariadb/src/MariaDbConnection.ts +++ b/packages/mariadb/src/MariaDbConnection.ts @@ -1,4 +1,5 @@ import { Connection } from 'mariadb'; +import { MySqlConnectionConfig } from 'knex'; import { MySqlConnection } from '@mikro-orm/mysql-base'; // @ts-ignore @@ -10,6 +11,13 @@ export class MariaDbConnection extends MySqlConnection { this.client = this.createKnexClient(this.getPatchedDialect()); } + getConnectionOptions(): MySqlConnectionConfig { + const ret = super.getConnectionOptions(); + ret.bigNumberStrings = true; + + return ret; + } + private getPatchedDialect() { Dialect.prototype.driverName = 'mariadb'; Dialect.prototype._driver = () => require('mariadb/callback'); diff --git a/packages/mysql-base/src/MySqlConnection.ts b/packages/mysql-base/src/MySqlConnection.ts index cb4e3d8b8b74..add2aa8ea3f2 100644 --- a/packages/mysql-base/src/MySqlConnection.ts +++ b/packages/mysql-base/src/MySqlConnection.ts @@ -27,6 +27,7 @@ export class MySqlConnection extends AbstractSqlConnection { } ret.supportBigNumbers = true; + ret.bigNumberStrings = true; return ret; } diff --git a/tests/EntityManager.mariadb.test.ts b/tests/EntityManager.mariadb.test.ts index 20242e20c2c8..1b74df0c0cfb 100644 --- a/tests/EntityManager.mariadb.test.ts +++ b/tests/EntityManager.mariadb.test.ts @@ -1,5 +1,5 @@ import { v4 } from 'uuid'; -import { Collection, EntityManager, MikroORM, QueryOrder, Reference, wrap } from '@mikro-orm/core'; +import { Collection, Configuration, EntityManager, MikroORM, QueryOrder, Reference, wrap } from '@mikro-orm/core'; import { MariaDbDriver } from '@mikro-orm/mariadb'; import { Author2, Book2, BookTag2, Publisher2, PublisherType } from './entities-sql'; import { initORMMySql, wipeDatabaseMySql } from './bootstrap'; @@ -19,6 +19,29 @@ describe('EntityManagerMariaDb', () => { expect(await orm.isConnected()).toBe(true); }); + test('getConnectionOptions()', async () => { + const config = new Configuration({ + type: 'mysql', + clientUrl: 'mysql://root@127.0.0.1:3308/db_name', + host: '127.0.0.10', + password: 'secret', + user: 'user', + logger: jest.fn(), + forceUtcTimezone: true, + } as any, false); + const driver = new MariaDbDriver(config); + expect(driver.getConnection().getConnectionOptions()).toEqual({ + database: 'db_name', + host: '127.0.0.10', + password: 'secret', + port: 3308, + user: 'user', + timezone: 'Z', + supportBigNumbers: true, + bigNumberStrings: true, + }); + }); + test('should return mariadb driver', async () => { const driver = orm.em.getDriver(); expect(driver).toBeInstanceOf(MariaDbDriver);