diff --git a/packages/types/dialect.d.ts b/packages/types/dialect.d.ts
index 71f496d09..d42366159 100644
--- a/packages/types/dialect.d.ts
+++ b/packages/types/dialect.d.ts
@@ -32,4 +32,6 @@ export interface SqlDialect {
dropReferencesWhenDropTable?: boolean;
disableExplicitTransaction?: boolean;
+
+ predefinedDataTypes: string[];
}
diff --git a/packages/web/src/tableeditor/ColumnEditorModal.svelte b/packages/web/src/tableeditor/ColumnEditorModal.svelte
index 4b62a32e2..15ffc839b 100644
--- a/packages/web/src/tableeditor/ColumnEditorModal.svelte
+++ b/packages/web/src/tableeditor/ColumnEditorModal.svelte
@@ -26,7 +26,7 @@
>
-
+
diff --git a/packages/web/src/tableeditor/DataTypeEditor.svelte b/packages/web/src/tableeditor/DataTypeEditor.svelte
index 37fd69052..82652d3e9 100644
--- a/packages/web/src/tableeditor/DataTypeEditor.svelte
+++ b/packages/web/src/tableeditor/DataTypeEditor.svelte
@@ -4,7 +4,7 @@
const { values, setFieldValue } = getFormContext();
- $: dataTypes = ['int', 'nvarchar(250)', 'datetime', 'numeric(10,2)', 'float'];
+ $: dataTypes = dialect?.predefinedDataTypes || ['int', 'varchar(250)', 'datetime', 'numeric(10,2)', 'float'];
function createDataTypesMenu() {
return dataTypes.map(type => ({
@@ -13,6 +13,7 @@
}));
}
+ export let dialect;
diff --git a/plugins/dbgate-plugin-mssql/src/frontend/driver.js b/plugins/dbgate-plugin-mssql/src/frontend/driver.js
index dbcba6ac9..3acb4612e 100644
--- a/plugins/dbgate-plugin-mssql/src/frontend/driver.js
+++ b/plugins/dbgate-plugin-mssql/src/frontend/driver.js
@@ -40,6 +40,36 @@ const dialect = {
isSparse: true,
isPersisted: true,
},
+
+ predefinedDataTypes: [
+ 'bigint',
+ 'bit',
+ 'decimal(10,2)',
+ 'int',
+ 'money',
+ 'numeric',
+ 'smallint',
+ 'smallmoney',
+ 'tinyint',
+ 'float',
+ 'real',
+ 'date',
+ 'datetime2',
+ 'datetime',
+ 'datetimeofffset',
+ 'smalldatetime',
+ 'time',
+ 'char(20)',
+ 'varchar(250)',
+ 'text',
+ 'nchar(20)',
+ 'nvarchar(250)',
+ 'ntext',
+ 'binary(100)',
+ 'varbinary(100)',
+ 'image',
+ 'xml',
+ ],
};
/** @type {import('dbgate-types').EngineDriver} */
diff --git a/plugins/dbgate-plugin-mysql/src/frontend/drivers.js b/plugins/dbgate-plugin-mysql/src/frontend/drivers.js
index 87ba6f939..348c0a60f 100644
--- a/plugins/dbgate-plugin-mysql/src/frontend/drivers.js
+++ b/plugins/dbgate-plugin-mysql/src/frontend/drivers.js
@@ -36,6 +36,38 @@ const dialect = {
isUnsigned: true,
isZerofill: true,
},
+
+ predefinedDataTypes: [
+ 'char(20)',
+ 'varchar(250)',
+ 'binary(250)',
+ 'varbinary(250)',
+ 'tinyblob',
+ 'tinytext',
+ 'text(1000)',
+ 'blob(1000)',
+ 'mediumtext',
+ 'mediumblob',
+ 'longtext',
+ 'longblob',
+ 'enum(val1,val2,val3)',
+ 'set(val1,val2,val3)',
+ 'bit(32)',
+ 'tinyint',
+ 'bool',
+ 'smallint',
+ 'mediumint',
+ 'int',
+ 'bigint',
+ 'float',
+ 'double',
+ 'decimal',
+ 'date',
+ 'datetime',
+ 'timestamp',
+ 'time',
+ 'year',
+ ],
};
const mysqlDriverBase = {
diff --git a/plugins/dbgate-plugin-postgres/src/frontend/drivers.js b/plugins/dbgate-plugin-postgres/src/frontend/drivers.js
index bbffecbc9..d533ea3ea 100644
--- a/plugins/dbgate-plugin-postgres/src/frontend/drivers.js
+++ b/plugins/dbgate-plugin-postgres/src/frontend/drivers.js
@@ -32,6 +32,52 @@ const dialect = {
dropCheck: true,
dropReferencesWhenDropTable: true,
+
+ predefinedDataTypes: [
+ 'bigint',
+ 'bigserial',
+ 'bit',
+ 'varbit',
+ 'boolean',
+ 'box',
+ 'bytea',
+ 'char(20)',
+ 'varchar(250)',
+ 'cidr',
+ 'circle',
+ 'date',
+ 'double precision',
+ 'inet',
+ 'int',
+ 'interval',
+ 'json',
+ 'jsonb',
+ 'line',
+ 'lseg',
+ 'macaddr',
+ 'macaddr8',
+ 'money',
+ 'numeric(10,2)',
+ 'path',
+ 'pg_lsn',
+ 'pg_snapshot',
+ 'point',
+ 'polygon',
+ 'real',
+ 'smallint',
+ 'smallserial',
+ 'serial',
+ 'text',
+ 'time',
+ 'timetz',
+ 'timestamp',
+ 'timestamptz',
+ 'tsquery',
+ 'tsvector',
+ 'txid_snapshot',
+ 'uuid',
+ 'xml',
+ ],
};
const postgresDriverBase = {
diff --git a/plugins/dbgate-plugin-sqlite/src/frontend/driver.js b/plugins/dbgate-plugin-sqlite/src/frontend/driver.js
index 6041d65c6..b1b99b2f6 100644
--- a/plugins/dbgate-plugin-sqlite/src/frontend/driver.js
+++ b/plugins/dbgate-plugin-sqlite/src/frontend/driver.js
@@ -53,6 +53,8 @@ const driver = {
getQuerySplitterOptions: (usage) => (usage == 'stream' ? noSplitSplitterOptions : sqliteSplitterOptions),
// isFileDatabase: true,
isElectronOnly: true,
+
+ predefinedDataTypes: ['integer', 'real', 'text', 'blob'],
};
module.exports = driver;