diff --git a/packages/api/src/shell/queryReader.js b/packages/api/src/shell/queryReader.js index 0d9a16296..5fe820d99 100644 --- a/packages/api/src/shell/queryReader.js +++ b/packages/api/src/shell/queryReader.js @@ -7,6 +7,8 @@ const logger = getLogger('queryReader'); * Returns reader object for {@link copyStream} function. This reader object reads data from query. * @param {object} options * @param {connectionType} options.connection - connection object + * @param {object} options.systemConnection - system connection (result of driver.connect). If not provided, new connection will be created + * @param {object} options.driver - driver object. If not provided, it will be loaded from connection * @param {string} options.query - SQL query * @param {string} [options.queryType] - query type * @param {string} [options.sql] - SQL query. obsolete; use query instead @@ -16,6 +18,8 @@ async function queryReader({ connection, query, queryType, + systemConnection, + driver, // obsolete; use query instead sql, }) { @@ -28,10 +32,13 @@ async function queryReader({ logger.info({ sql: query || sql }, `Reading query`); // else console.log(`Reading query ${JSON.stringify(json)}`); - const driver = requireEngineDriver(connection); - const pool = await connectUtility(driver, connection, queryType == 'json' ? 'read' : 'script'); + if (!driver) { + driver = requireEngineDriver(connection); + } + const dbhan = systemConnection || (await connectUtility(driver, connection, queryType == 'json' ? 'read' : 'script')); + const reader = - queryType == 'json' ? await driver.readJsonQuery(pool, query) : await driver.readQuery(pool, query || sql); + queryType == 'json' ? await driver.readJsonQuery(dbhan, query) : await driver.readQuery(dbhan, query || sql); return reader; } diff --git a/plugins/dbgate-plugin-duckdb/src/backend/driver.js b/plugins/dbgate-plugin-duckdb/src/backend/driver.js index d78a4a0a7..c9fc270c0 100644 --- a/plugins/dbgate-plugin-duckdb/src/backend/driver.js +++ b/plugins/dbgate-plugin-duckdb/src/backend/driver.js @@ -9,7 +9,7 @@ const sql = require('./sql'); const { mapSchemaRowToSchemaInfo } = require('./Analyser.helpers'); const { zipObject } = require('lodash'); -const logger = getLogger('sqliteDriver'); +const logger = getLogger('duckdbDriver'); /** * @type {import('@duckdb/node-api')}