Skip to content

Commit 339ba20

Browse files
committed
fix: review fixes
1 parent 8f13dd6 commit 339ba20

File tree

7 files changed

+95
-58
lines changed

7 files changed

+95
-58
lines changed

src/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ import {parseQueryErrorToString} from '../../../../utils/query';
1717
import {getRunningQueriesColumns} from './columns/columns';
1818
import {
1919
DEFAULT_RUNNING_QUERIES_COLUMNS,
20+
QUERIES_COLUMNS_TITLES,
2021
REQUIRED_RUNNING_QUERIES_COLUMNS,
2122
RUNNING_QUERIES_COLUMNS_WIDTH_LS_KEY,
2223
RUNNING_QUERIES_SELECTED_COLUMNS_LS_KEY,
23-
TOP_QUERIES_COLUMNS_TITLES,
2424
} from './columns/constants';
2525
import i18n from './i18n';
2626
import {TOP_QUERIES_TABLE_SETTINGS, useRunningQueriesSort} from './utils';
@@ -52,7 +52,7 @@ export const RunningQueriesData = ({
5252
const {columnsToShow, columnsToSelect, setColumns} = useSelectedColumns(
5353
columns,
5454
RUNNING_QUERIES_SELECTED_COLUMNS_LS_KEY,
55-
TOP_QUERIES_COLUMNS_TITLES,
55+
QUERIES_COLUMNS_TITLES,
5656
DEFAULT_RUNNING_QUERIES_COLUMNS,
5757
REQUIRED_RUNNING_QUERIES_COLUMNS,
5858
);

src/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ import {parseQueryErrorToString} from '../../../../utils/query';
2020
import {getTopQueriesColumns} from './columns/columns';
2121
import {
2222
DEFAULT_TOP_QUERIES_COLUMNS,
23+
QUERIES_COLUMNS_TITLES,
2324
REQUIRED_TOP_QUERIES_COLUMNS,
24-
TOP_QUERIES_COLUMNS_TITLES,
2525
TOP_QUERIES_COLUMNS_WIDTH_LS_KEY,
2626
TOP_QUERIES_SELECTED_COLUMNS_LS_KEY,
2727
} from './columns/constants';
@@ -62,7 +62,7 @@ export const TopQueriesData = ({
6262
const {columnsToShow, columnsToSelect, setColumns} = useSelectedColumns(
6363
columns,
6464
TOP_QUERIES_SELECTED_COLUMNS_LS_KEY,
65-
TOP_QUERIES_COLUMNS_TITLES,
65+
QUERIES_COLUMNS_TITLES,
6666
DEFAULT_TOP_QUERIES_COLUMNS,
6767
REQUIRED_TOP_QUERIES_COLUMNS,
6868
);
Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import DataTable from '@gravity-ui/react-data-table';
2-
import type {Column} from '@gravity-ui/react-data-table';
2+
import type {Column, OrderType} from '@gravity-ui/react-data-table';
33

44
import {YDBSyntaxHighlighter} from '../../../../../components/SyntaxHighlighter/YDBSyntaxHighlighter';
55
import {TruncatedQuery} from '../../../../../components/TruncatedQuery/TruncatedQuery';
@@ -11,8 +11,9 @@ import {formatToMs, parseUsToMs} from '../../../../../utils/timeParsers';
1111
import {MAX_QUERY_HEIGHT} from '../../../utils/constants';
1212

1313
import {
14-
TOP_QUERIES_COLUMNS_IDS,
15-
TOP_QUERIES_COLUMNS_TITLES,
14+
QUERIES_COLUMNS_IDS,
15+
QUERIES_COLUMNS_TITLES,
16+
isSortableRunningQueriesColumn,
1617
isSortableTopQueriesColumn,
1718
} from './constants';
1819

@@ -21,16 +22,16 @@ import '../TopQueries.scss';
2122
const b = cn('kv-top-queries');
2223

2324
const cpuTimeUsColumn: Column<KeyValueRow> = {
24-
name: TOP_QUERIES_COLUMNS_IDS.CPUTime,
25-
header: TOP_QUERIES_COLUMNS_TITLES.CPUTime,
25+
name: QUERIES_COLUMNS_IDS.CPUTime,
26+
header: QUERIES_COLUMNS_TITLES.CPUTime,
2627
render: ({row}) => formatToMs(parseUsToMs(row.CPUTimeUs ?? undefined)),
2728
width: 120,
2829
align: DataTable.RIGHT,
2930
};
3031

3132
const queryTextColumn: Column<KeyValueRow> = {
32-
name: TOP_QUERIES_COLUMNS_IDS.QueryText,
33-
header: TOP_QUERIES_COLUMNS_TITLES.QueryText,
33+
name: QUERIES_COLUMNS_IDS.QueryText,
34+
header: QUERIES_COLUMNS_TITLES.QueryText,
3435
render: ({row}) => (
3536
<div className={b('query')}>
3637
<TruncatedQuery
@@ -44,39 +45,39 @@ const queryTextColumn: Column<KeyValueRow> = {
4445
};
4546

4647
const endTimeColumn: Column<KeyValueRow> = {
47-
name: TOP_QUERIES_COLUMNS_IDS.EndTime,
48-
header: TOP_QUERIES_COLUMNS_TITLES.EndTime,
48+
name: QUERIES_COLUMNS_IDS.EndTime,
49+
header: QUERIES_COLUMNS_TITLES.EndTime,
4950
render: ({row}) => formatDateTime(new Date(row.EndTime as string).getTime()),
5051
align: DataTable.RIGHT,
5152
width: 200,
5253
};
5354

5455
const readRowsColumn: Column<KeyValueRow> = {
55-
name: TOP_QUERIES_COLUMNS_IDS.ReadRows,
56-
header: TOP_QUERIES_COLUMNS_TITLES.ReadRows,
56+
name: QUERIES_COLUMNS_IDS.ReadRows,
57+
header: QUERIES_COLUMNS_TITLES.ReadRows,
5758
render: ({row}) => formatNumber(row.ReadRows),
5859
align: DataTable.RIGHT,
5960
width: 150,
6061
};
6162

6263
const readBytesColumn: Column<KeyValueRow> = {
63-
name: TOP_QUERIES_COLUMNS_IDS.ReadBytes,
64-
header: TOP_QUERIES_COLUMNS_TITLES.ReadBytes,
64+
name: QUERIES_COLUMNS_IDS.ReadBytes,
65+
header: QUERIES_COLUMNS_TITLES.ReadBytes,
6566
render: ({row}) => formatNumber(row.ReadBytes),
6667
align: DataTable.RIGHT,
6768
width: 150,
6869
};
6970

7071
const userSIDColumn: Column<KeyValueRow> = {
71-
name: TOP_QUERIES_COLUMNS_IDS.UserSID,
72-
header: TOP_QUERIES_COLUMNS_TITLES.UserSID,
72+
name: QUERIES_COLUMNS_IDS.UserSID,
73+
header: QUERIES_COLUMNS_TITLES.UserSID,
7374
render: ({row}) => <div className={b('user-sid')}>{row.UserSID || '–'}</div>,
7475
align: DataTable.LEFT,
7576
};
7677

7778
const oneLineQueryTextColumn: Column<KeyValueRow> = {
78-
name: TOP_QUERIES_COLUMNS_IDS.OneLineQueryText,
79-
header: TOP_QUERIES_COLUMNS_TITLES.OneLineQueryText,
79+
name: QUERIES_COLUMNS_IDS.OneLineQueryText,
80+
header: QUERIES_COLUMNS_TITLES.OneLineQueryText,
8081
render: ({row}) => (
8182
<YDBSyntaxHighlighter
8283
language="yql"
@@ -90,39 +91,38 @@ const oneLineQueryTextColumn: Column<KeyValueRow> = {
9091
};
9192

9293
const queryHashColumn: Column<KeyValueRow> = {
93-
name: TOP_QUERIES_COLUMNS_IDS.QueryHash,
94-
header: TOP_QUERIES_COLUMNS_TITLES.QueryHash,
94+
name: QUERIES_COLUMNS_IDS.QueryHash,
95+
header: QUERIES_COLUMNS_TITLES.QueryHash,
9596
render: ({row}) => generateHash(String(row.QueryText)),
9697
width: 130,
9798
};
9899

99100
const durationColumn: Column<KeyValueRow> = {
100-
name: TOP_QUERIES_COLUMNS_IDS.Duration,
101-
header: TOP_QUERIES_COLUMNS_TITLES.Duration,
101+
name: QUERIES_COLUMNS_IDS.Duration,
102+
header: QUERIES_COLUMNS_TITLES.Duration,
102103
render: ({row}) => formatToMs(parseUsToMs(row.Duration ?? undefined)),
103104
align: DataTable.RIGHT,
104105
width: 150,
105106
};
106107

107108
const queryStartColumn: Column<KeyValueRow> = {
108-
name: TOP_QUERIES_COLUMNS_IDS.QueryStartAt,
109-
header: TOP_QUERIES_COLUMNS_TITLES.QueryStartAt,
109+
name: QUERIES_COLUMNS_IDS.QueryStartAt,
110+
header: QUERIES_COLUMNS_TITLES.QueryStartAt,
110111
render: ({row}) => formatDateTime(new Date(row.QueryStartAt as string).getTime()),
111112
resizeable: false,
112-
defaultOrder: DataTable.DESCENDING,
113113
};
114114

115115
const requestUnitsColumn: Column<KeyValueRow> = {
116-
name: TOP_QUERIES_COLUMNS_IDS.RequestUnits,
117-
header: TOP_QUERIES_COLUMNS_TITLES.RequestUnits,
116+
name: QUERIES_COLUMNS_IDS.RequestUnits,
117+
header: QUERIES_COLUMNS_TITLES.RequestUnits,
118118
render: ({row}) => formatNumber(row.RequestUnits),
119119
align: DataTable.RIGHT,
120120
width: 150,
121121
};
122122

123123
const applicationColumn: Column<KeyValueRow> = {
124-
name: TOP_QUERIES_COLUMNS_IDS.ApplicationName,
125-
header: TOP_QUERIES_COLUMNS_TITLES.ApplicationName,
124+
name: QUERIES_COLUMNS_IDS.ApplicationName,
125+
header: QUERIES_COLUMNS_TITLES.ApplicationName,
126126
render: ({row}) => <div className={b('user-sid')}>{row.ApplicationName || '–'}</div>,
127127
};
128128

@@ -142,18 +142,18 @@ export function getTopQueriesColumns() {
142142
return columns.map((column) => ({
143143
...column,
144144
sortable: isSortableTopQueriesColumn(column.name),
145+
defaultOrder: DataTable.DESCENDING as OrderType,
145146
}));
146147
}
147148

148149
export function getTenantOverviewTopQueriesColumns() {
149150
return [queryHashColumn, oneLineQueryTextColumn, cpuTimeUsColumn];
150151
}
151-
152152
export function getRunningQueriesColumns() {
153153
const columns = [userSIDColumn, queryStartColumn, queryTextColumn, applicationColumn];
154154

155155
return columns.map((column) => ({
156156
...column,
157-
sortable: isSortableTopQueriesColumn(column.name),
157+
sortable: isSortableRunningQueriesColumn(column.name),
158158
}));
159159
}

src/containers/Tenant/Diagnostics/TopQueries/columns/constants.ts

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export const RUNNING_QUERIES_COLUMNS_WIDTH_LS_KEY = 'runningQueriesColumnsWidth'
77
export const TOP_QUERIES_SELECTED_COLUMNS_LS_KEY = 'topQueriesSelectedColumns';
88
export const RUNNING_QUERIES_SELECTED_COLUMNS_LS_KEY = 'runningQueriesSelectedColumns';
99

10-
export const TOP_QUERIES_COLUMNS_IDS = {
10+
export const QUERIES_COLUMNS_IDS = {
1111
CPUTime: 'CPUTime',
1212
QueryText: 'QueryText',
1313
EndTime: 'EndTime',
@@ -21,9 +21,9 @@ export const TOP_QUERIES_COLUMNS_IDS = {
2121
ApplicationName: 'ApplicationName',
2222
RequestUnits: 'RequestUnits',
2323
} as const;
24-
export type TopQueriesColumnId = ValueOf<typeof TOP_QUERIES_COLUMNS_IDS>;
24+
export type QueriesColumnId = ValueOf<typeof QUERIES_COLUMNS_IDS>;
2525

26-
export const DEFAULT_TOP_QUERIES_COLUMNS: TopQueriesColumnId[] = [
26+
export const DEFAULT_TOP_QUERIES_COLUMNS: QueriesColumnId[] = [
2727
'QueryHash',
2828
'CPUTime',
2929
'QueryText',
@@ -34,19 +34,19 @@ export const DEFAULT_TOP_QUERIES_COLUMNS: TopQueriesColumnId[] = [
3434
'RequestUnits',
3535
'UserSID',
3636
];
37-
export const REQUIRED_TOP_QUERIES_COLUMNS: TopQueriesColumnId[] = ['CPUTime', 'QueryText'];
37+
export const REQUIRED_TOP_QUERIES_COLUMNS: QueriesColumnId[] = ['CPUTime', 'QueryText'];
3838

39-
export const DEFAULT_RUNNING_QUERIES_COLUMNS: TopQueriesColumnId[] = [
39+
export const DEFAULT_RUNNING_QUERIES_COLUMNS: QueriesColumnId[] = [
4040
'UserSID',
4141
'QueryStartAt',
4242
'QueryText',
4343
'ApplicationName',
4444
];
4545

4646
// Required columns that must always be displayed for running queries
47-
export const REQUIRED_RUNNING_QUERIES_COLUMNS: TopQueriesColumnId[] = ['QueryStartAt', 'QueryText'];
47+
export const REQUIRED_RUNNING_QUERIES_COLUMNS: QueriesColumnId[] = ['QueryStartAt', 'QueryText'];
4848

49-
export const TOP_QUERIES_COLUMNS_TITLES: Record<TopQueriesColumnId, string> = {
49+
export const QUERIES_COLUMNS_TITLES: Record<QueriesColumnId, string> = {
5050
get CPUTime() {
5151
return i18n('cpu-time');
5252
},
@@ -85,7 +85,7 @@ export const TOP_QUERIES_COLUMNS_TITLES: Record<TopQueriesColumnId, string> = {
8585
},
8686
} as const;
8787

88-
const TOP_QUERIES_COLUMNS_TO_SORT_FIELDS: Record<TopQueriesColumnId, string | undefined> = {
88+
const TOP_QUERIES_COLUMNS_TO_SORT_FIELDS: Record<QueriesColumnId, string | undefined> = {
8989
CPUTime: 'CPUTimeUs',
9090
QueryText: undefined,
9191
EndTime: undefined,
@@ -100,10 +100,33 @@ const TOP_QUERIES_COLUMNS_TO_SORT_FIELDS: Record<TopQueriesColumnId, string | un
100100
RequestUnits: 'RequestUnits',
101101
} as const;
102102

103+
// Define sort fields specifically for running queries
104+
const RUNNING_QUERIES_COLUMNS_TO_SORT_FIELDS: Record<QueriesColumnId, string | undefined> = {
105+
CPUTime: undefined,
106+
QueryText: undefined,
107+
EndTime: undefined,
108+
ReadRows: undefined,
109+
ReadBytes: undefined,
110+
UserSID: 'UserSID',
111+
OneLineQueryText: undefined,
112+
QueryHash: undefined,
113+
Duration: undefined,
114+
QueryStartAt: 'QueryStartAt',
115+
ApplicationName: 'ApplicationName',
116+
RequestUnits: undefined,
117+
} as const;
103118
export function getTopQueriesColumnSortField(columnId?: string) {
104-
return TOP_QUERIES_COLUMNS_TO_SORT_FIELDS[columnId as TopQueriesColumnId];
119+
return TOP_QUERIES_COLUMNS_TO_SORT_FIELDS[columnId as QueriesColumnId];
120+
}
121+
122+
export function getRunningQueriesColumnSortField(columnId?: string) {
123+
return RUNNING_QUERIES_COLUMNS_TO_SORT_FIELDS[columnId as QueriesColumnId];
105124
}
106125

107126
export function isSortableTopQueriesColumn(columnId: string) {
108127
return Boolean(getTopQueriesColumnSortField(columnId));
109128
}
129+
130+
export function isSortableRunningQueriesColumn(columnId: string) {
131+
return Boolean(getRunningQueriesColumnSortField(columnId));
132+
}

src/containers/Tenant/Diagnostics/TopQueries/utils.ts

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,49 @@ import DataTable from '@gravity-ui/react-data-table';
66
import {prepareBackendSortFieldsFromTableSort, useTableSort} from '../../../../utils/hooks';
77
import {QUERY_TABLE_SETTINGS} from '../../utils/constants';
88

9-
import {TOP_QUERIES_COLUMNS_IDS, getTopQueriesColumnSortField} from './columns/constants';
9+
import {
10+
QUERIES_COLUMNS_IDS,
11+
getRunningQueriesColumnSortField,
12+
getTopQueriesColumnSortField,
13+
} from './columns/constants';
1014

1115
export const TOP_QUERIES_TABLE_SETTINGS: Settings = {
1216
...QUERY_TABLE_SETTINGS,
1317
disableSortReset: true,
1418
};
1519

16-
function useQueriesSort(initialSortColumn: string) {
20+
export function useTopQueriesSort() {
1721
const [tableSort, handleTableSort] = useTableSort({
18-
initialSortColumn: initialSortColumn,
22+
initialSortColumn: QUERIES_COLUMNS_IDS.CPUTime,
1923
initialSortOrder: DataTable.DESCENDING,
2024
multiple: true,
2125
fixedOrderType: DataTable.DESCENDING,
2226
});
2327

24-
const backendSort = React.useMemo(
25-
() => prepareBackendSortFieldsFromTableSort(tableSort, getTopQueriesColumnSortField),
26-
[tableSort],
27-
);
28-
2928
return {
3029
tableSort,
3130
handleTableSort,
32-
backendSort,
31+
backendSort: React.useMemo(
32+
() => prepareBackendSortFieldsFromTableSort(tableSort, getTopQueriesColumnSortField),
33+
[tableSort],
34+
),
3335
};
3436
}
35-
export function useTopQueriesSort() {
36-
return useQueriesSort(TOP_QUERIES_COLUMNS_IDS.CPUTime);
37-
}
37+
3838
export function useRunningQueriesSort() {
39-
return useQueriesSort(TOP_QUERIES_COLUMNS_IDS.QueryStartAt);
39+
const [tableSort, handleTableSort] = useTableSort({
40+
initialSortColumn: QUERIES_COLUMNS_IDS.QueryStartAt,
41+
initialSortOrder: DataTable.DESCENDING,
42+
multiple: true,
43+
});
44+
45+
return {
46+
tableSort,
47+
handleTableSort,
48+
backendSort: React.useMemo(
49+
() =>
50+
prepareBackendSortFieldsFromTableSort(tableSort, getRunningQueriesColumnSortField),
51+
[tableSort],
52+
),
53+
};
4054
}

src/store/reducers/executeTopQueries/executeTopQueries.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ SELECT
9393
ApplicationName
9494
FROM \`.sys/query_sessions\`
9595
WHERE ${filterConditions || 'true'} AND Query NOT LIKE '%${QUERY_TECHNICAL_MARK}%'
96-
${orderBy}
96+
AND QueryStartAt is not null ${orderBy}
9797
LIMIT ${limit || 100}`;
9898
}
9999

tests/suites/tenant/diagnostics/Diagnostics.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ export enum TopShardsMode {
137137
Historical = 'Historical',
138138
}
139139

140-
// Column names as they appear in the UI (based on TOP_QUERIES_COLUMNS_TITLES)
140+
// Column names as they appear in the UI (based on QUERIES_COLUMNS_TITLES)
141141
export const QUERY_COLUMNS_IDS = {
142142
QueryHash: 'Query Hash',
143143
CPUTime: 'CPU Time',

0 commit comments

Comments
 (0)