diff --git a/integration-tests/__tests__/query.spec.js b/integration-tests/__tests__/query.spec.js index b8afeadd4..933558f44 100644 --- a/integration-tests/__tests__/query.spec.js +++ b/integration-tests/__tests__/query.spec.js @@ -223,4 +223,35 @@ describe('Query', () => { expect(row[keys[0]] == 1).toBeTruthy(); }) ); + + test.each(engines.filter(x => x.binaryDataType).map(engine => [engine.label, engine]))( + 'Binary', + testWrapper(async (conn, driver, engine) => { + await runCommandOnDriver(conn, driver, dmp => + // bytea + dmp.createTable({ + pureName: 't1', + columns: [ + { columnName: 'id', dataType: 'int', notNull: true, autoIncrement: true }, + { columnName: 'val', dataType: engine.binaryDataType }, + ], + primaryKey: { + columns: [{ columnName: 'id' }], + }, + }) + ); + + const structure = await driver.analyseFull(conn); + const table = structure.tables.find(x => x.pureName == 't1'); + + await runCommandOnDriver(conn, driver, dmp => dmp.put("INSERT INTO t1 (val) VALUES (%v)", {$binary: {base64: 'iVBORw0KWgo='}})); + + const res2 = await runQueryOnDriver(conn, driver, dmp => dmp.put('SELECT val FROM t1')); + + const row = res2.rows[0]; + const keys = Object.keys(row); + expect(keys.length).toEqual(1); + expect(row[keys[0]]).toEqual({$binary: {base64: 'iVBORw0KWgo='}}); + }) + ); }); diff --git a/integration-tests/engines.js b/integration-tests/engines.js index 6c16040a9..77b78790e 100644 --- a/integration-tests/engines.js +++ b/integration-tests/engines.js @@ -216,6 +216,7 @@ const postgreSqlEngine = { supportSchemas: true, supportRenameSqlObject: true, defaultSchemaName: 'public', + binaryDataType: 'bytea', dumpFile: 'data/chinook-postgre.sql', dumpChecks: [ { diff --git a/packages/types/test-engines.d.ts b/packages/types/test-engines.d.ts index 9f4e2e3e9..74e58de59 100644 --- a/packages/types/test-engines.d.ts +++ b/packages/types/test-engines.d.ts @@ -96,4 +96,6 @@ export type TestEngineInfo = { }>; objects?: Array; + + binaryDataType?: string; };