diff --git a/src/frontend/src/instance.rs b/src/frontend/src/instance.rs index 9ca0d09a65..a10bb1350a 100644 --- a/src/frontend/src/instance.rs +++ b/src/frontend/src/instance.rs @@ -184,7 +184,7 @@ impl Instance { query_ctx.current_catalog().to_string(), vec![query_ctx.current_schema()], stmt.to_string(), - "unknown".to_string(), + query_ctx.conn_info().to_string(), None, ); diff --git a/src/session/src/context.rs b/src/session/src/context.rs index b6f67e9870..bc42afba07 100644 --- a/src/session/src/context.rs +++ b/src/session/src/context.rs @@ -67,6 +67,9 @@ pub struct QueryContext { /// Process id for managing on-going queries #[builder(default)] process_id: u64, + /// Connection information + #[builder(default)] + conn_info: ConnInfo, } /// This fields hold data that is only valid to current query context @@ -439,6 +442,11 @@ impl QueryContext { pub fn process_id(&self) -> u64 { self.process_id } + + /// Get client information + pub fn conn_info(&self) -> &ConnInfo { + &self.conn_info + } } impl QueryContextBuilder { @@ -461,6 +469,7 @@ impl QueryContextBuilder { .unwrap_or_else(|| Arc::new(ConfigurationVariables::default())), channel, process_id: self.process_id.unwrap_or_default(), + conn_info: self.conn_info.unwrap_or_default(), } } @@ -472,7 +481,7 @@ impl QueryContextBuilder { } } -#[derive(Debug)] +#[derive(Debug, Clone, Default)] pub struct ConnInfo { pub client_addr: Option, pub channel: Channel, diff --git a/src/session/src/lib.rs b/src/session/src/lib.rs index 9a8b7fcc6c..5d4ce4db1a 100644 --- a/src/session/src/lib.rs +++ b/src/session/src/lib.rs @@ -98,6 +98,7 @@ impl Session { .configuration_parameter(self.configuration_variables.clone()) .channel(self.conn_info.channel) .process_id(self.process_id) + .conn_info(self.conn_info.clone()) .build() .into() }