diff --git a/apps/desktop/src/App.vue b/apps/desktop/src/App.vue index 02764afa64..528c99f0bc 100644 --- a/apps/desktop/src/App.vue +++ b/apps/desktop/src/App.vue @@ -264,6 +264,9 @@ const { sqlParameterNames, sqlParameterDatabaseType, sqlParameterEnabledSyntaxes, + sqlParameterReplaceInsideQuotes, + sqlParameterAnsiQuotes, + sqlParameterNoBackslashEscapes, onSqlParametersConfirm, explainMode, } = useSqlExecution({ @@ -2202,6 +2205,9 @@ onUnmounted(() => { :sql-parameter-names="sqlParameterNames" :sql-parameter-database-type="sqlParameterDatabaseType" :sql-parameter-enabled-syntaxes="sqlParameterEnabledSyntaxes" + :sql-parameter-replace-inside-quotes="sqlParameterReplaceInsideQuotes" + :sql-parameter-ansi-quotes="sqlParameterAnsiQuotes" + :sql-parameter-no-backslash-escapes="sqlParameterNoBackslashEscapes" @update:show-connection-dialog="setConnectionDialogOpen" @update:show-danger-dialog="showDangerDialog = $event" @update:suppress-danger-confirm="suppressDangerConfirm = $event" diff --git a/apps/desktop/src/components/editor/EditorSettingsDialog.vue b/apps/desktop/src/components/editor/EditorSettingsDialog.vue index df5ccd4b3e..ca02024c03 100644 --- a/apps/desktop/src/components/editor/EditorSettingsDialog.vue +++ b/apps/desktop/src/components/editor/EditorSettingsDialog.vue @@ -94,7 +94,16 @@ import { validateConfigName, generateId, type AiConfigItem, type ConfigNameValid import { currentExecutableStatementRange, type SqlTextRange } from "@/lib/sql/sqlStatementRanges"; import { executableStatementRangeCacheForDoc, executableStatementRangeStartingAt, type ExecutableStatementRangeCache } from "@/lib/sql/executableStatementRangeCache"; import { EMPTY_TABLE_COLUMN_TEMPLATE_DATA_TYPE, parseTableColumnTemplateFields, TABLE_COLUMN_TEMPLATE_DATABASE_TYPES } from "@/lib/table/tableColumnTemplates"; -import { DEFAULT_SQL_VARIABLE_SYNTAX_TOGGLES, normalizeSqlVariableSyntaxOverrides, SQL_VARIABLE_SYNTAX_DATABASE_TYPES, SQL_VARIABLE_SYNTAX_KEYS, SQL_VARIABLE_SYNTAX_TOKENS, type SqlVariableSyntaxOverrides, type SqlVariableSyntaxToggles } from "@/lib/sql/sqlVariableSyntax"; +import { + DEFAULT_SQL_VARIABLE_SYNTAX_TOGGLES, + normalizeSqlVariableSyntaxOverrides, + SQL_VARIABLE_SYNTAX_DATABASE_TYPES, + SQL_VARIABLE_SYNTAX_KEYS, + SQL_VARIABLE_SYNTAX_TOKENS, + sqlVariableSyntaxKeysForDatabase, + type SqlVariableSyntaxOverrides, + type SqlVariableSyntaxToggles, +} from "@/lib/sql/sqlVariableSyntax"; import { buildMcpCodexConfig, buildMcpJsonConfig, buildMcpOpenCodeConfig, buildMcpVsCodeConfig, type McpEnvEntry, type McpLaunchConfig } from "@/lib/mcp/mcpConfigTemplates"; import { isMacOS } from "@/lib/backend/platform"; import { combineDataTypeForDatabase, dataTypeLengthInputValue, getDataTypeOptions, getDefaultLengthForType, isDataTypeLengthDisabled, splitDataType } from "@/lib/table/tableStructureEditorState"; @@ -302,9 +311,10 @@ const editTableColumnTemplateRows = ref(tableColum const editTableColumnTemplateDatabaseType = ref(TABLE_COLUMN_TEMPLATE_DATABASE_TYPES[0] ?? "mysql"); const editSqlVariableSyntaxOverrides = ref(normalizeSqlVariableSyntaxOverrides(settingsStore.editorSettings.sqlVariableSyntaxOverrides)); const editSqlVariableSyntaxDatabaseType = ref(SQL_VARIABLE_SYNTAX_DATABASE_TYPES[0] ?? "mysql"); +const visibleSqlVariableSyntaxKeys = computed(() => sqlVariableSyntaxKeysForDatabase(editSqlVariableSyntaxDatabaseType.value)); function sqlVariableSyntaxToggle(key: keyof SqlVariableSyntaxToggles): boolean { - return editSqlVariableSyntaxOverrides.value[editSqlVariableSyntaxDatabaseType.value]?.[key] ?? true; + return editSqlVariableSyntaxOverrides.value[editSqlVariableSyntaxDatabaseType.value]?.[key] ?? DEFAULT_SQL_VARIABLE_SYNTAX_TOGGLES[key]; } function setSqlVariableSyntaxToggle(key: keyof SqlVariableSyntaxToggles, value: boolean) { @@ -315,13 +325,13 @@ function setSqlVariableSyntaxToggle(key: keyof SqlVariableSyntaxToggles, value: [key]: value, }; const next: SqlVariableSyntaxOverrides = { ...editSqlVariableSyntaxOverrides.value }; - // Keep storage sparse: an all-enabled type has no entry; otherwise persist only the disabled syntaxes. - if (SQL_VARIABLE_SYNTAX_KEYS.every((toggleKey) => merged[toggleKey])) { + // Keep storage sparse while preserving the opt-in setting whose default is false. + if (SQL_VARIABLE_SYNTAX_KEYS.every((toggleKey) => merged[toggleKey] === DEFAULT_SQL_VARIABLE_SYNTAX_TOGGLES[toggleKey])) { delete next[dbType]; } else { const partial: Partial = {}; for (const toggleKey of SQL_VARIABLE_SYNTAX_KEYS) { - if (!merged[toggleKey]) partial[toggleKey] = false; + if (merged[toggleKey] !== DEFAULT_SQL_VARIABLE_SYNTAX_TOGGLES[toggleKey]) partial[toggleKey] = merged[toggleKey]; } next[dbType] = partial; } @@ -3107,7 +3117,7 @@ onUnmounted(cleanupPreviewEditor);
-
+