15
15
use std:: sync:: Arc ;
16
16
use std:: time:: Duration ;
17
17
18
+ use chrono:: DateTime ;
19
+ use chrono:: Utc ;
18
20
use databend_common_catalog:: table:: Table ;
19
21
use databend_common_catalog:: table_context:: TableContext ;
20
22
use databend_common_exception:: Result ;
@@ -23,6 +25,7 @@ use databend_common_expression::types::number::UInt32Type;
23
25
use databend_common_expression:: types:: number:: UInt64Type ;
24
26
use databend_common_expression:: types:: NumberDataType ;
25
27
use databend_common_expression:: types:: StringType ;
28
+ use databend_common_expression:: types:: TimestampType ;
26
29
use databend_common_expression:: utils:: FromData ;
27
30
use databend_common_expression:: DataBlock ;
28
31
use databend_common_expression:: TableDataType ;
@@ -69,11 +72,15 @@ impl SyncSystemTable for ProcessesTable {
69
72
let mut processes_scan_progress_read_bytes = Vec :: with_capacity ( processes_info. len ( ) ) ;
70
73
let mut processes_mysql_connection_id = Vec :: with_capacity ( processes_info. len ( ) ) ;
71
74
let mut processes_time = Vec :: with_capacity ( processes_info. len ( ) ) ;
75
+ let mut processes_created_time = Vec :: with_capacity ( processes_info. len ( ) ) ;
72
76
let mut processes_status = Vec :: with_capacity ( processes_info. len ( ) ) ;
73
77
74
78
for process_info in & processes_info {
75
79
let data_metrics = & process_info. data_metrics ;
76
80
let scan_progress = process_info. scan_progress_value . clone ( ) . unwrap_or_default ( ) ;
81
+
82
+ let created_time: DateTime < Utc > = process_info. created_time . into ( ) ;
83
+ let created_time = created_time. timestamp_micros ( ) ;
77
84
let time = process_info
78
85
. created_time
79
86
. elapsed ( )
@@ -96,6 +103,7 @@ impl SyncSystemTable for ProcessesTable {
96
103
processes_scan_progress_read_bytes. push ( scan_progress. bytes as u64 ) ;
97
104
processes_mysql_connection_id. push ( process_info. mysql_connection_id ) ;
98
105
processes_time. push ( time) ;
106
+ processes_created_time. push ( created_time) ;
99
107
100
108
if let Some ( data_metrics) = data_metrics {
101
109
processes_data_read_bytes. push ( data_metrics. get_read_bytes ( ) as u64 ) ;
@@ -125,6 +133,7 @@ impl SyncSystemTable for ProcessesTable {
125
133
UInt64Type :: from_data( processes_scan_progress_read_bytes) ,
126
134
UInt32Type :: from_opt_data( processes_mysql_connection_id) ,
127
135
UInt64Type :: from_data( processes_time) ,
136
+ TimestampType :: from_data( processes_created_time) ,
128
137
StringType :: from_data( processes_status) ,
129
138
] ) )
130
139
}
@@ -166,6 +175,7 @@ impl ProcessesTable {
166
175
TableDataType :: Nullable ( Box :: new( TableDataType :: Number ( NumberDataType :: UInt32 ) ) ) ,
167
176
) ,
168
177
TableField :: new( "time" , TableDataType :: Number ( NumberDataType :: UInt64 ) ) ,
178
+ TableField :: new( "created_time" , TableDataType :: Timestamp ) ,
169
179
TableField :: new( "status" , TableDataType :: String ) ,
170
180
] ) ;
171
181
0 commit comments