API: queryReader accepts systemConnection (fixes duckDb export filtered data)

This commit is contained in:
SPRINX0\prochazka
2025-04-29 17:15:04 +02:00
parent e77aa00bcd
commit 9d376961f4
2 changed files with 11 additions and 4 deletions

View File

@@ -7,6 +7,8 @@ const logger = getLogger('queryReader');
* Returns reader object for {@link copyStream} function. This reader object reads data from query. * Returns reader object for {@link copyStream} function. This reader object reads data from query.
* @param {object} options * @param {object} options
* @param {connectionType} options.connection - connection object * @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.query - SQL query
* @param {string} [options.queryType] - query type * @param {string} [options.queryType] - query type
* @param {string} [options.sql] - SQL query. obsolete; use query instead * @param {string} [options.sql] - SQL query. obsolete; use query instead
@@ -16,6 +18,8 @@ async function queryReader({
connection, connection,
query, query,
queryType, queryType,
systemConnection,
driver,
// obsolete; use query instead // obsolete; use query instead
sql, sql,
}) { }) {
@@ -28,10 +32,13 @@ async function queryReader({
logger.info({ sql: query || sql }, `Reading query`); logger.info({ sql: query || sql }, `Reading query`);
// else console.log(`Reading query ${JSON.stringify(json)}`); // else console.log(`Reading query ${JSON.stringify(json)}`);
const driver = requireEngineDriver(connection); if (!driver) {
const pool = await connectUtility(driver, connection, queryType == 'json' ? 'read' : 'script'); driver = requireEngineDriver(connection);
}
const dbhan = systemConnection || (await connectUtility(driver, connection, queryType == 'json' ? 'read' : 'script'));
const reader = 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; return reader;
} }

View File

@@ -9,7 +9,7 @@ const sql = require('./sql');
const { mapSchemaRowToSchemaInfo } = require('./Analyser.helpers'); const { mapSchemaRowToSchemaInfo } = require('./Analyser.helpers');
const { zipObject } = require('lodash'); const { zipObject } = require('lodash');
const logger = getLogger('sqliteDriver'); const logger = getLogger('duckdbDriver');
/** /**
* @type {import('@duckdb/node-api')} * @type {import('@duckdb/node-api')}