diff --git a/packages/tools/src/SqlDumper.ts b/packages/tools/src/SqlDumper.ts
index ec45907a8..82e0eac49 100644
--- a/packages/tools/src/SqlDumper.ts
+++ b/packages/tools/src/SqlDumper.ts
@@ -246,7 +246,7 @@ export class SqlDumper implements AlterProcessor {
this.putRaw(' ');
this.specialColumnOptions(column);
- if (includeNullable) {
+ if (includeNullable && !this.dialect?.specificNotNull) {
this.put(column.notNull ? '^not ^null' : '^null');
}
if (includeDefault && column.defaultValue?.trim()) {
diff --git a/packages/types/dbinfo.d.ts b/packages/types/dbinfo.d.ts
index 4ee4ac41d..ffa25dd6f 100644
--- a/packages/types/dbinfo.d.ts
+++ b/packages/types/dbinfo.d.ts
@@ -49,6 +49,7 @@ export interface ColumnInfo extends NamedObjectInfo {
notNull?: boolean;
autoIncrement?: boolean;
dataType: string;
+ displayedDataType?: string;
precision?: number;
scale?: number;
length?: number;
diff --git a/packages/types/dialect.d.ts b/packages/types/dialect.d.ts
index 2173a9cbe..654bf9539 100644
--- a/packages/types/dialect.d.ts
+++ b/packages/types/dialect.d.ts
@@ -34,6 +34,8 @@ export interface SqlDialect {
createCheck?: boolean;
dropCheck?: boolean;
+ specificNotNull?: boolean;
+
// syntax for create column: ALTER TABLE table ADD COLUMN column
createColumnWithColumnKeyword?: boolean;
diff --git a/packages/web/src/appobj/ColumnAppObject.svelte b/packages/web/src/appobj/ColumnAppObject.svelte
index 8ee9f79db..37aa9b6f9 100644
--- a/packages/web/src/appobj/ColumnAppObject.svelte
+++ b/packages/web/src/appobj/ColumnAppObject.svelte
@@ -31,7 +31,7 @@
return [
{ text: 'Rename column', onClick: handleRenameColumn },
{ text: 'Drop column', onClick: handleDropColumn },
- { text: 'Copy name', onClick: () => navigator.clipboard.writeText(data.columnName)},
+ { text: 'Copy name', onClick: () => navigator.clipboard.writeText(data.columnName) },
];
}
diff --git a/packages/web/src/datagrid/ColumnHeaderControl.svelte b/packages/web/src/datagrid/ColumnHeaderControl.svelte
index 9e367a0fa..6083c680d 100644
--- a/packages/web/src/datagrid/ColumnHeaderControl.svelte
+++ b/packages/web/src/datagrid/ColumnHeaderControl.svelte
@@ -88,9 +88,9 @@
{/if}
- {#if _.isString(column.dataType) && !order}
+ {#if _.isString(column.displayedDataType || column.dataType) && !order}
- {column.dataType.toLowerCase()}
+ {(column.displayedDataType || column.dataType).toLowerCase()}
{/if}
diff --git a/packages/web/src/designer/ColumnLine.svelte b/packages/web/src/designer/ColumnLine.svelte
index 7128ff89c..26065169d 100644
--- a/packages/web/src/designer/ColumnLine.svelte
+++ b/packages/web/src/designer/ColumnLine.svelte
@@ -196,7 +196,7 @@
{#if designer?.style?.showDataType && column?.dataType}
- {column?.dataType.toLowerCase()}
+ {(column?.displayedDataType || column?.dataType).toLowerCase()}
{/if}
{#if designer?.style?.showNullability}
diff --git a/packages/web/src/elements/ColumnLabel.svelte b/packages/web/src/elements/ColumnLabel.svelte
index ffb77ba86..14d74c972 100644
--- a/packages/web/src/elements/ColumnLabel.svelte
+++ b/packages/web/src/elements/ColumnLabel.svelte
@@ -19,6 +19,7 @@
export let columnName = '';
export let extInfo = null;
export let dataType = null;
+ export let displayedDataType = null;
export let showDataType = false;
export let foreignKey;
export let conid = undefined;
@@ -59,7 +60,7 @@
{/if}
{:else if dataType}
- {dataType.toLowerCase()}
+ {(displayedDataType || dataType).toLowerCase()}
{/if}
{/if}
diff --git a/packages/web/src/tableeditor/ColumnEditorModal.svelte b/packages/web/src/tableeditor/ColumnEditorModal.svelte
index 3411f40ca..5d7a4ffc6 100644
--- a/packages/web/src/tableeditor/ColumnEditorModal.svelte
+++ b/packages/web/src/tableeditor/ColumnEditorModal.svelte
@@ -32,7 +32,9 @@
-
+ {#if !driver?.dialect?.specificNotNull}
+
+ {/if}
showModal(ColumnEditorModal, { columnInfo: e.detail, tableInfo, setTableInfo, driver })}
onAddNew={isWritable ? addColumn : null}
columns={[
- {
+ !driver?.dialect?.specificNotNull && {
fieldName: 'notNull',
header: 'Nullability',
sortable: true,
diff --git a/plugins/dbgate-plugin-clickhouse/src/backend/Analyser.js b/plugins/dbgate-plugin-clickhouse/src/backend/Analyser.js
index 91118d28e..662c09dcd 100644
--- a/plugins/dbgate-plugin-clickhouse/src/backend/Analyser.js
+++ b/plugins/dbgate-plugin-clickhouse/src/backend/Analyser.js
@@ -4,9 +4,10 @@ const sql = require('./sql');
function extractDataType(dataType) {
if (!dataType) return {};
if (dataType.startsWith('Nullable(')) {
- dataType = dataType.substring('Nullable('.length, dataType.length - 1);
+ const displayedDataType = dataType.substring('Nullable('.length, dataType.length - 1);
return {
dataType,
+ displayedDataType,
notNull: false,
};
}
diff --git a/plugins/dbgate-plugin-clickhouse/src/frontend/driver.js b/plugins/dbgate-plugin-clickhouse/src/frontend/driver.js
index d0364ce43..3fa0f61ee 100644
--- a/plugins/dbgate-plugin-clickhouse/src/frontend/driver.js
+++ b/plugins/dbgate-plugin-clickhouse/src/frontend/driver.js
@@ -64,6 +64,7 @@ const dialect = {
dropIndex: true,
anonymousPrimaryKey: true,
createColumnWithColumnKeyword: true,
+ specificNotNull: true,
columnProperties: {
columnComment: true,