feat: add QuestDB support

Thanks @ptma!
This commit is contained in:
John Jin authored and GitHub committed 2026-06-14 22:58:05 +08:00
1 parent 0ae720d950
commit 1afc271c18
51 files changed
+633 -46

No files matched your search

@@ -401,6 +401,7 @@ const driverProfiles: Record<
},
gaussdb: { type: "gaussdb", port: 5432, user: "gaussdb", label: "GaussDB", icon: "gaussdb" },
kwdb: { type: "kwdb", port: 26257, user: "root", label: "KWDB", icon: "kwdb" },
questdb: { type: "questdb", port: 8812, user: "questdb", label: "QuestDB", icon: "questdb" },
kingbase: { type: "kingbase", port: 54321, user: "system", label: "KingBase", icon: "kingbase" },
highgo: { type: "highgo", port: 5866, user: "highgo", label: "瀚高 HighGo", icon: "highgo" },
yashandb: { type: "yashandb", port: 1688, user: "sys", label: "崖山 YashanDB", icon: "yashandb" },
@@ -737,6 +738,7 @@ const iconTypeMap: Record<string, string> = {
opengauss: "opengauss",
gaussdb: "gaussdb",
kwdb: "kwdb",
questdb: "questdb",
kingbase: "kingbase",
highgo: "highgo",
yashandb: "yashandb",
@@ -789,6 +791,7 @@ const dbOptions: DbOption[] = [
{ value: "clickhouse", label: "ClickHouse" },
{ value: "gaussdb", label: "GaussDB" },
{ value: "kwdb", label: "KWDB" },
{ value: "questdb", label: "QuestDB" },
{ value: "tidb", label: "TiDB" },
{ value: "oceanbase", label: "OceanBase" },
{ value: "goldendb", label: "GoldenDB" },
@@ -878,7 +881,7 @@ const sqliteExtensionPaths = computed({
form.value.url_params = setSqliteExtensionPaths(form.value.url_params, value);
},
});
const tlsCapableDatabaseTypes = new Set<DatabaseType>(["mysql", "postgres", "redshift", "gaussdb", "kwdb", "opengauss", "redis", "etcd", "clickhouse", "elasticsearch", "influxdb"]);
const tlsCapableDatabaseTypes = new Set<DatabaseType>(["mysql", "postgres", "redshift", "gaussdb", "kwdb", "opengauss", "questdb", "redis", "etcd", "clickhouse", "elasticsearch", "influxdb"]);
const supportsTlsToggle = computed(() => tlsCapableDatabaseTypes.has(form.value.db_type));
const supportsCaCertificatePath = computed(() => form.value.db_type === "clickhouse");
const supportsGenericUrlParams = computed(() => form.value.db_type !== "manticoresearch");
@@ -30,6 +30,7 @@ const assetIcons: Record<string, string> = {
oceanbase: "oceanbase",
opengauss: "opengauss",
gaussdb: "gaussdb",
questdb: "questdb",
kwdb: "kwdb",
kingbase: "kingbase",
highgo: "highgo.png",
@@ -167,6 +167,7 @@ const sourceFormatDialect = computed<SqlFormatDialect>(() => {
case "gaussdb":
case "kwdb":
case "opengauss":
case "questdb":
return "postgres";
default:
return "generic";
@@ -37,6 +37,7 @@ import {
getColumnEditorControls,
getDataTypeOptions,
getDefaultLengthForType,
isDataTypeLengthDisabled,
isProtectedManticoreIdColumn,
splitDataType,
toColumnNames,
@@ -509,10 +510,11 @@ function isColumnTypeDisabled(column: EditableStructureColumn): boolean {
}
function isColumnLengthDisabled(column: EditableStructureColumn): boolean {
if (isColumnTypeDisabled(column)) return true;
if (databaseType.value !== "manticoresearch") return false;
if (isColumnTypeDisabled(column)) {
return true;
}
const baseType = splitDataType(column.dataType).baseType.trim().toLowerCase();
return baseType !== "bit" && baseType !== "float_vector";
return isDataTypeLengthDisabled(databaseType.value, baseType);
}
function isColumnNullableDisabled(column: EditableStructureColumn): boolean {