fixed import for clickhouse

This commit is contained in:
Jan Prochazka 2024-09-13 15:47:12 +02:00
parent 89c9d5e792
commit 334440f691
6 changed files with 20 additions and 7 deletions

View File

@ -37,7 +37,8 @@ export function createBulkInsertStreamBase(driver: EngineDriver, stream, pool, n
}
if (options.createIfNotExists && (!structure || options.dropIfExists)) {
const dmp = driver.createDumper();
dmp.createTable(prepareTableForImport({ ...writable.structure, ...name }));
const createdTableInfo = driver.adaptTableInfo(prepareTableForImport({ ...writable.structure, ...name }));
dmp.createTable(createdTableInfo);
logger.info({ sql: dmp.s }, `Creating table ${fullNameQuoted}`);
await driver.script(pool, dmp.s);
structure = await driver.analyseSingleTable(pool, name);

View File

@ -177,4 +177,8 @@ export const driverBase = {
createSaveChangeSetScript(changeSet, dbinfo, defaultCreator) {
return defaultCreator(changeSet, dbinfo);
},
adaptTableInfo(table) {
return table;
}
};

View File

@ -228,6 +228,8 @@ export interface EngineDriver extends FilterBehaviourProvider {
dbinfo: DatabaseInfo,
defaultCreator: (changeSet: any, dbinfo: DatabaseInfo) => any
): any[];
// adapts table info from different source (import, other database) to be suitable for this database
adaptTableInfo(table: TableInfo): TableInfo;
analyserClass?: any;
dumperClass?: any;

View File

@ -6,11 +6,7 @@ const _ = require('lodash');
* @param {import('dbgate-types').EngineDriver} driver
*/
function createOracleBulkInsertStream(driver, stream, pool, name, options) {
const writable = createBulkInsertStreamBase(driver, stream, pool, name, {
...options,
// this is really not used, send method below is used instead
commitAfterInsert: true,
});
const writable = createBulkInsertStreamBase(driver, stream, pool, name, options);
writable.send = async () => {
await pool.insert({

View File

@ -17,7 +17,7 @@ class Dumper extends SqlDumper {
}
columnType(dataType) {
this.putRaw(dataType);
this.putRaw(dataType || this.dialect.fallbackDataType);
}
renameColumn(column, newcol) {

View File

@ -189,6 +189,16 @@ const driver = {
useDatabaseUrl: 1,
};
},
adaptTableInfo(table) {
if (!table.primaryKey && !table.sortingKey) {
return {
...table,
tableEngine: 'Log',
};
}
return table;
},
};
module.exports = driver;