From a535cf8f5126cb9940696da22ccc3d7278a507b0 Mon Sep 17 00:00:00 2001 From: jearhe <0verme7753@gmail.com> Date: Wed, 9 Sep 2026 14:44:40 +0800 Subject: [PATCH] fix(redis): disable SQL formatting for Redis queries --- apps/desktop/src/App.vue | 3 ++ .../src/components/layout/EditorToolbar.vue | 6 ++- .../__tests__/EditorToolbar.mount.spec.ts | 48 +++++++++++++++++++ .../lib/__tests__/sql/sqlFormatter.spec.ts | 3 +- apps/desktop/src/lib/sql/sqlFormatter.ts | 2 +- 5 files changed, 58 insertions(+), 4 deletions(-) diff --git a/apps/desktop/src/App.vue b/apps/desktop/src/App.vue index c0429dca92..d3a3ff3c21 100644 --- a/apps/desktop/src/App.vue +++ b/apps/desktop/src/App.vue @@ -1410,6 +1410,9 @@ function resolveToolbarTab(tabId?: string) { function formatActiveSql(tabId?: string) { const tab = resolveToolbarTab(tabId); if (!tab || tab.mode !== "query" || !tab.sql.trim()) return; + const connection = connectionStore.getConfig(tab.connectionId); + const databaseType = effectiveDatabaseTypeForConnection(connection) ?? connection?.db_type; + if (!canFormatSqlForDatabaseType(databaseType)) return; formatSqlRequest.value = { id: (formatSqlRequest.value?.id ?? 0) + 1, tabId: tab.id, diff --git a/apps/desktop/src/components/layout/EditorToolbar.vue b/apps/desktop/src/components/layout/EditorToolbar.vue index 84350a7988..bacace8ca6 100644 --- a/apps/desktop/src/components/layout/EditorToolbar.vue +++ b/apps/desktop/src/components/layout/EditorToolbar.vue @@ -25,6 +25,7 @@ import { productionContextForDatabase } from "@/lib/database/productionSafety"; import { formatShortcutDisplay } from "@/lib/editor/shortcutDisplay"; import { resolveNextEditorToolbarTier, type EditorToolbarTier } from "@/lib/tabs/editorToolbarLayout"; import { looksLikeDmlStatement } from "@/lib/sql/dmlChangePreview"; +import { canFormatSqlForDatabaseType } from "@/lib/sql/sqlFormatter"; import type { QueryTab, ConnectionConfig } from "@/types/database"; const props = defineProps<{ @@ -326,7 +327,8 @@ const isActiveDatabaseDefault = computed(() => isDefaultDatabase(props.activeCon // tier contract. const showOverflowMenu = computed(() => toolbarTier.value >= 1); -const showFormatButton = computed(() => toolbarTier.value < 2); +const canFormatSql = computed(() => canFormatSqlForDatabaseType(props.activeConnection?.db_type)); +const showFormatButton = computed(() => canFormatSql.value && toolbarTier.value < 2); const showExplainAnalyzeToggle = computed(() => toolbarTier.value < 3); const showCompressButton = computed(() => toolbarTier.value < 1); const showKeywordCaseButton = computed(() => toolbarTier.value < 1); @@ -608,7 +610,7 @@ async function changeCatalog(selectedCatalog: string) { {{ insertValueHintsToggleTooltip }}