data duplicator fix

This commit is contained in:
Jan Prochazka 2023-02-17 10:00:21 +01:00
parent 1ab58a491a
commit 6b783027e5
4 changed files with 20 additions and 5 deletions

View File

@ -118,17 +118,28 @@ class DuplicatorItemHolder {
skipped += 1;
return;
}
await runCommandOnDriver(pool, driver, dmp =>
dmp.putCmd(
let res = await runQueryOnDriver(pool, driver, dmp => {
dmp.put(
'^insert ^into %f (%,i) ^values (%,v)',
this.table,
Object.keys(insertedObj),
Object.values(insertedObj)
)
);
if (
this.autoColumn &&
this.isReferenced &&
!this.duplicator.driver.dialect.requireStandaloneSelectForScopeIdentity
) {
dmp.selectScopeIdentity(this.table);
}
});
inserted += 1;
if (this.autoColumn && this.isReferenced) {
const res = await runQueryOnDriver(pool, driver, dmp => dmp.selectScopeIdentity(this.table));
if (this.duplicator.driver.dialect.requireStandaloneSelectForScopeIdentity) {
res = await runQueryOnDriver(pool, driver, dmp => dmp.selectScopeIdentity(this.table));
}
// console.log('IDRES', JSON.stringify(res));
const resId = Object.entries(res?.rows?.[0])?.[0]?.[1];
if (resId != null) {
this.idMap[chunk[this.autoColumn]] = resId;

View File

@ -23,6 +23,7 @@ const dialect = {
export async function runCommandOnDriver(pool, driver: EngineDriver, cmd: (dmp: SqlDumper) => void): Promise<void> {
const dmp = driver.createDumper();
cmd(dmp as any);
// console.log('CMD:', dmp.s);
await driver.query(pool, dmp.s, { discardResult: true });
}
@ -33,6 +34,7 @@ export async function runQueryOnDriver(
): Promise<QueryResult> {
const dmp = driver.createDumper();
cmd(dmp as any);
// console.log('QUERY:', dmp.s);
return await driver.query(pool, dmp.s);
}

View File

@ -11,6 +11,7 @@ export interface SqlDialect {
anonymousPrimaryKey?: boolean;
defaultSchemaName?: string;
enableConstraintsPerTable?: boolean;
requireStandaloneSelectForScopeIdentity?: boolean;
dropColumnDependencies?: string[];
changeColumnDependencies?: string[];

View File

@ -42,6 +42,7 @@ const dialect = {
dropCheck: true,
dropReferencesWhenDropTable: false,
requireStandaloneSelectForScopeIdentity: true,
columnProperties: {
columnComment: true,