@@ -3,6 +3,7 @@ import type {SortOrder} from '@gravity-ui/react-data-table';
3
3
import { createSlice } from '@reduxjs/toolkit' ;
4
4
import type { PayloadAction } from '@reduxjs/toolkit' ;
5
5
6
+ import { QUERY_TECHNICAL_MARK } from '../../../utils/constants' ;
6
7
import { prepareOrderByFromTableSort } from '../../../utils/hooks/useTableSort' ;
7
8
import { isQueryErrorResponse , parseQueryAPIResponse } from '../../../utils/query' ;
8
9
import { api } from '../api' ;
@@ -12,8 +13,6 @@ import {getFiltersConditions} from './utils';
12
13
13
14
const initialState : TopQueriesFilters = { } ;
14
15
15
- const QUERY_TECHNICAL_MARK = '/*UI-QUERY-EXCLUDE*/' ;
16
-
17
16
const slice = createSlice ( {
18
17
name : 'executeTopQueries' ,
19
18
initialState,
@@ -27,13 +26,13 @@ const slice = createSlice({
27
26
export const { setTopQueriesFilters} = slice . actions ;
28
27
export default slice . reducer ;
29
28
30
- const getQueryText = ( path : string , filters ?: TopQueriesFilters , sortOrder ?: SortOrder [ ] ) => {
31
- const filterConditions = getFiltersConditions ( path , filters ) ;
29
+ const getQueryText = ( filters ?: TopQueriesFilters , sortOrder ?: SortOrder [ ] ) => {
30
+ const filterConditions = getFiltersConditions ( filters ) ;
32
31
33
32
const orderBy = prepareOrderByFromTableSort ( sortOrder ) ;
34
33
35
- return `
36
- SELECT ${ QUERY_TECHNICAL_MARK }
34
+ return `${ QUERY_TECHNICAL_MARK }
35
+ SELECT
37
36
CPUTime as CPUTimeUs,
38
37
QueryText,
39
38
IntervalEnd,
@@ -42,13 +41,32 @@ SELECT ${QUERY_TECHNICAL_MARK}
42
41
ReadBytes,
43
42
UserSID,
44
43
Duration
45
- FROM \`${ path } / .sys/top_queries_by_cpu_time_one_hour\`
44
+ FROM \`.sys/top_queries_by_cpu_time_one_hour\`
46
45
WHERE ${ filterConditions || 'true' } AND QueryText NOT LIKE '%${ QUERY_TECHNICAL_MARK } %'
47
46
${ orderBy }
48
47
LIMIT 100
49
48
` ;
50
49
} ;
51
50
51
+ function getRunningQueriesText ( filters ?: TopQueriesFilters , sortOrder ?: SortOrder [ ] ) {
52
+ const filterConditions = filters ?. text
53
+ ? `Query ILIKE '%${ filters . text } %' OR UserSID ILIKE '%${ filters . text } %'`
54
+ : '' ;
55
+
56
+ const orderBy = prepareOrderByFromTableSort ( sortOrder ) ;
57
+
58
+ return `${ QUERY_TECHNICAL_MARK }
59
+ SELECT
60
+ UserSID,
61
+ QueryStartAt,
62
+ Query as QueryText,
63
+ ApplicationName
64
+ FROM \`.sys/query_sessions\`
65
+ WHERE ${ filterConditions || 'true' } AND Query NOT LIKE '%${ QUERY_TECHNICAL_MARK } %'
66
+ ${ orderBy }
67
+ LIMIT 100` ;
68
+ }
69
+
52
70
interface TopQueriesRequestParams {
53
71
database : string ;
54
72
filters ?: TopQueriesFilters ;
@@ -68,7 +86,7 @@ export const topQueriesApi = api.injectEndpoints({
68
86
try {
69
87
const response = await window . api . viewer . sendQuery (
70
88
{
71
- query : getQueryText ( database , preparedFilters , sortOrder ) ,
89
+ query : getQueryText ( preparedFilters , sortOrder ) ,
72
90
database,
73
91
action : 'execute-scan' ,
74
92
} ,
@@ -102,24 +120,9 @@ export const topQueriesApi = api.injectEndpoints({
102
120
getRunningQueries : build . query ( {
103
121
queryFn : async ( { database, filters, sortOrder} : TopQueriesRequestParams , { signal} ) => {
104
122
try {
105
- const filterConditions = filters ?. text
106
- ? `Query ILIKE '%${ filters . text } %' OR UserSID ILIKE '%${ filters . text } %'`
107
- : '' ;
108
-
109
- const orderBy = prepareOrderByFromTableSort ( sortOrder ) ;
110
-
111
- const queryText = `SELECT ${ QUERY_TECHNICAL_MARK }
112
- UserSID, QueryStartAt, Query as QueryText, ApplicationName
113
- FROM
114
- \`.sys/query_sessions\`
115
- WHERE
116
- ${ filterConditions || 'true' } AND Query NOT LIKE '%${ QUERY_TECHNICAL_MARK } %'
117
- ${ orderBy }
118
- LIMIT 100` ;
119
-
120
123
const response = await window . api . viewer . sendQuery (
121
124
{
122
- query : queryText ,
125
+ query : getRunningQueriesText ( filters , sortOrder ) ,
123
126
database,
124
127
action : 'execute-scan' ,
125
128
} ,
0 commit comments