1fb726d48Sopenharmony_ci/*
2fb726d48Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd.
3fb726d48Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4fb726d48Sopenharmony_ci * you may not use this file except in compliance with the License.
5fb726d48Sopenharmony_ci * You may obtain a copy of the License at
6fb726d48Sopenharmony_ci *
7fb726d48Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8fb726d48Sopenharmony_ci *
9fb726d48Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10fb726d48Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11fb726d48Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fb726d48Sopenharmony_ci * See the License for the specific language governing permissions and
13fb726d48Sopenharmony_ci * limitations under the License.
14fb726d48Sopenharmony_ci */
15fb726d48Sopenharmony_ciimport { FpsStruct } from '../ui-worker/ProcedureWorkerFPS';
16fb726d48Sopenharmony_ciimport { Counter, Fps } from '../../bean/BoxSelection';
17fb726d48Sopenharmony_ciimport { NativeEvent, NativeEventHeap } from '../../bean/NativeHook';
18fb726d48Sopenharmony_ciimport { HeapTreeDataBean } from '../logic-worker/ProcedureLogicWorkerCommon';
19fb726d48Sopenharmony_ciimport { EnergyAnomalyStruct } from '../ui-worker/ProcedureWorkerEnergyAnomaly';
20fb726d48Sopenharmony_ciimport { SystemDetailsEnergy } from '../../bean/EnergyStruct';
21fb726d48Sopenharmony_ciimport { EnergyStateStruct } from '../ui-worker/ProcedureWorkerEnergyState';
22fb726d48Sopenharmony_ciimport { FileInfo } from '../../../js-heap/model/UiStruct';
23fb726d48Sopenharmony_ciimport { HeapEdge, HeapLocation, HeapNode, HeapSample } from '../../../js-heap/model/DatabaseStruct';
24fb726d48Sopenharmony_ciimport { TaskTabStruct } from '../../component/trace/sheet/task/TabPaneTaskFrames';
25fb726d48Sopenharmony_ciimport type { FrameAnimationStruct } from '../ui-worker/ProcedureWorkerFrameAnimation';
26fb726d48Sopenharmony_ciimport type { FrameDynamicStruct } from '../ui-worker/ProcedureWorkerFrameDynamic';
27fb726d48Sopenharmony_ciimport type { FrameSpacingStruct } from '../ui-worker/ProcedureWorkerFrameSpacing';
28fb726d48Sopenharmony_ciimport type { DeviceStruct } from '../../bean/FrameComponentBean';
29fb726d48Sopenharmony_ciimport { LogStruct } from '../ui-worker/ProcedureWorkerLog';
30fb726d48Sopenharmony_ciimport { query } from '../SqlLite';
31fb726d48Sopenharmony_ciimport { Utils } from '../../component/trace/base/Utils';
32fb726d48Sopenharmony_ci
33fb726d48Sopenharmony_ciexport const queryEventCountMap = (
34fb726d48Sopenharmony_ci  traceId?: string
35fb726d48Sopenharmony_ci): Promise<
36fb726d48Sopenharmony_ci  Array<{
37fb726d48Sopenharmony_ci    eventName: string;
38fb726d48Sopenharmony_ci    count: number;
39fb726d48Sopenharmony_ci  }>
40fb726d48Sopenharmony_ci> =>
41fb726d48Sopenharmony_ci  query(
42fb726d48Sopenharmony_ci    'queryEventCountMap',
43fb726d48Sopenharmony_ci    `select 
44fb726d48Sopenharmony_ci  event_name as eventName,
45fb726d48Sopenharmony_ci  count 
46fb726d48Sopenharmony_ci  from stat where stat_type = 'received';`,
47fb726d48Sopenharmony_ci    {},
48fb726d48Sopenharmony_ci    { traceId: traceId }
49fb726d48Sopenharmony_ci  );
50fb726d48Sopenharmony_ci
51fb726d48Sopenharmony_ciexport const queryTotalTime = (
52fb726d48Sopenharmony_ci  traceId?: string
53fb726d48Sopenharmony_ci): Promise<Array<{ total: number; recordStartNS: number; recordEndNS: number }>> =>
54fb726d48Sopenharmony_ci  query(
55fb726d48Sopenharmony_ci    'queryTotalTime',
56fb726d48Sopenharmony_ci    `select start_ts as recordStartNS,end_ts as recordEndNS,end_ts-start_ts as total
57fb726d48Sopenharmony_ci    from
58fb726d48Sopenharmony_ci      trace_range;`,
59fb726d48Sopenharmony_ci    {},
60fb726d48Sopenharmony_ci    { traceId: traceId }
61fb726d48Sopenharmony_ci  );
62fb726d48Sopenharmony_ciexport const getFps = (): Promise<FpsStruct[]> =>
63fb726d48Sopenharmony_ci  query<FpsStruct>(
64fb726d48Sopenharmony_ci    'getFps',
65fb726d48Sopenharmony_ci    `
66fb726d48Sopenharmony_ci    select
67fb726d48Sopenharmony_ci      distinct(ts-tb.start_ts) as startNS, fps
68fb726d48Sopenharmony_ci    from
69fb726d48Sopenharmony_ci      hidump c ,trace_range tb
70fb726d48Sopenharmony_ci    where
71fb726d48Sopenharmony_ci      startNS >= 0
72fb726d48Sopenharmony_ci    --order by startNS;
73fb726d48Sopenharmony_ci    `,
74fb726d48Sopenharmony_ci    {}
75fb726d48Sopenharmony_ci  );
76fb726d48Sopenharmony_ci
77fb726d48Sopenharmony_ciexport const getTabFps = (leftNs: number, rightNs: number): Promise<Array<Fps>> =>
78fb726d48Sopenharmony_ci  query<Fps>(
79fb726d48Sopenharmony_ci    'getTabFps',
80fb726d48Sopenharmony_ci    `
81fb726d48Sopenharmony_ci    select
82fb726d48Sopenharmony_ci      distinct(ts-tb.start_ts) as startNS,
83fb726d48Sopenharmony_ci      fps
84fb726d48Sopenharmony_ci    from
85fb726d48Sopenharmony_ci      hidump c,
86fb726d48Sopenharmony_ci      trace_range tb
87fb726d48Sopenharmony_ci    where
88fb726d48Sopenharmony_ci      startNS <= $rightNS
89fb726d48Sopenharmony_ci    and
90fb726d48Sopenharmony_ci      startNS >= 0
91fb726d48Sopenharmony_ci    --order by startNS;
92fb726d48Sopenharmony_ci    `,
93fb726d48Sopenharmony_ci    { $leftNS: leftNs, $rightNS: rightNs }
94fb726d48Sopenharmony_ci  );
95fb726d48Sopenharmony_ci
96fb726d48Sopenharmony_ciexport const getTabVirtualCounters = (virtualFilterIds: Array<number>, startTime: number): Promise<Counter[]> =>
97fb726d48Sopenharmony_ci  query<Counter>(
98fb726d48Sopenharmony_ci    'getTabVirtualCounters',
99fb726d48Sopenharmony_ci    `
100fb726d48Sopenharmony_ci    select
101fb726d48Sopenharmony_ci      table1.filter_id as trackId,
102fb726d48Sopenharmony_ci      table2.name,
103fb726d48Sopenharmony_ci      value,
104fb726d48Sopenharmony_ci      table1.ts - table3.start_ts as startTime
105fb726d48Sopenharmony_ci    from
106fb726d48Sopenharmony_ci      sys_mem_measure table1
107fb726d48Sopenharmony_ci    left join
108fb726d48Sopenharmony_ci      sys_event_filter table2
109fb726d48Sopenharmony_ci    on
110fb726d48Sopenharmony_ci      table1.filter_id = table2.id
111fb726d48Sopenharmony_ci    left join
112fb726d48Sopenharmony_ci      trace_range table3
113fb726d48Sopenharmony_ci    where
114fb726d48Sopenharmony_ci      filter_id in (${virtualFilterIds.join(',')})
115fb726d48Sopenharmony_ci    and
116fb726d48Sopenharmony_ci      startTime <= $startTime
117fb726d48Sopenharmony_ci    `,
118fb726d48Sopenharmony_ci    { $startTime: startTime }
119fb726d48Sopenharmony_ci  );
120fb726d48Sopenharmony_ci
121fb726d48Sopenharmony_ciexport const queryAllSoInitNames = (): //@ts-ignore
122fb726d48Sopenharmony_ciPromise<Array<unknown>> => {
123fb726d48Sopenharmony_ci  return query(
124fb726d48Sopenharmony_ci    'queryAllSoInitNames',
125fb726d48Sopenharmony_ci    `
126fb726d48Sopenharmony_ci        select id,so_name as name from static_initalize;`
127fb726d48Sopenharmony_ci  );
128fb726d48Sopenharmony_ci};
129fb726d48Sopenharmony_ci
130fb726d48Sopenharmony_ciexport const queryAllSrcSlices = (): //@ts-ignore
131fb726d48Sopenharmony_ciPromise<Array<unknown>> => {
132fb726d48Sopenharmony_ci  return query(
133fb726d48Sopenharmony_ci    'queryAllSrcSlices',
134fb726d48Sopenharmony_ci    `
135fb726d48Sopenharmony_ci        select src,id from frame_slice;`
136fb726d48Sopenharmony_ci  );
137fb726d48Sopenharmony_ci};
138fb726d48Sopenharmony_ci
139fb726d48Sopenharmony_ci/*-------------------------------------------------------------------------------------*/
140fb726d48Sopenharmony_ciexport const queryHeapGroupByEvent = (type: string): Promise<Array<NativeEventHeap>> => {
141fb726d48Sopenharmony_ci  let sql1 = `
142fb726d48Sopenharmony_ci    SELECT
143fb726d48Sopenharmony_ci      event_type AS eventType,
144fb726d48Sopenharmony_ci      sum(heap_size) AS sumHeapSize
145fb726d48Sopenharmony_ci    FROM
146fb726d48Sopenharmony_ci      native_hook
147fb726d48Sopenharmony_ci    WHERE
148fb726d48Sopenharmony_ci      event_type = 'AllocEvent'
149fb726d48Sopenharmony_ci    UNION ALL
150fb726d48Sopenharmony_ci    SELECT
151fb726d48Sopenharmony_ci      event_type AS eventType,
152fb726d48Sopenharmony_ci      sum(heap_size) AS sumHeapSize
153fb726d48Sopenharmony_ci    FROM
154fb726d48Sopenharmony_ci      native_hook
155fb726d48Sopenharmony_ci    WHERE
156fb726d48Sopenharmony_ci      event_type = 'MmapEvent'
157fb726d48Sopenharmony_ci    `;
158fb726d48Sopenharmony_ci  let sql2 = `
159fb726d48Sopenharmony_ci        select (case when type = 0 then 'AllocEvent' else 'MmapEvent' end) eventType,
160fb726d48Sopenharmony_ci            sum(apply_size) sumHeapSize
161fb726d48Sopenharmony_ci        from native_hook_statistic
162fb726d48Sopenharmony_ci        group by eventType;
163fb726d48Sopenharmony_ci    `;
164fb726d48Sopenharmony_ci  return query('queryHeapGroupByEvent', type === 'native_hook' ? sql1 : sql2, {});
165fb726d48Sopenharmony_ci};
166fb726d48Sopenharmony_ci
167fb726d48Sopenharmony_ciexport const queryAllHeapByEvent = (): Promise<Array<NativeEvent>> =>
168fb726d48Sopenharmony_ci  query(
169fb726d48Sopenharmony_ci    'queryAllHeapByEvent',
170fb726d48Sopenharmony_ci    `
171fb726d48Sopenharmony_ci    select * from (
172fb726d48Sopenharmony_ci      select h.start_ts - t.start_ts as startTime,
173fb726d48Sopenharmony_ci       h.heap_size as heapSize,
174fb726d48Sopenharmony_ci       h.event_type as eventType
175fb726d48Sopenharmony_cifrom native_hook h ,trace_range t
176fb726d48Sopenharmony_ciwhere h.start_ts >= t.start_ts and h.start_ts <= t.end_ts
177fb726d48Sopenharmony_ciand (h.event_type = 'AllocEvent' or h.event_type = 'MmapEvent')
178fb726d48Sopenharmony_ciunion
179fb726d48Sopenharmony_ciselect h.end_ts - t.start_ts as startTime,
180fb726d48Sopenharmony_ci       h.heap_size as heapSize,
181fb726d48Sopenharmony_ci       (case when h.event_type = 'AllocEvent' then 'FreeEvent' else 'MunmapEvent' end) as eventType
182fb726d48Sopenharmony_cifrom native_hook h ,trace_range t
183fb726d48Sopenharmony_ciwhere h.start_ts >= t.start_ts and h.start_ts <= t.end_ts
184fb726d48Sopenharmony_ciand (h.event_type = 'AllocEvent' or h.event_type = 'MmapEvent')
185fb726d48Sopenharmony_ciand h.end_ts not null ) order by startTime;
186fb726d48Sopenharmony_ci`,
187fb726d48Sopenharmony_ci    {}
188fb726d48Sopenharmony_ci  );
189fb726d48Sopenharmony_ci
190fb726d48Sopenharmony_ciexport const queryHeapAllData = (
191fb726d48Sopenharmony_ci  startTs: number,
192fb726d48Sopenharmony_ci  endTs: number,
193fb726d48Sopenharmony_ci  ipids: Array<number>
194fb726d48Sopenharmony_ci): Promise<Array<HeapTreeDataBean>> =>
195fb726d48Sopenharmony_ci  query(
196fb726d48Sopenharmony_ci    'queryHeapAllData',
197fb726d48Sopenharmony_ci    `
198fb726d48Sopenharmony_ci    select
199fb726d48Sopenharmony_ci      h.start_ts - t.start_ts as startTs,
200fb726d48Sopenharmony_ci      h.end_ts - t.start_ts as endTs,
201fb726d48Sopenharmony_ci      h.heap_size as heapSize,
202fb726d48Sopenharmony_ci      h.event_type as eventType,
203fb726d48Sopenharmony_ci      h.callchain_id as eventId
204fb726d48Sopenharmony_ci    from
205fb726d48Sopenharmony_ci      native_hook h
206fb726d48Sopenharmony_ci    inner join
207fb726d48Sopenharmony_ci      trace_range  t
208fb726d48Sopenharmony_ci    where
209fb726d48Sopenharmony_ci      event_type = 'AllocEvent'
210fb726d48Sopenharmony_ci    and
211fb726d48Sopenharmony_ci      ipid in (${ipids.join(',')})
212fb726d48Sopenharmony_ci    and
213fb726d48Sopenharmony_ci      (h.start_ts - t.start_ts between ${startTs} and ${endTs} 
214fb726d48Sopenharmony_ci      or h.end_ts - t.start_ts between ${startTs} and ${endTs})`,
215fb726d48Sopenharmony_ci    { ipids: ipids, $startTs: startTs, $endTs: endTs }
216fb726d48Sopenharmony_ci  );
217fb726d48Sopenharmony_ci
218fb726d48Sopenharmony_ciexport const querySelectTraceStats = (): Promise<
219fb726d48Sopenharmony_ci  Array<{
220fb726d48Sopenharmony_ci    event_name: string;
221fb726d48Sopenharmony_ci    stat_type: string;
222fb726d48Sopenharmony_ci    count: number;
223fb726d48Sopenharmony_ci    source: string;
224fb726d48Sopenharmony_ci    serverity: string;
225fb726d48Sopenharmony_ci  }>
226fb726d48Sopenharmony_ci> => query('querySelectTraceStats', 'select event_name,stat_type,count,source,serverity from stat');
227fb726d48Sopenharmony_ci
228fb726d48Sopenharmony_ciexport const queryCustomizeSelect = (
229fb726d48Sopenharmony_ci  sql: string
230fb726d48Sopenharmony_ci): //@ts-ignore
231fb726d48Sopenharmony_ciPromise<Array<unknown>> => query('queryCustomizeSelect', sql);
232fb726d48Sopenharmony_ci
233fb726d48Sopenharmony_ciexport const queryDistributedTerm = (): Promise<
234fb726d48Sopenharmony_ci  Array<{
235fb726d48Sopenharmony_ci    threadId: string;
236fb726d48Sopenharmony_ci    threadName: string;
237fb726d48Sopenharmony_ci    processId: string;
238fb726d48Sopenharmony_ci    processName: string;
239fb726d48Sopenharmony_ci    funName: string;
240fb726d48Sopenharmony_ci    dur: string;
241fb726d48Sopenharmony_ci    ts: string;
242fb726d48Sopenharmony_ci    chainId: string;
243fb726d48Sopenharmony_ci    spanId: string;
244fb726d48Sopenharmony_ci    parentSpanId: string;
245fb726d48Sopenharmony_ci    flag: string;
246fb726d48Sopenharmony_ci    trace_name: string;
247fb726d48Sopenharmony_ci  }>
248fb726d48Sopenharmony_ci> =>
249fb726d48Sopenharmony_ci  query(
250fb726d48Sopenharmony_ci    'queryDistributedTerm',
251fb726d48Sopenharmony_ci    `
252fb726d48Sopenharmony_ci    select
253fb726d48Sopenharmony_ci      group_concat(thread.id,',') as threadId,
254fb726d48Sopenharmony_ci      group_concat(thread.name,',') as threadName,
255fb726d48Sopenharmony_ci      group_concat(process.id,',') as processId,
256fb726d48Sopenharmony_ci      group_concat(process.name,',') as processName,
257fb726d48Sopenharmony_ci      group_concat(callstack.name,',') as funName,
258fb726d48Sopenharmony_ci      group_concat(callstack.dur,',') as dur,
259fb726d48Sopenharmony_ci      group_concat(callstack.ts,',') as ts,
260fb726d48Sopenharmony_ci      cast(callstack.chainId as varchar) as chainId,
261fb726d48Sopenharmony_ci      callstack.spanId as spanId,
262fb726d48Sopenharmony_ci      callstack.parentSpanId as parentSpanId,
263fb726d48Sopenharmony_ci      group_concat(callstack.flag,',') as flag,
264fb726d48Sopenharmony_ci      (select
265fb726d48Sopenharmony_ci        value
266fb726d48Sopenharmony_ci      from
267fb726d48Sopenharmony_ci        meta
268fb726d48Sopenharmony_ci      where
269fb726d48Sopenharmony_ci        name='source_name') as trace_name
270fb726d48Sopenharmony_ci      from
271fb726d48Sopenharmony_ci        callstack
272fb726d48Sopenharmony_ci      inner join thread on callstack.callid = thread.id
273fb726d48Sopenharmony_ci      inner join process on process.id = thread.ipid
274fb726d48Sopenharmony_ci      where (callstack.flag='S' or callstack.flag='C')
275fb726d48Sopenharmony_ci      group by callstack.chainId,callstack.spanId,callstack.parentSpanId`
276fb726d48Sopenharmony_ci  );
277fb726d48Sopenharmony_ciexport const queryTraceTaskName = (): Promise<
278fb726d48Sopenharmony_ci  Array<{
279fb726d48Sopenharmony_ci    id: string;
280fb726d48Sopenharmony_ci    pid: string;
281fb726d48Sopenharmony_ci    process_name: string;
282fb726d48Sopenharmony_ci    thread_name: string;
283fb726d48Sopenharmony_ci  }>
284fb726d48Sopenharmony_ci> =>
285fb726d48Sopenharmony_ci  query(
286fb726d48Sopenharmony_ci    'queryTraceTaskName',
287fb726d48Sopenharmony_ci    `
288fb726d48Sopenharmony_ci    select
289fb726d48Sopenharmony_ci        P.id as id,
290fb726d48Sopenharmony_ci        P.pid as pid,
291fb726d48Sopenharmony_ci        P.name as process_name,
292fb726d48Sopenharmony_ci        group_concat(T.name,',') as thread_name
293fb726d48Sopenharmony_ci    from process as P left join thread as T where P.id = T.ipid
294fb726d48Sopenharmony_ci    group by pid`
295fb726d48Sopenharmony_ci  );
296fb726d48Sopenharmony_ci
297fb726d48Sopenharmony_ciexport const queryTraceMetaData = (): Promise<
298fb726d48Sopenharmony_ci  Array<{
299fb726d48Sopenharmony_ci    name: string;
300fb726d48Sopenharmony_ci    valueText: string;
301fb726d48Sopenharmony_ci  }>
302fb726d48Sopenharmony_ci> =>
303fb726d48Sopenharmony_ci  query(
304fb726d48Sopenharmony_ci    'queryTraceMetaData',
305fb726d48Sopenharmony_ci    `
306fb726d48Sopenharmony_ci    select
307fb726d48Sopenharmony_ci        cast(name as varchar) as name,
308fb726d48Sopenharmony_ci        cast(value as varchar) as valueText 
309fb726d48Sopenharmony_ci        from meta
310fb726d48Sopenharmony_ci        UNION
311fb726d48Sopenharmony_ci        select 'start_ts',cast(start_ts as varchar) from trace_range
312fb726d48Sopenharmony_ci        UNION
313fb726d48Sopenharmony_ci        select 'end_ts',cast(end_ts as varchar) from trace_range`
314fb726d48Sopenharmony_ci  );
315fb726d48Sopenharmony_ci
316fb726d48Sopenharmony_ciexport const querySystemCalls = (): Promise<
317fb726d48Sopenharmony_ci  Array<{
318fb726d48Sopenharmony_ci    frequency: string;
319fb726d48Sopenharmony_ci    minDur: number;
320fb726d48Sopenharmony_ci    maxDur: number;
321fb726d48Sopenharmony_ci    avgDur: number;
322fb726d48Sopenharmony_ci    funName: string;
323fb726d48Sopenharmony_ci  }>
324fb726d48Sopenharmony_ci> =>
325fb726d48Sopenharmony_ci  query(
326fb726d48Sopenharmony_ci    'querySystemCalls',
327fb726d48Sopenharmony_ci    `
328fb726d48Sopenharmony_ci    select
329fb726d48Sopenharmony_ci      count(*) as frequency,
330fb726d48Sopenharmony_ci      min(dur) as minDur,
331fb726d48Sopenharmony_ci      max(dur) as maxDur,
332fb726d48Sopenharmony_ci      avg(dur) as avgDur,
333fb726d48Sopenharmony_ci      name as funName
334fb726d48Sopenharmony_ci    from
335fb726d48Sopenharmony_ci      callstack
336fb726d48Sopenharmony_ci      group by name
337fb726d48Sopenharmony_ci      order by
338fb726d48Sopenharmony_ci    frequency desc limit 100`
339fb726d48Sopenharmony_ci  );
340fb726d48Sopenharmony_ci
341fb726d48Sopenharmony_ciexport const queryNetWorkMaxData = (): //@ts-ignore
342fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
343fb726d48Sopenharmony_ci  query(
344fb726d48Sopenharmony_ci    'queryNetWorkMaxData',
345fb726d48Sopenharmony_ci    `select 
346fb726d48Sopenharmony_ci     ifnull(max(tx_speed),0) as maxIn, 
347fb726d48Sopenharmony_ci     ifnull(max(rx_speed),0) as maxOut,
348fb726d48Sopenharmony_ci     ifnull(max(packet_in_sec),0) as maxPacketIn,
349fb726d48Sopenharmony_ci     ifnull(max(packet_in_sec),0) as maxPacketOut
350fb726d48Sopenharmony_ci     from network`
351fb726d48Sopenharmony_ci  );
352fb726d48Sopenharmony_ci
353fb726d48Sopenharmony_ciexport const queryDiskIoMaxData = (): //@ts-ignore
354fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
355fb726d48Sopenharmony_ci  query(
356fb726d48Sopenharmony_ci    'queryDiskIoMaxData',
357fb726d48Sopenharmony_ci    `select
358fb726d48Sopenharmony_ci    ifnull(max(rd_speed),0) as bytesRead, 
359fb726d48Sopenharmony_ci    ifnull(max(wr_speed),0) as bytesWrite,
360fb726d48Sopenharmony_ci    ifnull(max(rd_count_speed),0) as readOps,
361fb726d48Sopenharmony_ci    ifnull(max(wr_count_speed),0)  as writeOps
362fb726d48Sopenharmony_ci    from diskio`
363fb726d48Sopenharmony_ci  );
364fb726d48Sopenharmony_ci//@ts-ignore
365fb726d48Sopenharmony_ciexport const queryStartTime = (): Promise<Array<unknown>> =>
366fb726d48Sopenharmony_ci  query('queryStartTime', 'SELECT start_ts FROM trace_range');
367fb726d48Sopenharmony_ci//@ts-ignore
368fb726d48Sopenharmony_ciexport const queryRangeTime = (): Promise<Array<unknown>> =>
369fb726d48Sopenharmony_ci  query('queryRangeTime', `SELECT start_ts, end_ts FROM trace_range`);
370fb726d48Sopenharmony_ci
371fb726d48Sopenharmony_ciexport const queryBinderBySliceId = (
372fb726d48Sopenharmony_ci  id: number
373fb726d48Sopenharmony_ci): //@ts-ignore
374fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
375fb726d48Sopenharmony_ci  query(
376fb726d48Sopenharmony_ci    'queryBinderBySliceId',
377fb726d48Sopenharmony_ci    `SELECT 
378fb726d48Sopenharmony_ci    c.ts - D.start_ts AS startTs,
379fb726d48Sopenharmony_ci    c.dur,
380fb726d48Sopenharmony_ci    t.tid,
381fb726d48Sopenharmony_ci    p.pid,
382fb726d48Sopenharmony_ci    c.depth,
383fb726d48Sopenharmony_ci    c.argsetid,
384fb726d48Sopenharmony_ci    c.name AS funName,
385fb726d48Sopenharmony_ci    c.cookie 
386fb726d48Sopenharmony_ci  FROM
387fb726d48Sopenharmony_ci    callstack c,
388fb726d48Sopenharmony_ci    trace_range D
389fb726d48Sopenharmony_ci    LEFT JOIN thread t ON c.callid = t.id
390fb726d48Sopenharmony_ci    LEFT JOIN process p ON p.id = t.ipid 
391fb726d48Sopenharmony_ci  WHERE
392fb726d48Sopenharmony_ci    cat = 'binder' and c.id = $id;`,
393fb726d48Sopenharmony_ci    { $id: id },
394fb726d48Sopenharmony_ci    { traceId: Utils.currentSelectTrace }
395fb726d48Sopenharmony_ci  );
396fb726d48Sopenharmony_ci
397fb726d48Sopenharmony_ciexport const queryThreadByItid = (
398fb726d48Sopenharmony_ci  itid: number,
399fb726d48Sopenharmony_ci  ts: number
400fb726d48Sopenharmony_ci): //@ts-ignore
401fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
402fb726d48Sopenharmony_ci  query(
403fb726d48Sopenharmony_ci    'queryThreadByItid',
404fb726d48Sopenharmony_ci    `SELECT 
405fb726d48Sopenharmony_ci      tid,
406fb726d48Sopenharmony_ci      pid,
407fb726d48Sopenharmony_ci      c.dur,
408fb726d48Sopenharmony_ci      c.depth,
409fb726d48Sopenharmony_ci      c.name 
410fb726d48Sopenharmony_ci    FROM
411fb726d48Sopenharmony_ci      thread t
412fb726d48Sopenharmony_ci      LEFT JOIN process p ON t.ipid = p.ipid
413fb726d48Sopenharmony_ci      LEFT JOIN callstack c ON t.itid = c.callid
414fb726d48Sopenharmony_ci    WHERE itid = $itid and c.ts = $ts;`,
415fb726d48Sopenharmony_ci    { $itid: itid, $ts: ts }
416fb726d48Sopenharmony_ci  );
417fb726d48Sopenharmony_ciexport const queryBinderByArgsId = (
418fb726d48Sopenharmony_ci  id: number,
419fb726d48Sopenharmony_ci  startTime: number,
420fb726d48Sopenharmony_ci  isNext: boolean
421fb726d48Sopenharmony_ci): //@ts-ignore
422fb726d48Sopenharmony_ciPromise<Array<unknown>> => {
423fb726d48Sopenharmony_ci  let sql = `select c.ts - D.start_ts as startTs,
424fb726d48Sopenharmony_ci    c.dur,
425fb726d48Sopenharmony_ci    t.tid,
426fb726d48Sopenharmony_ci    p.pid,
427fb726d48Sopenharmony_ci    c.depth,
428fb726d48Sopenharmony_ci    c.argsetid,
429fb726d48Sopenharmony_ci      c.name as funName,
430fb726d48Sopenharmony_ci      c.cookie
431fb726d48Sopenharmony_ci    from callstack c,trace_range D
432fb726d48Sopenharmony_ci    left join thread t on c.callid = t.id
433fb726d48Sopenharmony_ci    left join process p on p.id = t.ipid
434fb726d48Sopenharmony_ciwhere cat = 'binder' and  c.argsetid = $id`;
435fb726d48Sopenharmony_ci  if (isNext) {
436fb726d48Sopenharmony_ci    sql += ' and c.ts > $startTime +  D.start_ts';
437fb726d48Sopenharmony_ci  } else {
438fb726d48Sopenharmony_ci    sql += ' and c.ts < $startTime +  D.start_ts';
439fb726d48Sopenharmony_ci  }
440fb726d48Sopenharmony_ci  return query('queryBinderByArgsId', sql, { $id: id, $startTime: startTime},
441fb726d48Sopenharmony_ci    { traceId : Utils.currentSelectTrace }
442fb726d48Sopenharmony_ci  );
443fb726d48Sopenharmony_ci};
444fb726d48Sopenharmony_ci
445fb726d48Sopenharmony_ciexport const getTabPaneFilesystemStatisticsFather = (
446fb726d48Sopenharmony_ci  leftNs: number,
447fb726d48Sopenharmony_ci  rightNs: number
448fb726d48Sopenharmony_ci): //@ts-ignore
449fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
450fb726d48Sopenharmony_ci  query(
451fb726d48Sopenharmony_ci    'getTabPaneFilesystemStatisticsFather',
452fb726d48Sopenharmony_ci    `
453fb726d48Sopenharmony_ci    select SUM(dur) as allDuration,
454fb726d48Sopenharmony_ci    count(f.type) as count,
455fb726d48Sopenharmony_ci    min(dur) as minDuration,
456fb726d48Sopenharmony_ci    max(dur) as maxDuration,
457fb726d48Sopenharmony_ci    round(avg(dur),2) as avgDuration,
458fb726d48Sopenharmony_ci    p.name,
459fb726d48Sopenharmony_ci    f.type,
460fb726d48Sopenharmony_ci    p.pid,
461fb726d48Sopenharmony_ci    sum(ifnull(size,0)) as size
462fb726d48Sopenharmony_ci    from file_system_sample as f
463fb726d48Sopenharmony_ci    left join process as p on f.ipid=p.ipid
464fb726d48Sopenharmony_ci    where f.start_ts >= $leftNs
465fb726d48Sopenharmony_ci    and end_ts <= $rightNs
466fb726d48Sopenharmony_ci    group by f.type;
467fb726d48Sopenharmony_ci    `,
468fb726d48Sopenharmony_ci    { $leftNs: leftNs, $rightNs: rightNs }
469fb726d48Sopenharmony_ci  );
470fb726d48Sopenharmony_ci
471fb726d48Sopenharmony_ciexport const getTabPaneFilesystemStatisticsChild = (
472fb726d48Sopenharmony_ci  leftNs: number,
473fb726d48Sopenharmony_ci  rightNs: number
474fb726d48Sopenharmony_ci): //@ts-ignore
475fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
476fb726d48Sopenharmony_ci  query(
477fb726d48Sopenharmony_ci    'getTabPaneFilesystemStatisticsChild',
478fb726d48Sopenharmony_ci    `
479fb726d48Sopenharmony_ci    select SUM(dur)    as allDuration,
480fb726d48Sopenharmony_ci        count(f.type) as count,
481fb726d48Sopenharmony_ci        min(dur)    as minDuration,
482fb726d48Sopenharmony_ci        max(dur)    as maxDuration,
483fb726d48Sopenharmony_ci        round(avg(dur),2)    as avgDuration,
484fb726d48Sopenharmony_ci        p.name,
485fb726d48Sopenharmony_ci        p.pid,
486fb726d48Sopenharmony_ci        f.type,
487fb726d48Sopenharmony_ci        sum(ifnull(size,0))    as size
488fb726d48Sopenharmony_ci        from file_system_sample as f left join process as p on f.ipid=p.ipid
489fb726d48Sopenharmony_ci        where f.start_ts >= $leftNs
490fb726d48Sopenharmony_ci        and end_ts <= $rightNs
491fb726d48Sopenharmony_ci        group by f.type, f.ipid;
492fb726d48Sopenharmony_ci`,
493fb726d48Sopenharmony_ci    { $leftNs: leftNs, $rightNs: rightNs }
494fb726d48Sopenharmony_ci  );
495fb726d48Sopenharmony_ci
496fb726d48Sopenharmony_ciexport const getTabPaneFilesystemStatisticsAll = (
497fb726d48Sopenharmony_ci  leftNs: number,
498fb726d48Sopenharmony_ci  rightNs: number
499fb726d48Sopenharmony_ci): //@ts-ignore
500fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
501fb726d48Sopenharmony_ci  query(
502fb726d48Sopenharmony_ci    'getTabPaneFilesystemStatisticsAll',
503fb726d48Sopenharmony_ci    `
504fb726d48Sopenharmony_ci    select SUM(dur)    as allDuration,
505fb726d48Sopenharmony_ci       count(type) as count,
506fb726d48Sopenharmony_ci       min(dur)    as minDuration,
507fb726d48Sopenharmony_ci       max(dur)    as maxDuration,
508fb726d48Sopenharmony_ci       round(avg(dur),2)    as avgDuration,
509fb726d48Sopenharmony_ci       type
510fb726d48Sopenharmony_ci    from file_system_sample
511fb726d48Sopenharmony_ci    where start_ts <= $rightNs
512fb726d48Sopenharmony_ci    and end_ts >= $leftNs;
513fb726d48Sopenharmony_ci`,
514fb726d48Sopenharmony_ci    { $leftNs: leftNs, $rightNs: rightNs }
515fb726d48Sopenharmony_ci  );
516fb726d48Sopenharmony_ci
517fb726d48Sopenharmony_ciexport const getTabPaneFilesystemStatistics = (
518fb726d48Sopenharmony_ci  leftNs: number,
519fb726d48Sopenharmony_ci  rightNs: number,
520fb726d48Sopenharmony_ci  types: number[]
521fb726d48Sopenharmony_ci): //@ts-ignore
522fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
523fb726d48Sopenharmony_ci  query(
524fb726d48Sopenharmony_ci    'getTabPaneFilesystemStatistics',
525fb726d48Sopenharmony_ci    `
526fb726d48Sopenharmony_ci    select p.pid,
527fb726d48Sopenharmony_ci       ifnull(p.name,'Process') as name,
528fb726d48Sopenharmony_ci       f.type,
529fb726d48Sopenharmony_ci       count(f.ipid) as count,
530fb726d48Sopenharmony_ci       sum(ifnull(size,0)) as size,
531fb726d48Sopenharmony_ci       sum(case when f.type = 2 then ifnull(size,0) else 0 end) as logicalReads,
532fb726d48Sopenharmony_ci       sum(case when f.type = 3 then ifnull(size,0) else 0 end) as logicalWrites,
533fb726d48Sopenharmony_ci       sum(case when f.type != 2 and f.type != 3 then ifnull(size,0) else 0 end) as otherFile,
534fb726d48Sopenharmony_ci       sum(dur) as allDuration,
535fb726d48Sopenharmony_ci       min(dur) as minDuration,
536fb726d48Sopenharmony_ci       max(dur) as maxDuration,
537fb726d48Sopenharmony_ci       avg(dur) as avgDuration
538fb726d48Sopenharmony_ci    from file_system_sample as f left join process as p on f.ipid=p.ipid
539fb726d48Sopenharmony_ci    where f.end_ts >= $leftNs
540fb726d48Sopenharmony_ci    and f.start_ts <= $rightNs
541fb726d48Sopenharmony_ci    and f.type in (${types.join(',')})
542fb726d48Sopenharmony_ci    group by f.type,f.ipid
543fb726d48Sopenharmony_ci    order by f.type;
544fb726d48Sopenharmony_ci`,
545fb726d48Sopenharmony_ci    { $leftNs: leftNs, $rightNs: rightNs }
546fb726d48Sopenharmony_ci  );
547fb726d48Sopenharmony_ci
548fb726d48Sopenharmony_ciexport const getTabPaneIOTierStatisticsData = (
549fb726d48Sopenharmony_ci  leftNs: number,
550fb726d48Sopenharmony_ci  rightNs: number,
551fb726d48Sopenharmony_ci  diskIOipids: Array<number>
552fb726d48Sopenharmony_ci): //@ts-ignore
553fb726d48Sopenharmony_ciPromise<Array<unknown>> => {
554fb726d48Sopenharmony_ci  let str = '';
555fb726d48Sopenharmony_ci  if (diskIOipids.length > 0) {
556fb726d48Sopenharmony_ci    str = ` and i.ipid in (${diskIOipids.join(',')})`;
557fb726d48Sopenharmony_ci  }
558fb726d48Sopenharmony_ci  return query(
559fb726d48Sopenharmony_ci    'getTabPaneIOTierStatisticsData',
560fb726d48Sopenharmony_ci    `
561fb726d48Sopenharmony_ci    select p.pid,
562fb726d48Sopenharmony_ci       ifnull(p.name,'Process') as pname,
563fb726d48Sopenharmony_ci       i.tier,
564fb726d48Sopenharmony_ci       i.ipid,
565fb726d48Sopenharmony_ci       path_id as path,
566fb726d48Sopenharmony_ci       count(i.ipid) as count,
567fb726d48Sopenharmony_ci       sum(latency_dur) as allDuration,
568fb726d48Sopenharmony_ci       min(latency_dur) as minDuration,
569fb726d48Sopenharmony_ci       max(latency_dur) as maxDuration,
570fb726d48Sopenharmony_ci       avg(latency_dur) as avgDuration
571fb726d48Sopenharmony_ci    from bio_latency_sample as i left join process as p on i.ipid=p.ipid
572fb726d48Sopenharmony_ci    where i.end_ts+latency_dur >= $leftNs
573fb726d48Sopenharmony_ci    and i.start_ts+latency_dur <= $rightNs
574fb726d48Sopenharmony_ci    ${str}
575fb726d48Sopenharmony_ci    group by i.tier,i.ipid,i.path_id
576fb726d48Sopenharmony_ci    order by i.tier;
577fb726d48Sopenharmony_ci`,
578fb726d48Sopenharmony_ci    { $leftNs: leftNs, $rightNs: rightNs }
579fb726d48Sopenharmony_ci  );
580fb726d48Sopenharmony_ci};
581fb726d48Sopenharmony_ci
582fb726d48Sopenharmony_ciexport const getTabPaneFrequencySampleData = (
583fb726d48Sopenharmony_ci  leftNs: number,
584fb726d48Sopenharmony_ci  rightNs: number,
585fb726d48Sopenharmony_ci  cpuFreqFilterIds: Array<number>
586fb726d48Sopenharmony_ci): //@ts-ignore
587fb726d48Sopenharmony_ciPromise<Array<unknown>> => {
588fb726d48Sopenharmony_ci  let str = '';
589fb726d48Sopenharmony_ci  if (cpuFreqFilterIds.length > 0) {
590fb726d48Sopenharmony_ci    str = ` and filter_id in (${cpuFreqFilterIds.join(',')})`;
591fb726d48Sopenharmony_ci  }
592fb726d48Sopenharmony_ci  return query(
593fb726d48Sopenharmony_ci    'getTabPaneFrequencySampleData',
594fb726d48Sopenharmony_ci    `
595fb726d48Sopenharmony_ci    select value, filter_id as filterId, ts, f.cpu
596fb726d48Sopenharmony_ci    from measure left join cpu_measure_filter as f on f.id=filter_id
597fb726d48Sopenharmony_ci    where
598fb726d48Sopenharmony_ci    ts <= $rightNs${str} order by ts asc;
599fb726d48Sopenharmony_ci`,
600fb726d48Sopenharmony_ci    { $leftNs: leftNs, $rightNs: rightNs }, {traceId: Utils.currentSelectTrace}
601fb726d48Sopenharmony_ci  );
602fb726d48Sopenharmony_ci};
603fb726d48Sopenharmony_ci
604fb726d48Sopenharmony_ciexport const getFileSysChartDataByType = (
605fb726d48Sopenharmony_ci  type: number
606fb726d48Sopenharmony_ci): //@ts-ignore
607fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
608fb726d48Sopenharmony_ci  query(
609fb726d48Sopenharmony_ci    'getFileSysChartData',
610fb726d48Sopenharmony_ci    `
611fb726d48Sopenharmony_ci    select
612fb726d48Sopenharmony_ci       (A.start_ts -B.start_ts) as startNS,
613fb726d48Sopenharmony_ci       (A.end_ts - B.start_ts) as endNS,
614fb726d48Sopenharmony_ci       dur
615fb726d48Sopenharmony_ci    from file_system_sample A,trace_range B
616fb726d48Sopenharmony_ci    where type = $type and startNS > 0;`,
617fb726d48Sopenharmony_ci    { $type: type }
618fb726d48Sopenharmony_ci  );
619fb726d48Sopenharmony_ci
620fb726d48Sopenharmony_ciexport const getDiskIOProcess = (): //@ts-ignore
621fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
622fb726d48Sopenharmony_ci  query(
623fb726d48Sopenharmony_ci    'getDiskIOProcess',
624fb726d48Sopenharmony_ci    `
625fb726d48Sopenharmony_ci    select name,B.ipid,pid
626fb726d48Sopenharmony_ci    from (select distinct ipid from bio_latency_sample A,trace_range B 
627fb726d48Sopenharmony_ci    where A.start_ts between B.start_ts and B.end_ts) A
628fb726d48Sopenharmony_ci    left join process B on A.ipid = B.ipid;`,
629fb726d48Sopenharmony_ci    {}
630fb726d48Sopenharmony_ci  );
631fb726d48Sopenharmony_ci
632fb726d48Sopenharmony_ciexport const getDiskIOLatencyChartDataByProcess = (
633fb726d48Sopenharmony_ci  all: boolean,
634fb726d48Sopenharmony_ci  ipid: number,
635fb726d48Sopenharmony_ci  typeArr: Array<number>
636fb726d48Sopenharmony_ci): //@ts-ignore
637fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
638fb726d48Sopenharmony_ci  query(
639fb726d48Sopenharmony_ci    'getDiskIOLatencyChartDataByProcess',
640fb726d48Sopenharmony_ci    `
641fb726d48Sopenharmony_ci    select
642fb726d48Sopenharmony_ci       (A.start_ts -B.start_ts) as startNS,
643fb726d48Sopenharmony_ci       (A.start_ts - B.start_ts + A.latency_dur) as endNS,
644fb726d48Sopenharmony_ci       latency_dur as dur
645fb726d48Sopenharmony_ci    from bio_latency_sample A,trace_range B
646fb726d48Sopenharmony_ci    where type in (${typeArr.join(',')}) and startNS > 0
647fb726d48Sopenharmony_ci        ${all ? '' : 'and ipid = ' + ipid}
648fb726d48Sopenharmony_ci    order by A.start_ts;`,
649fb726d48Sopenharmony_ci    {}
650fb726d48Sopenharmony_ci  );
651fb726d48Sopenharmony_ci
652fb726d48Sopenharmony_ciexport const queryAnomalyData = (): Promise<Array<EnergyAnomalyStruct>> =>
653fb726d48Sopenharmony_ci  query(
654fb726d48Sopenharmony_ci    'queryAnomalyData',
655fb726d48Sopenharmony_ci    `select 
656fb726d48Sopenharmony_ci       S.id,
657fb726d48Sopenharmony_ci      (S.ts - TR.start_ts) as startNS,
658fb726d48Sopenharmony_ci      D.data as eventName,
659fb726d48Sopenharmony_ci      D2.data as appKey, 
660fb726d48Sopenharmony_ci      (case when S.type==1 then group_concat(S.string_value,',') else group_concat(S.int_value,',') 
661fb726d48Sopenharmony_ci      end) as Value
662fb726d48Sopenharmony_ci      from trace_range AS TR,hisys_event_measure as S 
663fb726d48Sopenharmony_ci      left join data_dict as D on D.id=S.name_id 
664fb726d48Sopenharmony_ci      left join app_name as APP on APP.id=S.key_id 
665fb726d48Sopenharmony_ci      left join data_dict as D2 on D2.id=APP.app_key
666fb726d48Sopenharmony_ci      where D.data in ('ANOMALY_SCREEN_OFF_ENERGY','ANOMALY_KERNEL_WAKELOCK',
667fb726d48Sopenharmony_ci      'ANOMALY_CPU_HIGH_FREQUENCY','ANOMALY_WAKEUP')
668fb726d48Sopenharmony_ci     or (D.data in ('ANOMALY_RUNNINGLOCK','ANORMALY_APP_ENERGY','ANOMALY_GNSS_ENERGY',
669fb726d48Sopenharmony_ci     'ANOMALY_CPU_ENERGY','ANOMALY_ALARM_WAKEUP') and D2.data in ("APPNAME")) 
670fb726d48Sopenharmony_ci      group by S.serial,D.data`
671fb726d48Sopenharmony_ci  );
672fb726d48Sopenharmony_ci
673fb726d48Sopenharmony_ciexport const querySystemLocationData = (): Promise<
674fb726d48Sopenharmony_ci  Array<{
675fb726d48Sopenharmony_ci    ts: string;
676fb726d48Sopenharmony_ci    eventName: string;
677fb726d48Sopenharmony_ci    appKey: string;
678fb726d48Sopenharmony_ci    Value: string;
679fb726d48Sopenharmony_ci  }>
680fb726d48Sopenharmony_ci> =>
681fb726d48Sopenharmony_ci  query(
682fb726d48Sopenharmony_ci    'querySystemLocationData',
683fb726d48Sopenharmony_ci    `SELECT
684fb726d48Sopenharmony_ci        ( S.ts - TR.start_ts ) AS ts,
685fb726d48Sopenharmony_ci        D.data AS eventName,
686fb726d48Sopenharmony_ci        D2.data AS appKey,
687fb726d48Sopenharmony_ci        group_concat( ( CASE WHEN S.type == 1 THEN S.string_value ELSE S.int_value END ), ',' ) AS Value 
688fb726d48Sopenharmony_ci        FROM
689fb726d48Sopenharmony_ci        trace_range AS TR,
690fb726d48Sopenharmony_ci        hisys_event_measure AS S
691fb726d48Sopenharmony_ci        LEFT JOIN data_dict AS D ON D.id = S.name_id
692fb726d48Sopenharmony_ci        LEFT JOIN app_name AS APP ON APP.id = S.key_id
693fb726d48Sopenharmony_ci        LEFT JOIN data_dict AS D2 ON D2.id = APP.app_key 
694fb726d48Sopenharmony_ci        WHERE
695fb726d48Sopenharmony_ci        D.data = 'GNSS_STATE' AND D2.data = 'STATE'
696fb726d48Sopenharmony_ci        GROUP BY
697fb726d48Sopenharmony_ci        S.serial,
698fb726d48Sopenharmony_ci        APP.app_key,
699fb726d48Sopenharmony_ci        D.data,
700fb726d48Sopenharmony_ci        D2.data;`
701fb726d48Sopenharmony_ci  );
702fb726d48Sopenharmony_ci
703fb726d48Sopenharmony_ciexport const querySystemLockData = (): Promise<
704fb726d48Sopenharmony_ci  Array<{
705fb726d48Sopenharmony_ci    ts: string;
706fb726d48Sopenharmony_ci    eventName: string;
707fb726d48Sopenharmony_ci    appKey: string;
708fb726d48Sopenharmony_ci    Value: string;
709fb726d48Sopenharmony_ci  }>
710fb726d48Sopenharmony_ci> =>
711fb726d48Sopenharmony_ci  query(
712fb726d48Sopenharmony_ci    'querySystemLockData',
713fb726d48Sopenharmony_ci    `SELECT
714fb726d48Sopenharmony_ci        ( S.ts - TR.start_ts ) AS ts,
715fb726d48Sopenharmony_ci        D.data AS eventName,
716fb726d48Sopenharmony_ci        D2.data AS appKey,
717fb726d48Sopenharmony_ci        group_concat(( CASE WHEN S.type == 1 THEN S.string_value ELSE S.int_value END ), ',' ) AS Value 
718fb726d48Sopenharmony_ci        FROM
719fb726d48Sopenharmony_ci        trace_range AS TR,
720fb726d48Sopenharmony_ci        hisys_event_measure AS S
721fb726d48Sopenharmony_ci        LEFT JOIN data_dict AS D ON D.id = S.name_id
722fb726d48Sopenharmony_ci        LEFT JOIN app_name AS APP ON APP.id = S.key_id
723fb726d48Sopenharmony_ci        LEFT JOIN data_dict AS D2 ON D2.id = APP.app_key 
724fb726d48Sopenharmony_ci        WHERE
725fb726d48Sopenharmony_ci        ( D.data = 'POWER_RUNNINGLOCK' AND D2.data in ('TAG','MESSAGE')) 
726fb726d48Sopenharmony_ci        GROUP BY
727fb726d48Sopenharmony_ci        S.serial;`
728fb726d48Sopenharmony_ci  );
729fb726d48Sopenharmony_ci
730fb726d48Sopenharmony_ciexport const querySystemAllData = (): Promise<
731fb726d48Sopenharmony_ci  Array<{
732fb726d48Sopenharmony_ci    id: number;
733fb726d48Sopenharmony_ci    eventName: string;
734fb726d48Sopenharmony_ci    eventValue: string;
735fb726d48Sopenharmony_ci  }>
736fb726d48Sopenharmony_ci> =>
737fb726d48Sopenharmony_ci  query(
738fb726d48Sopenharmony_ci    'querySystemAllData',
739fb726d48Sopenharmony_ci    `SELECT
740fb726d48Sopenharmony_ci      S.id,
741fb726d48Sopenharmony_ci      D.data AS eventName,
742fb726d48Sopenharmony_ci      contents AS eventValue
743fb726d48Sopenharmony_ci     FROM
744fb726d48Sopenharmony_ci      trace_range AS TR,
745fb726d48Sopenharmony_ci      hisys_all_event AS S
746fb726d48Sopenharmony_ci          LEFT JOIN data_dict AS D ON S.event_name_id = D.id
747fb726d48Sopenharmony_ci          LEFT JOIN data_dict AS D2 ON S.domain_id = D2.id
748fb726d48Sopenharmony_ci     WHERE
749fb726d48Sopenharmony_ci       eventName IN ( 'POWER_RUNNINGLOCK', 'GNSS_STATE', 'WORK_REMOVE', 'WORK_STOP', 'WORK_ADD' );`
750fb726d48Sopenharmony_ci  );
751fb726d48Sopenharmony_ci
752fb726d48Sopenharmony_ciexport const querySystemSchedulerData = (): Promise<
753fb726d48Sopenharmony_ci  Array<{
754fb726d48Sopenharmony_ci    startNs: string;
755fb726d48Sopenharmony_ci    eventName: string;
756fb726d48Sopenharmony_ci    appKey: string;
757fb726d48Sopenharmony_ci    Value: string;
758fb726d48Sopenharmony_ci  }>
759fb726d48Sopenharmony_ci> =>
760fb726d48Sopenharmony_ci  query(
761fb726d48Sopenharmony_ci    'querySystemSchedulerData',
762fb726d48Sopenharmony_ci    `SELECT
763fb726d48Sopenharmony_ci      ( S.ts - TR.start_ts ) AS startNs,
764fb726d48Sopenharmony_ci      D.data AS eventName,
765fb726d48Sopenharmony_ci      group_concat(D2.data, ',') AS appKey,
766fb726d48Sopenharmony_ci      group_concat( ( CASE WHEN S.type == 1 THEN S.string_value ELSE S.int_value END ), ',' ) AS Value 
767fb726d48Sopenharmony_ci      FROM
768fb726d48Sopenharmony_ci      trace_range AS TR,
769fb726d48Sopenharmony_ci      hisys_event_measure AS S
770fb726d48Sopenharmony_ci      LEFT JOIN data_dict AS D ON D.id = S.name_id
771fb726d48Sopenharmony_ci      LEFT JOIN app_name AS APP ON APP.id = S.key_id
772fb726d48Sopenharmony_ci      LEFT JOIN data_dict AS D2 ON D2.id = APP.app_key 
773fb726d48Sopenharmony_ci      WHERE
774fb726d48Sopenharmony_ci      D.data IN ( 'WORK_REMOVE', 'WORK_STOP', 'WORK_ADD' ) AND D2.data in ('NAME','TYPE','WORKID') 
775fb726d48Sopenharmony_ci      GROUP BY
776fb726d48Sopenharmony_ci      S.serial;`
777fb726d48Sopenharmony_ci  );
778fb726d48Sopenharmony_ci
779fb726d48Sopenharmony_ciexport const querySystemDetailsData = (rightNs: number, eventName: string): Promise<Array<SystemDetailsEnergy>> =>
780fb726d48Sopenharmony_ci  query(
781fb726d48Sopenharmony_ci    'querySystemDetailsData',
782fb726d48Sopenharmony_ci    `SELECT
783fb726d48Sopenharmony_ci        ( S.ts - TR.start_ts ) AS ts,
784fb726d48Sopenharmony_ci        D.data AS eventName,
785fb726d48Sopenharmony_ci        D2.data AS appKey,
786fb726d48Sopenharmony_ci        group_concat( ( CASE WHEN S.type == 1 THEN S.string_value ELSE S.int_value END ), ',' ) AS appValue
787fb726d48Sopenharmony_ci    FROM
788fb726d48Sopenharmony_ci        trace_range AS TR,
789fb726d48Sopenharmony_ci        hisys_event_measure AS S
790fb726d48Sopenharmony_ci        LEFT JOIN data_dict AS D ON D.id = S.name_id
791fb726d48Sopenharmony_ci        LEFT JOIN app_name AS APP ON APP.id = S.key_id
792fb726d48Sopenharmony_ci        LEFT JOIN data_dict AS D2 ON D2.id = APP.app_key
793fb726d48Sopenharmony_ci    WHERE
794fb726d48Sopenharmony_ci        D.data in ($eventName)
795fb726d48Sopenharmony_ci    AND
796fb726d48Sopenharmony_ci        D2.data in ('UID', 'TYPE', 'WORKID', 'NAME', 'INTERVAL', 'TAG', 'STATE', 'STACK', 'APPNAME', 
797fb726d48Sopenharmony_ci        'MESSAGE', 'PID', 'LOG_LEVEL')
798fb726d48Sopenharmony_ci    AND
799fb726d48Sopenharmony_ci        (S.ts - TR.start_ts) <= $rightNS
800fb726d48Sopenharmony_ci    GROUP BY
801fb726d48Sopenharmony_ci        S.serial,
802fb726d48Sopenharmony_ci        APP.app_key,
803fb726d48Sopenharmony_ci        D.data,
804fb726d48Sopenharmony_ci        D2.data;`,
805fb726d48Sopenharmony_ci    { $rightNS: rightNs, $eventName: eventName }
806fb726d48Sopenharmony_ci  );
807fb726d48Sopenharmony_ci
808fb726d48Sopenharmony_ciexport const querySystemWorkData = (rightNs: number): Promise<Array<SystemDetailsEnergy>> =>
809fb726d48Sopenharmony_ci  query(
810fb726d48Sopenharmony_ci    'querySystemWorkData',
811fb726d48Sopenharmony_ci    `SELECT
812fb726d48Sopenharmony_ci    ( S.ts - TR.start_ts ) AS ts,
813fb726d48Sopenharmony_ci    D.data AS eventName,
814fb726d48Sopenharmony_ci    D2.data AS appKey,
815fb726d48Sopenharmony_ci    group_concat( ( CASE WHEN S.type == 1 THEN S.string_value ELSE S.int_value END ), ',' ) AS appValue
816fb726d48Sopenharmony_ci    FROM
817fb726d48Sopenharmony_ci    trace_range AS TR,
818fb726d48Sopenharmony_ci    hisys_event_measure AS S
819fb726d48Sopenharmony_ci    LEFT JOIN data_dict AS D
820fb726d48Sopenharmony_ci    ON D.id = S.name_id
821fb726d48Sopenharmony_ci    LEFT JOIN app_name AS APP
822fb726d48Sopenharmony_ci    ON APP.id = S.key_id
823fb726d48Sopenharmony_ci    LEFT JOIN data_dict AS D2
824fb726d48Sopenharmony_ci    ON D2.id = APP.app_key
825fb726d48Sopenharmony_ci    WHERE
826fb726d48Sopenharmony_ci    D.data in ("WORK_REMOVE", "WORK_STOP", "WORK_ADD", "WORK_START")
827fb726d48Sopenharmony_ci    and
828fb726d48Sopenharmony_ci    D2.data in ('UID', 'TYPE', 'WORKID', 'NAME', 'INTERVAL', 'TAG', 'STATE', 'STACK', 'APPNAME', 
829fb726d48Sopenharmony_ci    'MESSAGE', 'PID', 'LOG_LEVEL')
830fb726d48Sopenharmony_ci    and (S.ts - TR.start_ts) <= $rightNS
831fb726d48Sopenharmony_ci    GROUP BY
832fb726d48Sopenharmony_ci    S.serial,
833fb726d48Sopenharmony_ci    APP.app_key,
834fb726d48Sopenharmony_ci    D.data,
835fb726d48Sopenharmony_ci    D2.data;`,
836fb726d48Sopenharmony_ci    { $rightNS: rightNs }
837fb726d48Sopenharmony_ci  );
838fb726d48Sopenharmony_ci
839fb726d48Sopenharmony_ciexport const queryMaxPowerValue = (
840fb726d48Sopenharmony_ci  appName: string
841fb726d48Sopenharmony_ci): Promise<
842fb726d48Sopenharmony_ci  Array<{
843fb726d48Sopenharmony_ci    maxValue: number;
844fb726d48Sopenharmony_ci  }>
845fb726d48Sopenharmony_ci> =>
846fb726d48Sopenharmony_ci  query(
847fb726d48Sopenharmony_ci    'queryMaxPowerValue',
848fb726d48Sopenharmony_ci    `SELECT
849fb726d48Sopenharmony_ci    max( item ) AS maxValue 
850fb726d48Sopenharmony_ci    FROM
851fb726d48Sopenharmony_ci    (
852fb726d48Sopenharmony_ci    SELECT 
853fb726d48Sopenharmony_ci    sum( energy + background_energy + screen_on_energy + screen_off_energy + foreground_energy ) AS item 
854fb726d48Sopenharmony_ci    FROM 
855fb726d48Sopenharmony_ci    energy 
856fb726d48Sopenharmony_ci    WHERE 
857fb726d48Sopenharmony_ci    app_name = $appName 
858fb726d48Sopenharmony_ci    GROUP BY 
859fb726d48Sopenharmony_ci    startNs);`,
860fb726d48Sopenharmony_ci    { $appName: appName }
861fb726d48Sopenharmony_ci  );
862fb726d48Sopenharmony_ci
863fb726d48Sopenharmony_ciexport const queryMaxStateValue = (
864fb726d48Sopenharmony_ci  eventName: string
865fb726d48Sopenharmony_ci): Promise<
866fb726d48Sopenharmony_ci  Array<{
867fb726d48Sopenharmony_ci    type: string;
868fb726d48Sopenharmony_ci    maxValue: number;
869fb726d48Sopenharmony_ci  }>
870fb726d48Sopenharmony_ci> =>
871fb726d48Sopenharmony_ci  query(
872fb726d48Sopenharmony_ci    'queryMaxStateValue',
873fb726d48Sopenharmony_ci    `select 
874fb726d48Sopenharmony_ci  D.data as type,
875fb726d48Sopenharmony_ci  max(S.int_value) as maxValue 
876fb726d48Sopenharmony_ci  from trace_range AS TR,hisys_event_measure as S 
877fb726d48Sopenharmony_ci  left join data_dict as D on D.id=S.name_id 
878fb726d48Sopenharmony_ci  left join app_name as APP on APP.id=S.key_id 
879fb726d48Sopenharmony_ci  left join data_dict as D2 on D2.id=APP.app_key
880fb726d48Sopenharmony_ci  where (case when 'SENSOR_STATE'==$eventName then D.data like '%SENSOR%' else D.data = $eventName end)
881fb726d48Sopenharmony_ci  and D2.data in ('BRIGHTNESS','STATE','VALUE','LEVEL','VOLUME','OPER_TYPE','VOLUME')
882fb726d48Sopenharmony_ci  group by APP.app_key,D.data,D2.data;`,
883fb726d48Sopenharmony_ci    { $eventName: eventName }
884fb726d48Sopenharmony_ci  );
885fb726d48Sopenharmony_ci
886fb726d48Sopenharmony_ciexport const queryStateData = (eventName: string): Promise<Array<EnergyStateStruct>> =>
887fb726d48Sopenharmony_ci  query(
888fb726d48Sopenharmony_ci    'queryStateData',
889fb726d48Sopenharmony_ci    `select
890fb726d48Sopenharmony_ci  (S.ts-TR.start_ts) as startNs,
891fb726d48Sopenharmony_ci  D.data as type,
892fb726d48Sopenharmony_ci  D2.data as appKey, 
893fb726d48Sopenharmony_ci  S.int_value as value 
894fb726d48Sopenharmony_ci  from trace_range AS TR,hisys_event_measure as S 
895fb726d48Sopenharmony_ci  left join data_dict as D on D.id=S.name_id 
896fb726d48Sopenharmony_ci  left join app_name as APP on APP.id=S.key_id 
897fb726d48Sopenharmony_ci  left join data_dict as D2 on D2.id=APP.app_key
898fb726d48Sopenharmony_ci  where (case when 'SENSOR_STATE'==$eventName then D.data like '%SENSOR%' else D.data = $eventName end)
899fb726d48Sopenharmony_ci  and D2.data in ('BRIGHTNESS','STATE','VALUE','LEVEL','VOLUME','OPER_TYPE','VOLUME')
900fb726d48Sopenharmony_ci  group by S.serial,APP.app_key,D.data,D2.data;`,
901fb726d48Sopenharmony_ci    { $eventName: eventName }
902fb726d48Sopenharmony_ci  );
903fb726d48Sopenharmony_ci
904fb726d48Sopenharmony_ciexport const queryEnergyAppName = (): Promise<
905fb726d48Sopenharmony_ci  Array<{
906fb726d48Sopenharmony_ci    string_value: string | null;
907fb726d48Sopenharmony_ci  }>
908fb726d48Sopenharmony_ci> =>
909fb726d48Sopenharmony_ci  query(
910fb726d48Sopenharmony_ci    'queryEnergyAppName',
911fb726d48Sopenharmony_ci    `
912fb726d48Sopenharmony_ci    SELECT
913fb726d48Sopenharmony_ci    DISTINCT hisys_event_measure.string_value from data_dict 
914fb726d48Sopenharmony_ci    left join app_name on app_name.app_key=data_dict.id 
915fb726d48Sopenharmony_ci    left join hisys_event_measure on hisys_event_measure.key_id = app_name.id
916fb726d48Sopenharmony_ci    where data_dict.data = "APPNAME"`
917fb726d48Sopenharmony_ci  );
918fb726d48Sopenharmony_ci
919fb726d48Sopenharmony_ciexport const getTabIoCompletionTimesType = (startTime: number, endTime: number): Promise<Array<string>> =>
920fb726d48Sopenharmony_ci  query(
921fb726d48Sopenharmony_ci    'getTabIoCompletionTimesType',
922fb726d48Sopenharmony_ci    `
923fb726d48Sopenharmony_ci    SELECT tier from bio_latency_sample s,trace_range t
924fb726d48Sopenharmony_ci     WHERE s.start_ts + s.latency_dur >= $startTime + t.start_ts 
925fb726d48Sopenharmony_ci     and s.start_ts <= $endTime + t.start_ts group by tier`,
926fb726d48Sopenharmony_ci    { $startTime: startTime, $endTime: endTime }
927fb726d48Sopenharmony_ci  );
928fb726d48Sopenharmony_ci
929fb726d48Sopenharmony_ciexport const queryEnergyEventExits = (): //@ts-ignore
930fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
931fb726d48Sopenharmony_ci  query(
932fb726d48Sopenharmony_ci    'queryEnergyEventExits',
933fb726d48Sopenharmony_ci    `select 
934fb726d48Sopenharmony_ci      event_name 
935fb726d48Sopenharmony_ci      from stat s 
936fb726d48Sopenharmony_ci      where s.event_name = 'trace_hisys_event' 
937fb726d48Sopenharmony_ci      and s.stat_type ='received' and s.count > 0`
938fb726d48Sopenharmony_ci  );
939fb726d48Sopenharmony_ci
940fb726d48Sopenharmony_ciexport const querySysLockDetailsData = (rightNs: number, eventName: string): Promise<Array<SystemDetailsEnergy>> =>
941fb726d48Sopenharmony_ci  query(
942fb726d48Sopenharmony_ci    'querySysLockDetailsData',
943fb726d48Sopenharmony_ci    `SELECT
944fb726d48Sopenharmony_ci      ( S.ts - TR.start_ts ) AS ts,
945fb726d48Sopenharmony_ci      D.data AS eventName,
946fb726d48Sopenharmony_ci      D2.data AS appKey,
947fb726d48Sopenharmony_ci      group_concat( ( CASE WHEN S.type == 1 THEN S.string_value ELSE S.int_value END ), ',' ) AS appValue
948fb726d48Sopenharmony_ci    FROM
949fb726d48Sopenharmony_ci      trace_range AS TR,
950fb726d48Sopenharmony_ci      hisys_event_measure AS S
951fb726d48Sopenharmony_ci      LEFT JOIN data_dict AS D ON D.id = S.name_id
952fb726d48Sopenharmony_ci      LEFT JOIN app_name AS APP ON APP.id = S.key_id
953fb726d48Sopenharmony_ci      LEFT JOIN data_dict AS D2 ON D2.id = APP.app_key
954fb726d48Sopenharmony_ci    WHERE
955fb726d48Sopenharmony_ci        D.data in ($eventName)
956fb726d48Sopenharmony_ci    AND
957fb726d48Sopenharmony_ci        D2.data in ('UID', 'TYPE', 'WORKID', 'NAME', 'INTERVAL', 'TAG', 'STATE', 'STACK', 'APPNAME', 
958fb726d48Sopenharmony_ci        'MESSAGE', 'PID', 'LOG_LEVEL')
959fb726d48Sopenharmony_ci    AND
960fb726d48Sopenharmony_ci        (S.ts - TR.start_ts) <= $rightNS
961fb726d48Sopenharmony_ci    GROUP BY
962fb726d48Sopenharmony_ci        S.serial, APP.app_key, D.data, D2.data;`,
963fb726d48Sopenharmony_ci    { $rightNS: rightNs, $eventName: eventName }
964fb726d48Sopenharmony_ci  );
965fb726d48Sopenharmony_ci
966fb726d48Sopenharmony_ciexport const queryStateInitValue = (eventName: string, keyName: string): Promise<Array<EnergyStateStruct>> =>
967fb726d48Sopenharmony_ci  query(
968fb726d48Sopenharmony_ci    'queryStateInitValue',
969fb726d48Sopenharmony_ci    `select
970fb726d48Sopenharmony_ci  0 as startNs,
971fb726d48Sopenharmony_ci  $eventName as type,
972fb726d48Sopenharmony_ci  '' as appKey,
973fb726d48Sopenharmony_ci  (case $keyName
974fb726d48Sopenharmony_ci  when 'brightness' then device_state.brightness
975fb726d48Sopenharmony_ci  when 'wifi' then device_state.wifi
976fb726d48Sopenharmony_ci  when 'bt_state' then device_state.bt_state
977fb726d48Sopenharmony_ci  when 'location' then device_state.location
978fb726d48Sopenharmony_ci  else 0 end) as value
979fb726d48Sopenharmony_ci  from device_state;`,
980fb726d48Sopenharmony_ci    { $eventName: eventName, $keyName: keyName }
981fb726d48Sopenharmony_ci  );
982fb726d48Sopenharmony_ci
983fb726d48Sopenharmony_ciexport const querySysLocationDetailsData = (rightNs: number, eventName: string): Promise<Array<SystemDetailsEnergy>> =>
984fb726d48Sopenharmony_ci  query(
985fb726d48Sopenharmony_ci    'querySysLocationDetailsData',
986fb726d48Sopenharmony_ci    `SELECT
987fb726d48Sopenharmony_ci        ( S.ts - TR.start_ts ) AS ts,
988fb726d48Sopenharmony_ci        D.data AS eventName,
989fb726d48Sopenharmony_ci        D2.data AS appKey,
990fb726d48Sopenharmony_ci        group_concat( ( CASE WHEN S.type == 1 THEN S.string_value ELSE S.int_value END ), ',' ) AS appValue 
991fb726d48Sopenharmony_ci        FROM
992fb726d48Sopenharmony_ci        trace_range AS TR,
993fb726d48Sopenharmony_ci        hisys_event_measure AS S
994fb726d48Sopenharmony_ci        LEFT JOIN data_dict AS D ON D.id = S.name_id
995fb726d48Sopenharmony_ci        LEFT JOIN app_name AS APP ON APP.id = S.key_id
996fb726d48Sopenharmony_ci        LEFT JOIN data_dict AS D2 ON D2.id = APP.app_key 
997fb726d48Sopenharmony_ci        WHERE
998fb726d48Sopenharmony_ci        D.data in ($eventName) 
999fb726d48Sopenharmony_ci        and 
1000fb726d48Sopenharmony_ci        D2.data in ('UID', 'TYPE', 'WORKID', 'NAME', 'INTERVAL', 'TAG', 'STATE', 'STACK', 
1001fb726d48Sopenharmony_ci        'APPNAME', 'MESSAGE', 'PID', 'LOG_LEVEL')
1002fb726d48Sopenharmony_ci        and (S.ts - TR.start_ts) <= $rightNS
1003fb726d48Sopenharmony_ci        GROUP BY
1004fb726d48Sopenharmony_ci        S.serial,
1005fb726d48Sopenharmony_ci        APP.app_key,
1006fb726d48Sopenharmony_ci        D.data,
1007fb726d48Sopenharmony_ci        D2.data;`,
1008fb726d48Sopenharmony_ci    { $rightNS: rightNs, $eventName: eventName }
1009fb726d48Sopenharmony_ci  );
1010fb726d48Sopenharmony_ciexport const queryConfigEnergyAppName = (): Promise<
1011fb726d48Sopenharmony_ci  Array<{
1012fb726d48Sopenharmony_ci    process_name: string;
1013fb726d48Sopenharmony_ci  }>
1014fb726d48Sopenharmony_ci> =>
1015fb726d48Sopenharmony_ci  query(
1016fb726d48Sopenharmony_ci    'queryConfigEnergyAppName',
1017fb726d48Sopenharmony_ci    `
1018fb726d48Sopenharmony_ci    SELECT value from trace_config where trace_source = 'hisys_event' and key = 'process_name'`
1019fb726d48Sopenharmony_ci  );
1020fb726d48Sopenharmony_ci
1021fb726d48Sopenharmony_ciexport const queryAllExpectedData = (): //@ts-ignore
1022fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
1023fb726d48Sopenharmony_ci  query(
1024fb726d48Sopenharmony_ci    'queryAllExpectedData',
1025fb726d48Sopenharmony_ci    `
1026fb726d48Sopenharmony_ci        SELECT
1027fb726d48Sopenharmony_ci            a.id,
1028fb726d48Sopenharmony_ci            (a.ts - TR.start_ts) AS ts,
1029fb726d48Sopenharmony_ci            a.vsync as name,
1030fb726d48Sopenharmony_ci            a.type,
1031fb726d48Sopenharmony_ci            a.dur,
1032fb726d48Sopenharmony_ci            p.pid,
1033fb726d48Sopenharmony_ci            p.name as cmdline
1034fb726d48Sopenharmony_ci        FROM frame_slice AS a, trace_range AS TR
1035fb726d48Sopenharmony_ci             LEFT JOIN process AS p ON a.ipid = p.ipid
1036fb726d48Sopenharmony_ci        WHERE a.type = 1
1037fb726d48Sopenharmony_ci          and (a.flag <> 2 or a.flag is null)
1038fb726d48Sopenharmony_ci        ORDER BY a.ipid,ts;`
1039fb726d48Sopenharmony_ci  );
1040fb726d48Sopenharmony_ci
1041fb726d48Sopenharmony_ciexport const queryFlowsData = (
1042fb726d48Sopenharmony_ci  src_slice: Array<string>
1043fb726d48Sopenharmony_ci): //@ts-ignore
1044fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
1045fb726d48Sopenharmony_ci  query(
1046fb726d48Sopenharmony_ci    'queryFlowsData',
1047fb726d48Sopenharmony_ci    `
1048fb726d48Sopenharmony_ci    SELECT fs.vsync AS name,
1049fb726d48Sopenharmony_ci        p.pid,
1050fb726d48Sopenharmony_ci        p.name  AS cmdline,
1051fb726d48Sopenharmony_ci        fs.type
1052fb726d48Sopenharmony_ci    FROM frame_slice AS fs
1053fb726d48Sopenharmony_ci    LEFT JOIN process AS p ON fs.ipid = p.ipid
1054fb726d48Sopenharmony_ci    WHERE fs.type = 0
1055fb726d48Sopenharmony_ci        AND fs.id IN (${src_slice.join(',')});`
1056fb726d48Sopenharmony_ci  );
1057fb726d48Sopenharmony_ci
1058fb726d48Sopenharmony_ciexport const queryPrecedingData = (
1059fb726d48Sopenharmony_ci  dst_slice: string
1060fb726d48Sopenharmony_ci): //@ts-ignore
1061fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
1062fb726d48Sopenharmony_ci  query(
1063fb726d48Sopenharmony_ci    'queryFlowsData',
1064fb726d48Sopenharmony_ci    `
1065fb726d48Sopenharmony_ci        SELECT a.vsync AS name,
1066fb726d48Sopenharmony_ci               p.pid,
1067fb726d48Sopenharmony_ci               p.name  AS cmdline,
1068fb726d48Sopenharmony_ci               a.type
1069fb726d48Sopenharmony_ci        FROM frame_slice AS a
1070fb726d48Sopenharmony_ci                 LEFT JOIN process AS p ON a.ipid = p.ipid
1071fb726d48Sopenharmony_ci        WHERE a.type = 0
1072fb726d48Sopenharmony_ci          AND a.id = $dst_slice;`,
1073fb726d48Sopenharmony_ci    { $dst_slice: dst_slice }
1074fb726d48Sopenharmony_ci  );
1075fb726d48Sopenharmony_ci
1076fb726d48Sopenharmony_ciexport const queryFrameTimeData = (): //@ts-ignore
1077fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
1078fb726d48Sopenharmony_ci  query(
1079fb726d48Sopenharmony_ci    'queryFrameTimeData',
1080fb726d48Sopenharmony_ci    `
1081fb726d48Sopenharmony_ci        SELECT DISTINCT p.pid
1082fb726d48Sopenharmony_ci        FROM frame_slice AS a
1083fb726d48Sopenharmony_ci            LEFT JOIN process AS p
1084fb726d48Sopenharmony_ci            ON a.ipid = p.ipid;`
1085fb726d48Sopenharmony_ci  );
1086fb726d48Sopenharmony_ci
1087fb726d48Sopenharmony_ciexport const queryAllSnapshotNames = (): Promise<Array<FileInfo>> =>
1088fb726d48Sopenharmony_ci  query(
1089fb726d48Sopenharmony_ci    'queryAllSnapshotNames',
1090fb726d48Sopenharmony_ci    `SELECT f.id,
1091fb726d48Sopenharmony_ci        f.file_name AS name
1092fb726d48Sopenharmony_ci      FROM
1093fb726d48Sopenharmony_ci        js_heap_files f,
1094fb726d48Sopenharmony_ci        trace_range t
1095fb726d48Sopenharmony_ci      WHERE
1096fb726d48Sopenharmony_ci        ( t.end_ts >= f.end_time AND f.file_name != 'Timeline' )
1097fb726d48Sopenharmony_ci        OR f.file_name = 'Timeline'`
1098fb726d48Sopenharmony_ci  );
1099fb726d48Sopenharmony_ciexport const queryHeapFile = (): Promise<Array<FileInfo>> =>
1100fb726d48Sopenharmony_ci  query(
1101fb726d48Sopenharmony_ci    'queryHeapFile',
1102fb726d48Sopenharmony_ci    `SELECT f.id,
1103fb726d48Sopenharmony_ci        f.file_name AS name,
1104fb726d48Sopenharmony_ci        f.start_time - t.start_ts AS startTs,
1105fb726d48Sopenharmony_ci        f.end_time - t.start_ts AS endTs,
1106fb726d48Sopenharmony_ci        f.self_size AS size,
1107fb726d48Sopenharmony_ci        c.pid
1108fb726d48Sopenharmony_ci      FROM
1109fb726d48Sopenharmony_ci        js_heap_files f,
1110fb726d48Sopenharmony_ci        trace_range t,
1111fb726d48Sopenharmony_ci        js_config c
1112fb726d48Sopenharmony_ci      WHERE
1113fb726d48Sopenharmony_ci        ( t.end_ts >= f.end_time AND f.file_name != 'Timeline' )
1114fb726d48Sopenharmony_ci        OR f.file_name = 'Timeline'`
1115fb726d48Sopenharmony_ci  );
1116fb726d48Sopenharmony_ci
1117fb726d48Sopenharmony_ciexport const queryHeapInfo = (
1118fb726d48Sopenharmony_ci  fileId: number
1119fb726d48Sopenharmony_ci): //@ts-ignore
1120fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
1121fb726d48Sopenharmony_ci  query(
1122fb726d48Sopenharmony_ci    'queryHeapInfo',
1123fb726d48Sopenharmony_ci    `SELECT file_id as fileId, key, type, int_value as intValue, str_value as strValue
1124fb726d48Sopenharmony_ci      FROM js_heap_info WHERE file_id = ${fileId}`
1125fb726d48Sopenharmony_ci  );
1126fb726d48Sopenharmony_ci
1127fb726d48Sopenharmony_ciexport const queryHeapNode = (fileId: number): Promise<Array<HeapNode>> =>
1128fb726d48Sopenharmony_ci  query(
1129fb726d48Sopenharmony_ci    'queryHeapNode',
1130fb726d48Sopenharmony_ci    `SELECT 
1131fb726d48Sopenharmony_ci    node_index as nodeIndex,
1132fb726d48Sopenharmony_ci    type,
1133fb726d48Sopenharmony_ci    name as nameIdx,
1134fb726d48Sopenharmony_ci    id,
1135fb726d48Sopenharmony_ci    self_size as selfSize,
1136fb726d48Sopenharmony_ci    edge_count as edgeCount,
1137fb726d48Sopenharmony_ci    trace_node_id as traceNodeId,
1138fb726d48Sopenharmony_ci    detachedness 
1139fb726d48Sopenharmony_ci    FROM js_heap_nodes WHERE file_id = ${fileId}`
1140fb726d48Sopenharmony_ci  );
1141fb726d48Sopenharmony_ci
1142fb726d48Sopenharmony_ciexport const queryHeapEdge = (fileId: number): Promise<Array<HeapEdge>> =>
1143fb726d48Sopenharmony_ci  query(
1144fb726d48Sopenharmony_ci    'queryHeapEdge',
1145fb726d48Sopenharmony_ci    `SELECT 
1146fb726d48Sopenharmony_ci      edge_index as edgeIndex,
1147fb726d48Sopenharmony_ci      type,
1148fb726d48Sopenharmony_ci      name_or_index as nameOrIndex,
1149fb726d48Sopenharmony_ci      to_node as nodeId,
1150fb726d48Sopenharmony_ci      from_node_id as fromNodeId,
1151fb726d48Sopenharmony_ci      to_node_id as toNodeId
1152fb726d48Sopenharmony_ci    FROM js_heap_edges WHERE file_id = ${fileId}`
1153fb726d48Sopenharmony_ci  );
1154fb726d48Sopenharmony_ciexport const queryHeapSample = (fileId: number): Promise<Array<HeapSample>> =>
1155fb726d48Sopenharmony_ci  query(
1156fb726d48Sopenharmony_ci    'queryHeapSample',
1157fb726d48Sopenharmony_ci    `SELECT timestamp_us as timestamp , last_assigned_id as lastAssignedId, 0 as size
1158fb726d48Sopenharmony_ci      FROM js_heap_sample WHERE file_id = ${fileId}`
1159fb726d48Sopenharmony_ci  );
1160fb726d48Sopenharmony_ci
1161fb726d48Sopenharmony_ciexport const queryHeapLocation = (fileId: number): Promise<Array<HeapLocation>> =>
1162fb726d48Sopenharmony_ci  query(
1163fb726d48Sopenharmony_ci    'queryHeapLocation',
1164fb726d48Sopenharmony_ci    `SELECT object_index as objectIndex,script_id as scriptId ,column
1165fb726d48Sopenharmony_ci      FROM js_heap_location WHERE file_id = ${fileId}`
1166fb726d48Sopenharmony_ci  );
1167fb726d48Sopenharmony_ci
1168fb726d48Sopenharmony_ciexport const queryHeapString = (
1169fb726d48Sopenharmony_ci  fileId: number
1170fb726d48Sopenharmony_ci): //@ts-ignore
1171fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
1172fb726d48Sopenharmony_ci  query(
1173fb726d48Sopenharmony_ci    'queryHeapString',
1174fb726d48Sopenharmony_ci    `SELECT string
1175fb726d48Sopenharmony_ci      FROM js_heap_string WHERE file_id = ${fileId}`
1176fb726d48Sopenharmony_ci  );
1177fb726d48Sopenharmony_ciexport const queryTraceRange = (): Promise<Array<unknown>> =>
1178fb726d48Sopenharmony_ci  query(
1179fb726d48Sopenharmony_ci    'queryTraceRange',
1180fb726d48Sopenharmony_ci    `SELECT 
1181fb726d48Sopenharmony_ci    t.start_ts as startTs, 
1182fb726d48Sopenharmony_ci    t.end_ts as endTs 
1183fb726d48Sopenharmony_ci    FROM trace_range t`
1184fb726d48Sopenharmony_ci  );
1185fb726d48Sopenharmony_ci
1186fb726d48Sopenharmony_ciexport const queryBySelectAllocationOrReturn = (
1187fb726d48Sopenharmony_ci  executeId: string,
1188fb726d48Sopenharmony_ci  itid: number
1189fb726d48Sopenharmony_ci): Promise<
1190fb726d48Sopenharmony_ci  Array<{
1191fb726d48Sopenharmony_ci    tid: number;
1192fb726d48Sopenharmony_ci    allocation_task_row: number;
1193fb726d48Sopenharmony_ci    execute_task_row: number;
1194fb726d48Sopenharmony_ci    return_task_row: number;
1195fb726d48Sopenharmony_ci    priority: number;
1196fb726d48Sopenharmony_ci  }>
1197fb726d48Sopenharmony_ci> => {
1198fb726d48Sopenharmony_ci  let sqlStr = `SELECT thread.tid,
1199fb726d48Sopenharmony_ci                       task_pool.allocation_task_row,
1200fb726d48Sopenharmony_ci                       task_pool.execute_task_row,
1201fb726d48Sopenharmony_ci                       task_pool.return_task_row,
1202fb726d48Sopenharmony_ci                       task_pool.priority
1203fb726d48Sopenharmony_ci                FROM task_pool
1204fb726d48Sopenharmony_ci                       LEFT JOIN callstack ON callstack.id = task_pool.execute_task_row
1205fb726d48Sopenharmony_ci                       LEFT JOIN thread ON thread.id = callstack.callid
1206fb726d48Sopenharmony_ci                WHERE task_pool.execute_task_row IS NOT NULL AND task_pool.task_id = $executeId
1207fb726d48Sopenharmony_ci                AND task_pool.allocation_itid = $itid;
1208fb726d48Sopenharmony_ci    `;
1209fb726d48Sopenharmony_ci  return query('queryBySelectAllocationOrReturn', sqlStr, { $executeId: executeId, $itid: itid });
1210fb726d48Sopenharmony_ci};
1211fb726d48Sopenharmony_ci
1212fb726d48Sopenharmony_ciexport const queryTaskListByExecuteTaskIds = (
1213fb726d48Sopenharmony_ci  executeTaskIds: Array<number>,
1214fb726d48Sopenharmony_ci  ipid: number
1215fb726d48Sopenharmony_ci): Promise<Array<TaskTabStruct>> => {
1216fb726d48Sopenharmony_ci  let sqlStr = `
1217fb726d48Sopenharmony_ci    SELECT thread.ipid,
1218fb726d48Sopenharmony_ci           task_pool.allocation_task_row AS allocationTaskRow,
1219fb726d48Sopenharmony_ci           task_pool.execute_task_row    AS executeTaskRow,
1220fb726d48Sopenharmony_ci           task_pool.return_task_row     AS returnTaskRow,
1221fb726d48Sopenharmony_ci           task_pool.task_id          AS executeId,
1222fb726d48Sopenharmony_ci           task_pool.priority
1223fb726d48Sopenharmony_ci    FROM task_pool
1224fb726d48Sopenharmony_ci           LEFT JOIN callstack ON callstack.id = task_pool.allocation_task_row
1225fb726d48Sopenharmony_ci           LEFT JOIN thread ON thread.id = callstack.callid
1226fb726d48Sopenharmony_ci    WHERE task_pool.task_id IN (${executeTaskIds.join(',')})
1227fb726d48Sopenharmony_ci      AND thread.ipid = $ipid
1228fb726d48Sopenharmony_ci      AND task_pool.execute_task_row IS NOT NULL;
1229fb726d48Sopenharmony_ci    `;
1230fb726d48Sopenharmony_ci  return query('queryTaskListByExecuteTaskIds', sqlStr, { $executeTaskIds: executeTaskIds, $ipid: ipid });
1231fb726d48Sopenharmony_ci};
1232fb726d48Sopenharmony_ci
1233fb726d48Sopenharmony_ciexport const queryTaskPoolCallStack = (): Promise<Array<{ id: number; ts: number; dur: number; name: string }>> => {
1234fb726d48Sopenharmony_ci  let sqlStr = `
1235fb726d48Sopenharmony_ci  select 
1236fb726d48Sopenharmony_ci    * 
1237fb726d48Sopenharmony_ci  from callstack where name like 'H:Task%';`;
1238fb726d48Sopenharmony_ci  return query('queryTaskPoolCallStack', sqlStr, {});
1239fb726d48Sopenharmony_ci};
1240fb726d48Sopenharmony_ci
1241fb726d48Sopenharmony_ciexport const queryTaskPoolTotalNum = (itid: number): Promise<number[]> =>
1242fb726d48Sopenharmony_ci  query<number>(
1243fb726d48Sopenharmony_ci    'queryTaskPoolTotalNum',
1244fb726d48Sopenharmony_ci    `SELECT thread.tid
1245fb726d48Sopenharmony_ci         FROM thread
1246fb726d48Sopenharmony_ci                LEFT JOIN callstack ON thread.id = callstack.callid
1247fb726d48Sopenharmony_ci         WHERE ipid in (SELECT thread.ipid
1248fb726d48Sopenharmony_ci                       FROM thread
1249fb726d48Sopenharmony_ci                       WHERE thread.itid = $itid)
1250fb726d48Sopenharmony_ci           AND thread.name LIKE '%TaskWork%'
1251fb726d48Sopenharmony_ci         GROUP BY thread.tid;`,
1252fb726d48Sopenharmony_ci    { $itid: itid }
1253fb726d48Sopenharmony_ci  );
1254fb726d48Sopenharmony_ci
1255fb726d48Sopenharmony_ciexport const queryFrameAnimationData = (): Promise<Array<FrameAnimationStruct>> =>
1256fb726d48Sopenharmony_ci  query(
1257fb726d48Sopenharmony_ci    'queryFrameAnimationData',
1258fb726d48Sopenharmony_ci    `SELECT a.id AS animationId,
1259fb726d48Sopenharmony_ci           'Response delay' as status,
1260fb726d48Sopenharmony_ci           (CASE WHEN a.input_time NOT NULL 
1261fb726d48Sopenharmony_ci               THEN ( a.input_time - R.start_ts ) 
1262fb726d48Sopenharmony_ci               ELSE ( a.start_point - R.start_ts ) END
1263fb726d48Sopenharmony_ci           ) AS startTs,
1264fb726d48Sopenharmony_ci           (a.start_point - R.start_ts) AS endTs,
1265fb726d48Sopenharmony_ci           0 AS frameInfo,
1266fb726d48Sopenharmony_ci           a.name AS name
1267fb726d48Sopenharmony_ci         FROM 
1268fb726d48Sopenharmony_ci             animation AS a, 
1269fb726d48Sopenharmony_ci             trace_range AS R
1270fb726d48Sopenharmony_ci         UNION
1271fb726d48Sopenharmony_ci         SELECT a.id AS animationId,
1272fb726d48Sopenharmony_ci           'Completion delay' as status,
1273fb726d48Sopenharmony_ci           (CASE WHEN a.input_time NOT NULL
1274fb726d48Sopenharmony_ci               THEN ( a.input_time - R.start_ts )
1275fb726d48Sopenharmony_ci               ELSE ( a.start_point - R.start_ts ) END
1276fb726d48Sopenharmony_ci           ) AS startTs,
1277fb726d48Sopenharmony_ci           (a.end_point - R.start_ts) AS endTs,
1278fb726d48Sopenharmony_ci           a.frame_info AS frameInfo,
1279fb726d48Sopenharmony_ci           a.name AS name
1280fb726d48Sopenharmony_ci         FROM 
1281fb726d48Sopenharmony_ci             animation AS a, 
1282fb726d48Sopenharmony_ci             trace_range AS R
1283fb726d48Sopenharmony_ci         ORDER BY
1284fb726d48Sopenharmony_ci            endTs;`
1285fb726d48Sopenharmony_ci  );
1286fb726d48Sopenharmony_ci
1287fb726d48Sopenharmony_ciexport const queryAnimationTimeRangeData = (): Promise<Array<FrameAnimationStruct>> =>
1288fb726d48Sopenharmony_ci  query(
1289fb726d48Sopenharmony_ci    'queryAnimationTimeRangeData',
1290fb726d48Sopenharmony_ci    `SELECT 'Response delay' as status,
1291fb726d48Sopenharmony_ci           (CASE WHEN a.input_time NOT NULL
1292fb726d48Sopenharmony_ci               THEN ( a.input_time - R.start_ts )
1293fb726d48Sopenharmony_ci               ELSE ( a.start_point - R.start_ts ) END
1294fb726d48Sopenharmony_ci           ) AS startTs,
1295fb726d48Sopenharmony_ci            (a.start_point - R.start_ts) AS endTs
1296fb726d48Sopenharmony_ci         FROM 
1297fb726d48Sopenharmony_ci             animation AS a,
1298fb726d48Sopenharmony_ci             trace_range AS R
1299fb726d48Sopenharmony_ci         UNION
1300fb726d48Sopenharmony_ci         SELECT 'Completion delay' as status,
1301fb726d48Sopenharmony_ci           (CASE WHEN a.input_time NOT NULL
1302fb726d48Sopenharmony_ci               THEN ( a.input_time - R.start_ts )
1303fb726d48Sopenharmony_ci               ELSE ( a.start_point - R.start_ts ) END
1304fb726d48Sopenharmony_ci           ) AS startTs,
1305fb726d48Sopenharmony_ci           (a.end_point - R.start_ts) AS endTs
1306fb726d48Sopenharmony_ci         FROM 
1307fb726d48Sopenharmony_ci             animation AS a,
1308fb726d48Sopenharmony_ci             trace_range AS R
1309fb726d48Sopenharmony_ci         ORDER BY
1310fb726d48Sopenharmony_ci            endTs;`
1311fb726d48Sopenharmony_ci  );
1312fb726d48Sopenharmony_ciexport const querySourceTypen = (): Promise<Array<unknown>> =>
1313fb726d48Sopenharmony_ci  query(
1314fb726d48Sopenharmony_ci    'querySourceTypen',
1315fb726d48Sopenharmony_ci    `SELECT 
1316fb726d48Sopenharmony_ci      value 
1317fb726d48Sopenharmony_ci    FROM 
1318fb726d48Sopenharmony_ci      meta
1319fb726d48Sopenharmony_ci    where
1320fb726d48Sopenharmony_ci      name = 'source_type'
1321fb726d48Sopenharmony_ci    `
1322fb726d48Sopenharmony_ci  );
1323fb726d48Sopenharmony_ci
1324fb726d48Sopenharmony_ciexport const queryFrameDynamicData = (): Promise<FrameDynamicStruct[]> =>
1325fb726d48Sopenharmony_ci  query(
1326fb726d48Sopenharmony_ci    'queryFrameDynamicData',
1327fb726d48Sopenharmony_ci    `SELECT d.id,
1328fb726d48Sopenharmony_ci           d.x,
1329fb726d48Sopenharmony_ci           d.y,
1330fb726d48Sopenharmony_ci           d.width,
1331fb726d48Sopenharmony_ci           d.height,
1332fb726d48Sopenharmony_ci           d.alpha,
1333fb726d48Sopenharmony_ci           d.name AS appName,
1334fb726d48Sopenharmony_ci           (d.end_time - R.start_ts) AS ts
1335fb726d48Sopenharmony_ci        FROM 
1336fb726d48Sopenharmony_ci            dynamic_frame AS d,
1337fb726d48Sopenharmony_ci            trace_range AS R
1338fb726d48Sopenharmony_ci        ORDER BY 
1339fb726d48Sopenharmony_ci            d.end_time;`
1340fb726d48Sopenharmony_ci  );
1341fb726d48Sopenharmony_ci
1342fb726d48Sopenharmony_ciexport const queryDynamicIdAndNameData = (): Promise<Array<{ id: number; appName: string }>> =>
1343fb726d48Sopenharmony_ci  query('queryDynamicIdAndNameData', 'SELECT id, name AS appName FROM dynamic_frame;');
1344fb726d48Sopenharmony_ci
1345fb726d48Sopenharmony_ciexport const queryAnimationIdAndNameData = (): Promise<
1346fb726d48Sopenharmony_ci  Array<{
1347fb726d48Sopenharmony_ci    id: number;
1348fb726d48Sopenharmony_ci    name: string;
1349fb726d48Sopenharmony_ci    info: string;
1350fb726d48Sopenharmony_ci  }>
1351fb726d48Sopenharmony_ci> => query('queryAnimationIdAndNameData', 'SELECT id, name, frame_info as info FROM animation;');
1352fb726d48Sopenharmony_ci
1353fb726d48Sopenharmony_ciexport const queryFrameApp = (): Promise<
1354fb726d48Sopenharmony_ci  Array<{
1355fb726d48Sopenharmony_ci    name: string;
1356fb726d48Sopenharmony_ci  }>
1357fb726d48Sopenharmony_ci> =>
1358fb726d48Sopenharmony_ci  query(
1359fb726d48Sopenharmony_ci    'queryFrameApp',
1360fb726d48Sopenharmony_ci    `SELECT 
1361fb726d48Sopenharmony_ci            DISTINCT d.name
1362fb726d48Sopenharmony_ci         FROM 
1363fb726d48Sopenharmony_ci             dynamic_frame AS d, 
1364fb726d48Sopenharmony_ci             trace_range AS R
1365fb726d48Sopenharmony_ci         WHERE 
1366fb726d48Sopenharmony_ci            d.end_time >= R.start_ts
1367fb726d48Sopenharmony_ci            AND
1368fb726d48Sopenharmony_ci            d.end_time <= R.end_ts;`
1369fb726d48Sopenharmony_ci  );
1370fb726d48Sopenharmony_ci
1371fb726d48Sopenharmony_ciexport const queryFrameSpacing = (): Promise<Array<FrameSpacingStruct>> =>
1372fb726d48Sopenharmony_ci  query(
1373fb726d48Sopenharmony_ci    'queryFrameSpacing',
1374fb726d48Sopenharmony_ci    `SELECT d.id,
1375fb726d48Sopenharmony_ci         d.width AS currentFrameWidth,
1376fb726d48Sopenharmony_ci         d.height AS currentFrameHeight,
1377fb726d48Sopenharmony_ci         d.name AS nameId,
1378fb726d48Sopenharmony_ci         (d.end_time - R.start_ts) AS currentTs,
1379fb726d48Sopenharmony_ci         d.x,
1380fb726d48Sopenharmony_ci         d.y
1381fb726d48Sopenharmony_ci     FROM
1382fb726d48Sopenharmony_ci         dynamic_frame AS d,
1383fb726d48Sopenharmony_ci         trace_range AS R
1384fb726d48Sopenharmony_ci     ORDER BY
1385fb726d48Sopenharmony_ci         d.end_time;`
1386fb726d48Sopenharmony_ci  );
1387fb726d48Sopenharmony_ci
1388fb726d48Sopenharmony_ciexport const queryPhysicalData = (): Promise<Array<DeviceStruct>> =>
1389fb726d48Sopenharmony_ci  query(
1390fb726d48Sopenharmony_ci    'queryPhysicalData',
1391fb726d48Sopenharmony_ci    `SELECT physical_width AS physicalWidth,
1392fb726d48Sopenharmony_ci            physical_height AS physicalHeight,
1393fb726d48Sopenharmony_ci            physical_frame_rate AS physicalFrameRate
1394fb726d48Sopenharmony_ci     FROM device_info;`
1395fb726d48Sopenharmony_ci  );
1396fb726d48Sopenharmony_ciexport const getSystemLogsData = (): Promise<
1397fb726d48Sopenharmony_ci  Array<{
1398fb726d48Sopenharmony_ci    id: number;
1399fb726d48Sopenharmony_ci    ts: number;
1400fb726d48Sopenharmony_ci    processName: string;
1401fb726d48Sopenharmony_ci    tid: number;
1402fb726d48Sopenharmony_ci    level: string;
1403fb726d48Sopenharmony_ci    tag: string;
1404fb726d48Sopenharmony_ci    message: string;
1405fb726d48Sopenharmony_ci    des: number;
1406fb726d48Sopenharmony_ci  }>
1407fb726d48Sopenharmony_ci> =>
1408fb726d48Sopenharmony_ci  query(
1409fb726d48Sopenharmony_ci    'getSystemLogsData',
1410fb726d48Sopenharmony_ci    `SELECT ROW_NUMBER() OVER (ORDER BY l.ts) AS processName,
1411fb726d48Sopenharmony_ci            l.seq AS id,
1412fb726d48Sopenharmony_ci            (l.ts - TR.start_ts) AS ts,
1413fb726d48Sopenharmony_ci            l.pid AS indexs,
1414fb726d48Sopenharmony_ci            l.tid,
1415fb726d48Sopenharmony_ci            l.level,
1416fb726d48Sopenharmony_ci            l.tag,
1417fb726d48Sopenharmony_ci            l.context AS message,
1418fb726d48Sopenharmony_ci            l.origints AS des
1419fb726d48Sopenharmony_ci         FROM trace_range AS TR,
1420fb726d48Sopenharmony_ci              log AS l
1421fb726d48Sopenharmony_ci         ORDER BY ts`
1422fb726d48Sopenharmony_ci  );
1423fb726d48Sopenharmony_ci
1424fb726d48Sopenharmony_ciexport const queryLogData = (): Promise<Array<LogStruct>> =>
1425fb726d48Sopenharmony_ci  query(
1426fb726d48Sopenharmony_ci    'queryLogData',
1427fb726d48Sopenharmony_ci    `SELECT 
1428fb726d48Sopenharmony_ci    l.ts - tr.start_ts as startNs 
1429fb726d48Sopenharmony_ci    FROM log AS l, trace_range tr WHERE startNs > 0 LIMIT 1;`
1430fb726d48Sopenharmony_ci  );
1431fb726d48Sopenharmony_ci
1432fb726d48Sopenharmony_ciexport const queryMetric = (metricName: string): Promise<Array<string>> =>
1433fb726d48Sopenharmony_ci  query('queryMetric', metricName, '', { action: 'exec-metric' });
1434fb726d48Sopenharmony_ci
1435fb726d48Sopenharmony_ciexport const queryExistFtrace = (): Promise<Array<number>> =>
1436fb726d48Sopenharmony_ci  query(
1437fb726d48Sopenharmony_ci    'queryExistFtrace',
1438fb726d48Sopenharmony_ci    `select 1 from thread_state
1439fb726d48Sopenharmony_ci         UNION
1440fb726d48Sopenharmony_ci         select 1 from args;`
1441fb726d48Sopenharmony_ci  );
1442fb726d48Sopenharmony_ci
1443fb726d48Sopenharmony_ciexport const queryTraceType = (): Promise<
1444fb726d48Sopenharmony_ci  Array<{
1445fb726d48Sopenharmony_ci    value: string;
1446fb726d48Sopenharmony_ci  }>
1447fb726d48Sopenharmony_ci> =>
1448fb726d48Sopenharmony_ci  query(
1449fb726d48Sopenharmony_ci    'queryTraceType',
1450fb726d48Sopenharmony_ci    `SELECT m.value
1451fb726d48Sopenharmony_ci            FROM 
1452fb726d48Sopenharmony_ci                meta AS m
1453fb726d48Sopenharmony_ci            WHERE 
1454fb726d48Sopenharmony_ci                m.name = 'source_type';`
1455fb726d48Sopenharmony_ci  );
1456fb726d48Sopenharmony_ci
1457fb726d48Sopenharmony_ciexport const queryLogAllData = (oneDayTime: number, leftNs: number, rightNs: number): Promise<Array<LogStruct>> =>
1458fb726d48Sopenharmony_ci  query(
1459fb726d48Sopenharmony_ci    'queryLogAllData',
1460fb726d48Sopenharmony_ci    `SELECT l.seq AS id,
1461fb726d48Sopenharmony_ci         CASE
1462fb726d48Sopenharmony_ci             WHEN l.ts < ${oneDayTime} THEN 0
1463fb726d48Sopenharmony_ci             ELSE (l.ts - TR.start_ts)
1464fb726d48Sopenharmony_ci             END AS startTs,
1465fb726d48Sopenharmony_ci         CASE l.level
1466fb726d48Sopenharmony_ci             WHEN 'D' THEN 'Debug'
1467fb726d48Sopenharmony_ci             WHEN 'I' THEN 'Info'
1468fb726d48Sopenharmony_ci             WHEN 'W' THEN 'Warn'
1469fb726d48Sopenharmony_ci             WHEN 'E' THEN 'Error'
1470fb726d48Sopenharmony_ci             WHEN 'F' THEN 'Fatal'
1471fb726d48Sopenharmony_ci             END AS level,
1472fb726d48Sopenharmony_ci         l.tag AS tag,
1473fb726d48Sopenharmony_ci         l.context AS context,
1474fb726d48Sopenharmony_ci         (strftime( '%m-%d %H:%M:%S', l.origints / 1000000000, 'unixepoch', 'localtime' ) || 
1475fb726d48Sopenharmony_ci         '.' || printf('%03d', (l.origints / 1000000) % 1000)) AS originTime,
1476fb726d48Sopenharmony_ci         COALESCE(p.name, 'Process ' || l.pid) AS processName
1477fb726d48Sopenharmony_ci     FROM
1478fb726d48Sopenharmony_ci         log AS l
1479fb726d48Sopenharmony_ci             LEFT JOIN trace_range AS TR ON l.ts >= TR.start_ts
1480fb726d48Sopenharmony_ci             LEFT JOIN process AS p ON p.pid = l.pid
1481fb726d48Sopenharmony_ci     WHERE
1482fb726d48Sopenharmony_ci         startTs >= ${Math.floor(leftNs)}
1483fb726d48Sopenharmony_ci       AND startTs <= ${Math.floor(rightNs)}
1484fb726d48Sopenharmony_ci     ORDER BY
1485fb726d48Sopenharmony_ci         l.ts;`,
1486fb726d48Sopenharmony_ci    { $oneDayTime: oneDayTime }
1487fb726d48Sopenharmony_ci  );
1488fb726d48Sopenharmony_ci
1489fb726d48Sopenharmony_ciexport const queryFpsSourceList = (
1490fb726d48Sopenharmony_ci  inputTime: number,
1491fb726d48Sopenharmony_ci  endTime: number,
1492fb726d48Sopenharmony_ci  name: string
1493fb726d48Sopenharmony_ci): Promise<
1494fb726d48Sopenharmony_ci  Array<{
1495fb726d48Sopenharmony_ci    name: string;
1496fb726d48Sopenharmony_ci    ts: number;
1497fb726d48Sopenharmony_ci    dur: number;
1498fb726d48Sopenharmony_ci    pid: number;
1499fb726d48Sopenharmony_ci    tid: number;
1500fb726d48Sopenharmony_ci    depth: number;
1501fb726d48Sopenharmony_ci  }>
1502fb726d48Sopenharmony_ci> =>
1503fb726d48Sopenharmony_ci  query(
1504fb726d48Sopenharmony_ci    'queryFpsSourceList',
1505fb726d48Sopenharmony_ci    `SELECT t.tid,
1506fb726d48Sopenharmony_ci        c.dur,
1507fb726d48Sopenharmony_ci        c.depth,
1508fb726d48Sopenharmony_ci        c.ts,
1509fb726d48Sopenharmony_ci        c.name 
1510fb726d48Sopenharmony_ci      FROM
1511fb726d48Sopenharmony_ci        callstack c
1512fb726d48Sopenharmony_ci      INNER JOIN thread t ON c.callid = t.itid 
1513fb726d48Sopenharmony_ci      WHERE
1514fb726d48Sopenharmony_ci        c.name LIKE '%${name}%' 
1515fb726d48Sopenharmony_ci        AND 
1516fb726d48Sopenharmony_ci        c.ts BETWEEN ${inputTime} and ${endTime} 
1517fb726d48Sopenharmony_ci        AND 
1518fb726d48Sopenharmony_ci        t.name = 'render_service';`
1519fb726d48Sopenharmony_ci  );
1520fb726d48Sopenharmony_ci
1521fb726d48Sopenharmony_ciexport const queryStateFreqList = (
1522fb726d48Sopenharmony_ci  startTime: number,
1523fb726d48Sopenharmony_ci  endTime: number,
1524fb726d48Sopenharmony_ci  cpu: number
1525fb726d48Sopenharmony_ci): //@ts-ignore
1526fb726d48Sopenharmony_ciPromise<Array<unknown>> => {
1527fb726d48Sopenharmony_ci  let sql = `select c.value,
1528fb726d48Sopenharmony_ci    c.ts,
1529fb726d48Sopenharmony_ci    c.dur,
1530fb726d48Sopenharmony_ci    c.ts - r.start_ts AS startTime, 
1531fb726d48Sopenharmony_ci    c.ts - r.start_ts + c.dur AS endTime
1532fb726d48Sopenharmony_ci   from
1533fb726d48Sopenharmony_ci     measure c, trace_range r 
1534fb726d48Sopenharmony_ci   inner join
1535fb726d48Sopenharmony_ci     cpu_measure_filter t
1536fb726d48Sopenharmony_ci   on
1537fb726d48Sopenharmony_ci     c.filter_id = t.id
1538fb726d48Sopenharmony_ci   where
1539fb726d48Sopenharmony_ci     (name = 'cpufreq' or name='cpu_frequency')
1540fb726d48Sopenharmony_ci     and
1541fb726d48Sopenharmony_ci     t.cpu = $cpu
1542fb726d48Sopenharmony_ci     and  
1543fb726d48Sopenharmony_ci     (((startTime < $startTime) and  (endtime > $endTime))
1544fb726d48Sopenharmony_ci      or ((startTime < $startTime) and ($startTime < endtime and endtime < $endTime)) 
1545fb726d48Sopenharmony_ci      or ((startTime > $startTime) and ( $startTime < endtime and endtime < $endTime)) 
1546fb726d48Sopenharmony_ci      or ((startTime > $startTime and startTime < $endTime) and (endtime > $endTime)))`;
1547fb726d48Sopenharmony_ci  return query('queryBinderByArgsId', sql, {
1548fb726d48Sopenharmony_ci    $endTime: endTime,
1549fb726d48Sopenharmony_ci    $startTime: startTime,
1550fb726d48Sopenharmony_ci    $cpu: cpu,
1551fb726d48Sopenharmony_ci  });
1552fb726d48Sopenharmony_ci};
1553fb726d48Sopenharmony_ciexport const queryPerfOutputData = (): Promise<Array<unknown>> =>
1554fb726d48Sopenharmony_ci  query(
1555fb726d48Sopenharmony_ci    'queryPerfOutputData',
1556fb726d48Sopenharmony_ci    `SELECT 
1557fb726d48Sopenharmony_ci    name, 
1558fb726d48Sopenharmony_ci    ts 
1559fb726d48Sopenharmony_ci    FROM callstack where name like '%PERFORMANCE_DATA%'`
1560fb726d48Sopenharmony_ci  );
1561fb726d48Sopenharmony_ci
1562fb726d48Sopenharmony_ciexport const queryPerfToolsDur = (): Promise<Array<unknown>> =>
1563fb726d48Sopenharmony_ci  query(
1564fb726d48Sopenharmony_ci    'queryPerfToolsDur',
1565fb726d48Sopenharmony_ci    `SELECT 
1566fb726d48Sopenharmony_ci    name, 
1567fb726d48Sopenharmony_ci    ts, 
1568fb726d48Sopenharmony_ci    dur 
1569fb726d48Sopenharmony_ci    FROM callstack where name = 'H:GRAB'`
1570fb726d48Sopenharmony_ci  );
1571