diff --git a/integration-tests/__tests__/schema-tests.spec.js b/integration-tests/__tests__/schema-tests.spec.js index bf3f47f4a..53aa0bfb5 100644 --- a/integration-tests/__tests__/schema-tests.spec.js +++ b/integration-tests/__tests__/schema-tests.spec.js @@ -28,12 +28,12 @@ describe('Schema tests', () => { const count = schemas1.length; expect(structure1.tables.length).toEqual(2); await runCommandOnDriver(conn, driver, dmp => dmp.createSchema('myschema')); + const structure2 = await driver.analyseIncremental(conn, structure1); + const schemas2 = await driver.listSchemas(conn); + expect(schemas2.find(x => x.schemaName == 'myschema')).toBeTruthy(); + expect(schemas2.length).toEqual(count + 1); + expect(schemas2.find(x => x.isDefault).schemaName).toEqual(engine.defaultSchemaName); if (!engine.skipIncrementalAnalysis) { - const structure2 = await driver.analyseIncremental(conn, structure1); - const schemas2 = await driver.listSchemas(conn); - expect(schemas2.find(x => x.schemaName == 'myschema')).toBeTruthy(); - expect(schemas2.length).toEqual(count + 1); - expect(schemas2.find(x => x.isDefault).schemaName).toEqual(engine.defaultSchemaName); expect(structure2).toBeNull(); } }) @@ -50,10 +50,10 @@ describe('Schema tests', () => { expect(schemas1.find(x => x.schemaName == 'myschema')).toBeTruthy(); expect(structure1.tables.length).toEqual(2); await runCommandOnDriver(conn, driver, dmp => dmp.dropSchema('myschema')); + const structure2 = await driver.analyseIncremental(conn, structure1); + const schemas2 = await driver.listSchemas(conn); + expect(schemas2.find(x => x.schemaName == 'myschema')).toBeFalsy(); if (!engine.skipIncrementalAnalysis) { - const structure2 = await driver.analyseIncremental(conn, structure1); - const schemas2 = await driver.listSchemas(conn); - expect(schemas2.find(x => x.schemaName == 'myschema')).toBeFalsy(); expect(structure2).toBeNull(); } }) diff --git a/integration-tests/__tests__/table-analyse.spec.js b/integration-tests/__tests__/table-analyse.spec.js index 570a2e2f2..705adf077 100644 --- a/integration-tests/__tests__/table-analyse.spec.js +++ b/integration-tests/__tests__/table-analyse.spec.js @@ -94,7 +94,7 @@ describe('Table analyse', () => { }) ); - test.each(engines.filter(x => !x.skipIncrementalAnalysis).map(engine => [engine.label, engine]))( + test.each(engines.map(engine => [engine.label, engine]))( 'Table add - incremental analysis - %s', testWrapper(async (conn, driver, engine) => { await runCommandOnDriver(conn, driver, dmp => dmp.put(t2Sql(engine))); @@ -112,7 +112,7 @@ describe('Table analyse', () => { }) ); - test.each(engines.filter(x => !x.skipIncrementalAnalysis).map(engine => [engine.label, engine]))( + test.each(engines.map(engine => [engine.label, engine]))( 'Table remove - incremental analysis - %s', testWrapper(async (conn, driver, engine) => { await runCommandOnDriver(conn, driver, dmp => dmp.put(t1Sql(engine))); @@ -130,7 +130,7 @@ describe('Table analyse', () => { }) ); - test.each(engines.filter(x => !x.skipIncrementalAnalysis).map(engine => [engine.label, engine]))( + test.each(engines.map(engine => [engine.label, engine]))( 'Table change - incremental analysis - %s', testWrapper(async (conn, driver, engine) => { await runCommandOnDriver(conn, driver, dmp => dmp.put(t1Sql(engine))); diff --git a/packages/tools/src/DatabaseAnalyser.ts b/packages/tools/src/DatabaseAnalyser.ts index e10e23ab8..f394cc939 100644 --- a/packages/tools/src/DatabaseAnalyser.ts +++ b/packages/tools/src/DatabaseAnalyser.ts @@ -164,6 +164,11 @@ export class DatabaseAnalyser { const res = {}; for (const field of STRUCTURE_FIELDS) { + const isAll = this.modifications.some(x => x.action == 'all' && x.objectTypeField == field); + if (isAll) { + res[field] = newlyAnalysed[field] || []; + continue; + } const removedIds = this.modifications .filter(x => x.action == 'remove' && x.objectTypeField == field) .map(x => x.objectId);