diff --git a/packages/tools/src/diffTools.ts b/packages/tools/src/diffTools.ts index 75101f7af..d21d7095a 100644 --- a/packages/tools/src/diffTools.ts +++ b/packages/tools/src/diffTools.ts @@ -435,7 +435,11 @@ function planChangeTableOptions(plan: AlterPlan, oldTable: TableInfo, newTable: continue; } const name = option.name; - if (oldTable[name] != newTable[name] && (oldTable[name] || newTable[name])) { + if ( + oldTable[name] != newTable[name] && + (oldTable[name] || newTable[name]) && + (newTable[name] || option.allowEmptyValue) + ) { plan.setTableOption(newTable, name, newTable[name]); } } diff --git a/packages/types/dialect.d.ts b/packages/types/dialect.d.ts index fdb43eadf..2bccd76ab 100644 --- a/packages/types/dialect.d.ts +++ b/packages/types/dialect.d.ts @@ -54,5 +54,6 @@ export interface SqlDialect { name: string; sqlFormatString: string; disabled?: boolean; + allowEmptyValue?: boolean; }[]; } diff --git a/plugins/dbgate-plugin-clickhouse/src/frontend/driver.js b/plugins/dbgate-plugin-clickhouse/src/frontend/driver.js index 58f052f96..931350b4a 100644 --- a/plugins/dbgate-plugin-clickhouse/src/frontend/driver.js +++ b/plugins/dbgate-plugin-clickhouse/src/frontend/driver.js @@ -128,6 +128,7 @@ const dialect = { label: 'Comment', name: 'objectComment', sqlFormatString: '^comment %v', + allowEmptyValue: true, }, ]; }, diff --git a/plugins/dbgate-plugin-mysql/src/frontend/drivers.js b/plugins/dbgate-plugin-mysql/src/frontend/drivers.js index 7be9aaf52..e0abfe4f5 100644 --- a/plugins/dbgate-plugin-mysql/src/frontend/drivers.js +++ b/plugins/dbgate-plugin-mysql/src/frontend/drivers.js @@ -118,6 +118,7 @@ const dialect = { label: 'Comment', name: 'objectComment', sqlFormatString: '^comment = %v', + allowEmptyValue: true, }, ]; },