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) {
+
+
+
+