diff --git a/integration-tests/__tests__/alter-table.spec.js b/integration-tests/__tests__/alter-table.spec.js index e6ea7edf6..bcbe583ef 100644 --- a/integration-tests/__tests__/alter-table.spec.js +++ b/integration-tests/__tests__/alter-table.spec.js @@ -117,7 +117,9 @@ describe('Alter table', () => { ); test.each( - createEnginesColumnsSource(engines).filter(([_label, col, engine]) => !engine.skipPkDrop || !col.endsWith('_pk')) + createEnginesColumnsSource(engines.filter(x => !x.skipDropColumn)).filter( + ([_label, col, engine]) => !engine.skipPkDrop || !col.endsWith('_pk') + ) )( 'Drop column - %s - %s', testWrapper(async (conn, driver, column, engine) => { @@ -125,7 +127,7 @@ describe('Alter table', () => { }) ); - test.each(createEnginesColumnsSource(engines.filter(x => !x.skipNullable)))( + test.each(createEnginesColumnsSource(engines.filter(x => !x.skipNullable && !x.skipChangeNullability)))( 'Change nullability - %s - %s', testWrapper(async (conn, driver, column, engine) => { await testTableDiff( @@ -137,7 +139,7 @@ describe('Alter table', () => { }) ); - test.each(createEnginesColumnsSource(engines))( + test.each(createEnginesColumnsSource(engines.filter(x => !x.skipRenameColumn)))( 'Rename column - %s - %s', testWrapper(async (conn, driver, column, engine) => { await testTableDiff( diff --git a/integration-tests/engines.js b/integration-tests/engines.js index 909ed018d..0a00b2ba3 100644 --- a/integration-tests/engines.js +++ b/integration-tests/engines.js @@ -670,9 +670,13 @@ const duckdbEngine = { skipTriggers: true, skipDataReplicator: true, skipAutoIncrement: true, + skipDropColumn: true, + skipRenameColumn: true, + skipChangeNullability: true, skipDeploy: true, supportRenameSqlObject: true, skipIncrementalAnalysis: true, + skipDefaultValue: true, }; const enginesOnCi = [ diff --git a/packages/types/test-engines.d.ts b/packages/types/test-engines.d.ts index e4f6140d1..57327877b 100644 --- a/packages/types/test-engines.d.ts +++ b/packages/types/test-engines.d.ts @@ -41,6 +41,9 @@ export type TestEngineInfo = { skipOrderBy?: boolean; skipImportModel?: boolean; skipTriggers?: boolean; + skipDropColumn?: boolean; + skipChangeNullability?: boolean; + skipRenameColumn?: boolean; forceSortResults?: boolean; forceSortStructureColumns?: boolean; diff --git a/plugins/dbgate-plugin-duckdb/src/frontend/Dumper.js b/plugins/dbgate-plugin-duckdb/src/frontend/Dumper.js index 63c15cf39..7c76ae265 100644 --- a/plugins/dbgate-plugin-duckdb/src/frontend/Dumper.js +++ b/plugins/dbgate-plugin-duckdb/src/frontend/Dumper.js @@ -10,6 +10,10 @@ class Dumper extends SqlDumper { renameTable(obj, newname) { this.putCmd('^alter ^table %f ^rename ^to %i', obj, newname); } + + renameColumn(column, newcol) { + this.putCmd('^alter ^table %f ^rename %i ^to %i', column, column.columnName, newcol); + } } module.exports = Dumper;