From 951d01e77fb42ca3edf400d9b7376bb5056b7749 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 14 Jul 2025 06:20:21 +0000 Subject: [PATCH 1/4] Initial plan From eb73a72cc9e31388348ad8e039273b795abe9b79 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 14 Jul 2025 06:45:51 +0000 Subject: [PATCH 2/4] Implement pragmas field in Query Settings Dialog --- .../getChangedQueryExecutionSettings.test.ts | 2 ++ ...dQueryExecutionSettingsDescription.test.ts | 2 ++ .../QuerySettingsDialog.scss | 4 +++ .../QuerySettingsDialog.tsx | 25 ++++++++++++++- .../Query/QuerySettingsDialog/constants.ts | 3 ++ .../Query/QuerySettingsDialog/i18n/en.json | 1 + .../Query/QuerySettingsDialog/i18n/ru.json | 1 + .../__test__/prepareQueryWithPragmas.test.ts | 31 +++++++++++++++++++ src/store/reducers/query/query.ts | 20 ++++++++++-- src/utils/query.ts | 3 ++ 10 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 src/store/reducers/query/__test__/prepareQueryWithPragmas.test.ts diff --git a/src/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettings.test.ts b/src/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettings.test.ts index 41cb080c91..688cb6246f 100644 --- a/src/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettings.test.ts +++ b/src/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettings.test.ts @@ -35,6 +35,7 @@ describe('getChangedQueryExecutionSettings', () => { limitRows: DEFAULT_QUERY_SETTINGS.limitRows, statisticsMode: STATISTICS_MODES.basic, tracingLevel: TRACING_LEVELS.basic, + pragmas: 'PRAGMA TestPragma;', }; const result = getChangedQueryExecutionSettings(currentSettings, DEFAULT_QUERY_SETTINGS); expect(result).toEqual([ @@ -43,6 +44,7 @@ describe('getChangedQueryExecutionSettings', () => { 'timeout', 'statisticsMode', 'tracingLevel', + 'pragmas', ]); }); }); diff --git a/src/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettingsDescription.test.ts b/src/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettingsDescription.test.ts index eb8b6b2e6a..e600cfcea9 100644 --- a/src/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettingsDescription.test.ts +++ b/src/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettingsDescription.test.ts @@ -57,6 +57,7 @@ describe('getChangedQueryExecutionSettingsDescription', () => { limitRows: DEFAULT_QUERY_SETTINGS.limitRows, statisticsMode: STATISTICS_MODES.profile, tracingLevel: TRACING_LEVELS.diagnostic, + pragmas: 'PRAGMA TestPragma;', }; const result = getChangedQueryExecutionSettingsDescription({ @@ -71,6 +72,7 @@ describe('getChangedQueryExecutionSettingsDescription', () => { [QUERY_SETTINGS_FIELD_SETTINGS.timeout.title]: '120', [QUERY_SETTINGS_FIELD_SETTINGS.statisticsMode.title]: STATISTICS_MODES_TITLES.profile, [QUERY_SETTINGS_FIELD_SETTINGS.tracingLevel.title]: TRACING_LEVELS_TITLES.diagnostic, + [QUERY_SETTINGS_FIELD_SETTINGS.pragmas.title]: 'PRAGMA TestPragma;', }); }); }); diff --git a/src/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.scss b/src/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.scss index 5e6fec53a6..967ec2b2a8 100644 --- a/src/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.scss +++ b/src/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.scss @@ -33,6 +33,10 @@ margin-right: var(--g-spacing-2); } + &__pragmas { + width: 100%; + } + &__postfix { margin-right: var(--g-spacing-2); diff --git a/src/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.tsx b/src/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.tsx index f96fc6e039..88009ca53f 100644 --- a/src/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.tsx +++ b/src/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {Button, Dialog, Flex, TextInput, Tooltip} from '@gravity-ui/uikit'; +import {Button, Dialog, Flex, TextArea, TextInput, Tooltip} from '@gravity-ui/uikit'; import {zodResolver} from '@hookform/resolvers/zod'; import {Controller, useForm} from 'react-hook-form'; @@ -220,6 +220,29 @@ function QuerySettingsForm({initialValues, onSubmit, onClose}: QuerySettingsForm /> + + +
+ ( +