From a574459f8bd3cf7d8e83826130245a7c7b71f0a3 Mon Sep 17 00:00:00 2001 From: hanxuanyu <2252193204@qq.com> Date: Fri, 14 Aug 2026 22:18:28 +0800 Subject: [PATCH] feat(dolt): improve system tables and SQL completion --- .../connection/ConnectionDialog.vue | 15 +- .../src/components/editor/QueryEditor.vue | 10 +- .../src/components/sidebar/ConnectionTree.vue | 9 +- .../sidebar/SidebarTreeRuntimeHost.vue | 2 +- .../src/components/sidebar/TreeItem.vue | 3 + apps/desktop/src/i18n/locales/en.ts | 3 + apps/desktop/src/i18n/locales/es.ts | 3 + apps/desktop/src/i18n/locales/it.ts | 3 + apps/desktop/src/i18n/locales/ja.ts | 3 + apps/desktop/src/i18n/locales/pt-BR.ts | 3 + apps/desktop/src/i18n/locales/zh-CN.ts | 3 + apps/desktop/src/i18n/locales/zh-TW.ts | 3 + .../__tests__/database/doltProfile.spec.ts | 112 ++++++++++- .../database/driverProfileExtensions.spec.ts | 45 +++++ .../__tests__/sql/sqlCompletion.dolt.spec.ts | 59 +++++- .../sql/sqlCompletion.signature.spec.ts | 3 + apps/desktop/src/lib/database/doltProfile.ts | 177 +++++++++++++++--- .../lib/database/driverProfileExtensions.ts | 71 +++++++ .../src/lib/editor/codemirrorSqlDialect.ts | 4 +- apps/desktop/src/lib/sidebar/treeNodeClick.ts | 2 +- apps/desktop/src/lib/sidebar/treeNodeGroup.ts | 1 + apps/desktop/src/lib/sidebar/treeNodeIcon.ts | 2 + apps/desktop/src/lib/sql/sqlCompletion.ts | 33 ++-- apps/desktop/src/lib/table/tableTree.ts | 51 +++-- .../connectionStore.metadataLoading.spec.ts | 71 +++++++ apps/desktop/src/stores/connectionStore.ts | 34 +++- apps/desktop/src/types/database.ts | 1 + crates/dbx-core/src/db/dolt.rs | 114 ++++++++++- crates/dbx-core/src/db/mysql.rs | 9 + crates/dbx-core/src/schema.rs | 10 + 30 files changed, 789 insertions(+), 70 deletions(-) create mode 100644 apps/desktop/src/lib/__tests__/database/driverProfileExtensions.spec.ts create mode 100644 apps/desktop/src/lib/database/driverProfileExtensions.ts diff --git a/apps/desktop/src/components/connection/ConnectionDialog.vue b/apps/desktop/src/components/connection/ConnectionDialog.vue index d45723cfec..d87a3b04e5 100644 --- a/apps/desktop/src/components/connection/ConnectionDialog.vue +++ b/apps/desktop/src/components/connection/ConnectionDialog.vue @@ -48,6 +48,7 @@ import { mongodbAuthFailureHint, mongoUrlParam, mongoUrlParamIsTrue, normalizeMo import { isMongoLegacyDriverProfile } from "@/lib/mongo/mongoCapabilities"; import { mysqlCleartextPasswordAuthEnabled, setMysqlCleartextPasswordAuthEnabled } from "@/lib/database/mysqlConnectionOptions"; import { applyDamengSslUrlParams, damengSslFormConfig } from "@/lib/database/damengSslOptions"; +import { doltSystemTablesVisible, isDoltDriverProfile, setDoltSystemTablesVisible } from "@/lib/database/doltProfile"; import { DamengJvmSystemPropertyError, damengJvmSystemPropertiesText, parseDamengJvmSystemProperties } from "@/lib/database/damengJvmOptions"; import { copyToClipboard } from "@/lib/common/clipboard"; import { configuredDatabaseProductName, connectionConfigFingerprint, databaseInfoCopyText, databaseInfoRows, normalizeDatabaseConnectionInfo, type DatabaseInfoField } from "@/lib/connection/connectionDatabaseInfo"; @@ -3065,6 +3066,11 @@ const showGenericUrlParamsHint = computed(() => form.value.db_type === "mysql" | const bareMysqlProfiles = new Set(["doris", "selectdb", "oceanbase"]); const supportsMysqlTlsOptions = computed(() => form.value.db_type === "starrocks" || (form.value.db_type === "mysql" && !bareMysqlProfiles.has(selectedType.value))); const supportsMysqlCleartextPasswordAuth = computed(() => form.value.db_type === "mysql" && !bareMysqlProfiles.has(selectedType.value)); +const supportsDoltSystemTables = computed(() => isDoltDriverProfile(form.value.driver_profile)); +const showDoltSystemTables = computed({ + get: () => doltSystemTablesVisible(form.value), + set: (visible: boolean) => setDoltSystemTablesVisible(form.value, visible), +}); const mysqlCleartextPasswordAuth = computed({ get: () => mysqlCleartextPasswordAuthEnabled(form.value.url_params), set: (value: boolean) => { @@ -3862,7 +3868,7 @@ function connectionConfigForSubmit(id: string, generatedName = ""): ConnectionCo const style = gaussdbIdentifierQuoteStyle(config); config.external_config = undefined; setGaussdbIdentifierQuoteStyle(config, style); - } else { + } else if (!isDoltDriverProfile(config.driver_profile)) { config.external_config = undefined; } if (config.db_type === "mongodb" && !mongoUseUrl.value) { @@ -7869,6 +7875,13 @@ function openExternalUrl(url: string) { +
+ + +