feat(query): cross-database timing details, drop OceanBase audit query
This commit is contained in:
1 parent
4b9a1c4d5c
commit
d0497e0ca6
69 files changed
+973
-180
No files matched your search
@@ -1077,6 +1077,7 @@ mod tests {
|
||||
affected_rows: 2,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -1153,6 +1154,7 @@ mod tests {
|
||||
affected_rows: 1,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -1922,6 +1922,7 @@ for line in sys.stdin:
|
||||
affected_rows,
|
||||
execution_time_ms: 1,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -7410,6 +7410,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 1,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -716,6 +716,7 @@ async fn fetch_table_export_batch(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -10797,6 +10797,7 @@ CREATE TABLE "Other"."prefix""Source"."NAME" ("ID" INT);"#;
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -2175,6 +2175,7 @@ async fn do_execute_typed(
|
||||
}
|
||||
let cancel_for_agent = cancel_token.clone();
|
||||
let result = async move {
|
||||
let lock_started = std::time::Instant::now();
|
||||
let mut client = match cancel_for_agent.as_ref() {
|
||||
Some(token) => {
|
||||
tokio::select! {
|
||||
@@ -2188,7 +2189,10 @@ async fn do_execute_typed(
|
||||
}
|
||||
None => client.lock().await,
|
||||
};
|
||||
if let Some(session_id) = options.result_session_id.as_deref() {
|
||||
let lock_ms = lock_started.elapsed().as_secs_f64() * 1000.0;
|
||||
let response: Result<db::QueryResult, AgentCallError> = if let Some(session_id) =
|
||||
options.result_session_id.as_deref()
|
||||
{
|
||||
let params = agent_fetch_query_page_params(session_id, options.page_size.unwrap_or(MAX_ROWS));
|
||||
client
|
||||
.fetch_query_page_typed_with_timeout_and_cancel(params, rpc_timeout, cancel_for_agent.clone())
|
||||
@@ -2203,7 +2207,14 @@ async fn do_execute_typed(
|
||||
client
|
||||
.execute_query_typed_with_timeout_and_cancel(params, rpc_timeout, cancel_for_agent.clone())
|
||||
.await
|
||||
}
|
||||
};
|
||||
response.map(|mut result| {
|
||||
// Older agents have no phase map. Do not imply complete telemetry.
|
||||
if let Some(timings) = result.query_timings_ms.as_mut() {
|
||||
timings.insert("core_lock".into(), lock_ms);
|
||||
}
|
||||
result
|
||||
})
|
||||
}
|
||||
.await
|
||||
.map(|result| truncate_result_with_max_rows(result, max_rows));
|
||||
@@ -4208,6 +4219,7 @@ fn error_query_result(message: String) -> db::QueryResult {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -4227,6 +4239,7 @@ fn empty_query_result(execution_time_ms: u128) -> db::QueryResult {
|
||||
affected_rows: 0,
|
||||
execution_time_ms,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -4574,6 +4587,7 @@ async fn execute_statements_inner(
|
||||
affected_rows: total_affected,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5188,6 +5202,7 @@ async fn exec_tx_pg_inner(
|
||||
affected_rows: total_affected,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5282,6 +5297,7 @@ async fn exec_tx_mysql_inner(
|
||||
affected_rows: total_affected,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5478,6 +5494,7 @@ async fn exec_tx_sqlite_inner(
|
||||
affected_rows: total_affected,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5611,6 +5628,7 @@ async fn exec_tx_explicit_inner(
|
||||
affected_rows: total_affected,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -6614,7 +6632,9 @@ async fn execute_manual_txn_agent_statement(
|
||||
execution_schema,
|
||||
options,
|
||||
);
|
||||
let lock_started = std::time::Instant::now();
|
||||
let mut locked = client.lock().await;
|
||||
let lock_ms = lock_started.elapsed().as_secs_f64() * 1000.0;
|
||||
let result = match request {
|
||||
ManualTxnAgentQueryRequest::Execute(params) => {
|
||||
locked.execute_query_typed_with_timeout::<db::QueryResult>(params, None).await
|
||||
@@ -6627,7 +6647,12 @@ async fn execute_manual_txn_agent_statement(
|
||||
}
|
||||
};
|
||||
result
|
||||
.map(|result| truncate_result_with_max_rows(result, Some(row_limit.max(1))))
|
||||
.map(|mut result| {
|
||||
if let Some(timings) = result.query_timings_ms.as_mut() {
|
||||
timings.insert("core_lock".into(), lock_ms);
|
||||
}
|
||||
truncate_result_with_max_rows(result, Some(row_limit.max(1)))
|
||||
})
|
||||
.map_err(|error| error.into_legacy_string())
|
||||
}
|
||||
|
||||
@@ -6719,6 +6744,7 @@ async fn execute_manual_txn_postgres_statement(
|
||||
affected_rows: affected,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -6754,6 +6780,7 @@ async fn execute_manual_txn_mysql_statement(
|
||||
affected_rows,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -6786,6 +6813,7 @@ async fn execute_manual_txn_mysql_statement(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -6806,6 +6834,7 @@ async fn execute_manual_txn_mysql_statement(
|
||||
affected_rows,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -6863,6 +6892,7 @@ pub async fn commit_manual_transaction(state: &AppState, txn_session_id: &str) -
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -6893,6 +6923,7 @@ pub async fn rollback_manual_transaction(state: &AppState, txn_session_id: &str)
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -9109,6 +9140,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 4,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -9384,6 +9416,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 1,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -10444,6 +10477,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -10470,6 +10504,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -11766,6 +11801,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -11804,6 +11840,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -11872,6 +11909,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -11912,6 +11950,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -11944,6 +11983,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -11983,6 +12023,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -12016,6 +12057,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -1383,6 +1383,7 @@ fn query_result(columns: Vec<String>, rows: Vec<Vec<serde_json::Value>>, affecte
|
||||
affected_rows,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -206,6 +206,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -3225,6 +3225,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -4096,6 +4097,7 @@ done
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -4124,6 +4126,7 @@ done
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -4149,6 +4152,7 @@ done
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -4178,6 +4182,7 @@ done
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -4206,6 +4211,7 @@ done
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5177,6 +5183,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 1,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5226,6 +5233,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 1,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5431,6 +5439,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5450,6 +5459,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5487,6 +5497,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5682,6 +5693,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5788,6 +5800,7 @@ for line in sys.stdin:
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -685,6 +685,7 @@ fn execute_change_transaction(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: started_at.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -590,6 +590,7 @@ fn limited_query_result(result: ChJsonResult, execution_time_ms: u128, max_rows:
|
||||
affected_rows: 0,
|
||||
execution_time_ms,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -848,6 +849,7 @@ pub async fn execute_query_with_max_rows(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -363,6 +363,7 @@ fn query_result(
|
||||
affected_rows,
|
||||
execution_time_ms,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -572,6 +572,7 @@ fn document_query_result(result: DocumentQueryResult, started: Instant) -> Query
|
||||
affected_rows: 0,
|
||||
execution_time_ms: started.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -591,6 +592,7 @@ fn affected_query_result(affected_rows: u64, started: Instant) -> QueryResult {
|
||||
affected_rows,
|
||||
execution_time_ms: started.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -2356,6 +2356,7 @@ fn parse_elasticsearch_response_with_sql_parser(
|
||||
affected_rows: row_count,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -2383,6 +2384,7 @@ fn parse_elasticsearch_response_with_sql_parser(
|
||||
affected_rows: row_count,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -2556,6 +2558,7 @@ fn raw_json_response_result(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -2624,6 +2627,7 @@ fn parse_elasticsearch_rest_response_with_sql_parser(
|
||||
affected_rows,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -3134,6 +3138,7 @@ pub fn parse_tabular_sql_response(
|
||||
.unwrap_or(rows.len() as u64),
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: body.get("cursor").and_then(|cursor| cursor.as_str()).map(str::to_string),
|
||||
has_more: body.get("cursor").and_then(|cursor| cursor.as_str()).is_some(),
|
||||
|
||||
@@ -367,6 +367,7 @@ fn build_query_result(rows: Vec<serde_json::Value>, start: Instant) -> QueryResu
|
||||
affected_rows: affected,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -515,6 +515,7 @@ pub async fn execute_query(client: &InfluxdbClient, database: &str, sql: &str) -
|
||||
rows,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -532,6 +533,7 @@ pub async fn execute_query(client: &InfluxdbClient, database: &str, sql: &str) -
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -732,6 +734,7 @@ fn parse_flux_csv(text: &str, start: Instant) -> Result<QueryResult, String> {
|
||||
rows,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -1910,6 +1910,7 @@ fn raw_response_result(status: u16, body: String, start: Instant, truncated: boo
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -4872,6 +4872,7 @@ async fn execute_result_set_with_text_protocol_on_conn(
|
||||
affected_rows,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -4916,6 +4917,7 @@ async fn execute_result_set_with_text_protocol_on_conn(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5010,6 +5012,7 @@ async fn execute_result_set_with_text_protocol_on_conn(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5140,6 +5143,7 @@ async fn execute_result_sets_with_text_protocol_on_conn(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5167,6 +5171,7 @@ async fn execute_result_sets_with_text_protocol_on_conn(
|
||||
affected_rows,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5350,6 +5355,7 @@ async fn execute_result_set_with_prepared_protocol_on_conn(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5673,6 +5679,7 @@ pub async fn execute_transaction_statement_on_conn(
|
||||
affected_rows,
|
||||
execution_time_ms: started_at.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5708,6 +5715,7 @@ pub async fn execute_transaction_statement_on_conn(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: started_at.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5829,6 +5837,7 @@ pub async fn execute_query_on_conn_with_limits_progress(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5867,6 +5876,7 @@ pub async fn execute_query_on_conn_with_limits_progress(
|
||||
affected_rows,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5996,6 +6006,7 @@ pub async fn execute_non_result_batch_on_conn(
|
||||
affected_rows: result.affected_rows(),
|
||||
execution_time_ms: elapsed_ms.saturating_sub(previous_elapsed_ms),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -1961,6 +1961,7 @@ async fn execute_select_prepared(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -2057,6 +2058,7 @@ async fn execute_select_text(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -8001,6 +8003,7 @@ pub async fn execute_query_with_max_rows(
|
||||
affected_rows: affected,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -8828,6 +8831,7 @@ async fn execute_query_with_max_rows_inner(
|
||||
affected_rows: affected,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -14415,6 +14419,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -315,6 +315,7 @@ pub async fn execute_query_with_max_rows(
|
||||
affected_rows,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -369,6 +370,7 @@ fn query_result_from_rqlite_result(
|
||||
affected_rows: 0,
|
||||
execution_time_ms,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -989,6 +989,7 @@ fn solr_table_result(
|
||||
affected_rows: row_count,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -1008,6 +1009,7 @@ fn solr_raw_json_response_result(status: u16, body_text: impl Into<String>, star
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -2950,6 +2950,7 @@ fn execute_query_blocking(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -2968,6 +2969,7 @@ fn execute_query_blocking(
|
||||
affected_rows: conn.changes(),
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -122,6 +122,7 @@ impl SqliteWorkerSession<'_> {
|
||||
affected_rows: affected_rows.unwrap_or(0),
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: truncated.unwrap_or(false),
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -757,6 +757,7 @@ fn server_messages_query_result(messages: Vec<String>, start: Instant) -> Option
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -831,6 +832,7 @@ async fn collect_first_result_limited(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -1751,6 +1753,7 @@ fn push_sqlserver_result_set(results: &mut Vec<QueryResult>, result: Option<SqlS
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: result.truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -1810,6 +1813,7 @@ fn push_sqlserver_ordered_events(
|
||||
affected_rows,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -3543,6 +3547,7 @@ async fn execute_query_with_max_rows_inner(
|
||||
affected_rows: result.rows_affected().iter().sum::<u64>(),
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -3589,6 +3594,7 @@ pub async fn execute_batch_with_max_rows_metadata(
|
||||
affected_rows: result.rows_affected().iter().sum::<u64>(),
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -3684,6 +3690,7 @@ pub async fn execute_simple_batch_with_max_rows_metadata(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -4111,6 +4118,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 1,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -4136,6 +4144,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 1,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -4156,6 +4165,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 1,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5062,6 +5072,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -5622,6 +5633,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 1,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -364,6 +364,7 @@ pub async fn execute_query_with_max_rows(
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -387,6 +388,7 @@ pub async fn execute_query_with_max_rows(
|
||||
affected_rows,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -407,6 +409,7 @@ pub async fn execute_query_with_max_rows(
|
||||
affected_rows: affected,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -589,6 +592,7 @@ fn query_result_from_turso_result(
|
||||
affected_rows: 0,
|
||||
execution_time_ms,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -923,6 +923,7 @@ fn json_to_query_result(status: u16, body: Value, start: Instant) -> QueryResult
|
||||
affected_rows: 0,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -958,6 +959,7 @@ fn values_to_query_result(items: Vec<Value>, start: Instant) -> QueryResult {
|
||||
rows,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -355,6 +355,7 @@ fn series_result_to_query_result(series: Vec<SeriesResult>, start: Instant) -> Q
|
||||
rows,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
spatial_columns: vec![],
|
||||
spatial_values: vec![],
|
||||
truncated: false,
|
||||
@@ -393,6 +394,7 @@ fn simple_result(rows: Vec<Vec<Value>>, value_type: &str, start: Instant) -> Que
|
||||
rows,
|
||||
execution_time_ms: start.elapsed().as_millis(),
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
spatial_columns: vec![],
|
||||
spatial_values: vec![],
|
||||
truncated: false,
|
||||
|
||||
@@ -2496,6 +2496,7 @@ fn query_result(columns: Vec<String>, rows: Vec<Vec<Value>>, affected_rows: u64)
|
||||
affected_rows,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -195,6 +195,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -3055,6 +3055,7 @@ fn empty_query_result() -> dbx_core::db::QueryResult {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -4048,6 +4049,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -4374,6 +4376,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 1,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -6847,6 +6850,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -6879,6 +6883,7 @@ mod tests {
|
||||
affected_rows: 2,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
@@ -6912,6 +6917,7 @@ mod tests {
|
||||
affected_rows: 1,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -806,6 +806,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
//! Verify captured live Agent responses survive the desktop's typed JSON boundary.
|
||||
//! Usage: cargo run -p dbx-types --example query_timing_roundtrip -- <live-results.json>
|
||||
use dbx_types::types::QueryResult;
|
||||
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let file = std::env::args().nth(1).ok_or("expected live-results.json")?;
|
||||
let records: Vec<serde_json::Value> = serde_json::from_slice(&std::fs::read(file)?)?;
|
||||
for record in &records {
|
||||
let input = record["result"].clone();
|
||||
let result: QueryResult = serde_json::from_value(input.clone())?;
|
||||
let output = serde_json::to_value(result)?;
|
||||
assert_eq!(output["query_timings_ms"], input["query_timings_ms"]);
|
||||
assert_eq!(output["server_execute_time_us"], input["server_execute_time_us"]);
|
||||
assert_eq!(output["rows"], input["rows"]);
|
||||
}
|
||||
println!("PASS: {} live responses preserve timings and rows", records.len());
|
||||
Ok(())
|
||||
}
|
||||
@@ -482,6 +482,9 @@ pub struct QueryResult {
|
||||
/// completed statement cannot be correlated to one audit row.
|
||||
#[serde(default)]
|
||||
pub server_execute_time_us: Option<u64>,
|
||||
/// Optional measured query phases in milliseconds; absent on older agents.
|
||||
#[serde(default)]
|
||||
pub query_timings_ms: Option<std::collections::BTreeMap<String, f64>>,
|
||||
#[serde(default)]
|
||||
pub truncated: bool,
|
||||
#[serde(default)]
|
||||
@@ -523,6 +526,7 @@ impl Serialize for QueryResult {
|
||||
+ usize::from(!self.spatial_values.is_empty())
|
||||
+ usize::from(self.elasticsearch_raw_body.is_some())
|
||||
+ usize::from(self.server_execute_time_us.is_some())
|
||||
+ usize::from(self.query_timings_ms.is_some())
|
||||
+ usize::from(!self.messages.is_empty());
|
||||
let mut state = serializer.serialize_struct("QueryResult", field_count)?;
|
||||
state.serialize_field("columns", &self.columns)?;
|
||||
@@ -540,6 +544,9 @@ impl Serialize for QueryResult {
|
||||
if let Some(server_execute_time_us) = &self.server_execute_time_us {
|
||||
state.serialize_field("server_execute_time_us", server_execute_time_us)?;
|
||||
}
|
||||
if let Some(timings) = &self.query_timings_ms {
|
||||
state.serialize_field("query_timings_ms", timings)?;
|
||||
}
|
||||
state.serialize_field("truncated", &self.truncated)?;
|
||||
state.serialize_field("session_id", &self.session_id)?;
|
||||
state.serialize_field("has_more", &self.has_more)?;
|
||||
@@ -1252,6 +1259,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
@@ -1401,6 +1401,7 @@ mod tests {
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 0,
|
||||
server_execute_time_us: None,
|
||||
query_timings_ms: None,
|
||||
truncated: false,
|
||||
session_id: None,
|
||||
has_more: false,
|
||||
|
||||
Reference in new issue
Block a user