Skip to content

Commit 9a3f22a

Browse files
committed
fix: add error to diagnostics
1 parent 94dc5df commit 9a3f22a

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

src/containers/Tenant/Query/QueryResult/QueryResultViewer.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,10 @@ export function QueryResultViewer({
183183
};
184184

185185
const renderQueryInfoDropdown = () => {
186+
if (isLoading || isQueryCancelledError(error)) {
187+
return null;
188+
}
189+
186190
return (
187191
<QueryInfoDropdown
188192
queryResultsInfo={{
@@ -191,6 +195,7 @@ export function QueryResultViewer({
191195
queryText,
192196
plan: data.plan,
193197
}}
198+
error={error}
194199
database={tenantName}
195200
hasPlanToSvg={Boolean(data?.plan && useShowPlanToSvg && isExecute)}
196201
/>

src/containers/Tenant/Query/QueryResult/components/QueryInfoDropdown/QueryInfoDropdown.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,24 @@ import {useQueryInfoMenuItems} from './useQueryInfoMenuItems';
77

88
import './QueryInfoDropdown.scss';
99

10-
interface QueryInfoDropdownProps {
10+
export interface QueryInfoDropdownProps {
1111
queryResultsInfo: QueryResultsInfo;
1212
database: string;
1313
hasPlanToSvg: boolean;
14+
error?: unknown;
1415
}
1516

1617
export function QueryInfoDropdown({
1718
queryResultsInfo,
1819
database,
1920
hasPlanToSvg,
21+
error,
2022
}: QueryInfoDropdownProps) {
2123
const {isLoading, items} = useQueryInfoMenuItems({
2224
queryResultsInfo,
2325
database,
2426
hasPlanToSvg,
27+
error,
2528
});
2629

2730
const renderSwitcher = (props: ButtonProps) => {

src/containers/Tenant/Query/QueryResult/components/QueryInfoDropdown/useQueryInfoMenuItems.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import type {QueryPlan, ScriptPlan, TKqpStatsQuery} from '../../../../../../type
99
import {cn} from '../../../../../../utils/cn';
1010
import createToast from '../../../../../../utils/createToast';
1111
import {prepareCommonErrorMessage} from '../../../../../../utils/errors';
12+
import {parseQueryError} from '../../../../../../utils/query';
1213
import i18n from '../../i18n';
1314
const b = cn('query-info-dropdown');
1415

@@ -35,16 +36,24 @@ export interface QueryResultsInfo {
3536
plan?: QueryPlan | ScriptPlan;
3637
}
3738

38-
interface UseQueryInfoMenuItemsProps {
39+
export interface DiagnosticsData extends QueryResultsInfo {
40+
database: string;
41+
timestamp: string;
42+
error?: ReturnType<typeof parseQueryError>;
43+
}
44+
45+
export interface UseQueryInfoMenuItemsProps {
3946
queryResultsInfo: QueryResultsInfo;
4047
database: string;
4148
hasPlanToSvg: boolean;
49+
error?: unknown;
4250
}
4351

4452
export function useQueryInfoMenuItems({
4553
queryResultsInfo,
4654
database,
4755
hasPlanToSvg,
56+
error,
4857
}: UseQueryInfoMenuItemsProps) {
4958
const [blobUrl, setBlobUrl] = React.useState<string | null>(null);
5059
const [getPlanToSvg, {isLoading}] = planToSvgApi.useLazyPlanToSvgQueryQuery();
@@ -135,10 +144,12 @@ export function useQueryInfoMenuItems({
135144

136145
if (queryResultsInfo) {
137146
const handleDiagnosticsDownload = () => {
138-
const diagnosticsData = {
147+
const parsedError = error ? parseQueryError(error) : undefined;
148+
const diagnosticsData: DiagnosticsData = {
139149
...queryResultsInfo,
140150
database,
141151
timestamp: new Date().toISOString(),
152+
...(parsedError && {error: parsedError}),
142153
};
143154

144155
const blob = new Blob([JSON.stringify(diagnosticsData, null, 2)], {

0 commit comments

Comments
 (0)