Skip to content

Commit 2b1d3b9

Browse files
authored
Identify client in query engine (#570)
1 parent 38bf275 commit 2b1d3b9

File tree

2 files changed

+10
-2
lines changed
  • pgdog/src

2 files changed

+10
-2
lines changed

pgdog/src/backend/pool/connection/mirror/mod.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use crate::frontend::client::timeouts::Timeouts;
1515
use crate::frontend::client::TransactionType;
1616
use crate::frontend::comms::comms;
1717
use crate::frontend::PreparedStatements;
18-
use crate::net::{Parameter, Parameters, Stream};
18+
use crate::net::{BackendKeyData, Parameter, Parameters, Stream};
1919

2020
use crate::frontend::ClientRequest;
2121

@@ -33,6 +33,8 @@ pub use request::*;
3333
/// to PgDog.
3434
#[derive(Debug)]
3535
pub struct Mirror {
36+
/// Random identifier for this mirror connection.
37+
pub id: BackendKeyData,
3638
/// Mirror's prepared statements. Should be similar
3739
/// to client's statements, if exposure is high.
3840
pub prepared_statements: PreparedStatements,
@@ -51,6 +53,7 @@ pub struct Mirror {
5153
impl Mirror {
5254
fn new(params: &Parameters, config: &ConfigAndUsers) -> Self {
5355
Self {
56+
id: BackendKeyData::new(),
5457
prepared_statements: PreparedStatements::new(),
5558
params: params.clone(),
5659
timeouts: Timeouts::from_config(&config.config.general),

pgdog/src/frontend/client/query_engine/context.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@ use crate::{
44
client::{timeouts::Timeouts, TransactionType},
55
Client, ClientRequest, PreparedStatements,
66
},
7-
net::{Parameters, Stream},
7+
net::{BackendKeyData, Parameters, Stream},
88
stats::memory::MemoryUsage,
99
};
1010

11+
#[allow(dead_code)]
1112
/// Context passed to the query engine to execute a query.
1213
pub struct QueryEngineContext<'a> {
14+
/// Client ID running the query.
15+
pub(super) id: &'a BackendKeyData,
1316
/// Prepared statements cache.
1417
pub(super) prepared_statements: &'a mut PreparedStatements,
1518
/// Client session parameters.
@@ -39,6 +42,7 @@ impl<'a> QueryEngineContext<'a> {
3942
let memory_usage = client.memory_usage();
4043

4144
Self {
45+
id: &client.id,
4246
prepared_statements: &mut client.prepared_statements,
4347
params: &mut client.params,
4448
client_request: &mut client.client_request,
@@ -62,6 +66,7 @@ impl<'a> QueryEngineContext<'a> {
6266
/// Create context from mirror.
6367
pub fn new_mirror(mirror: &'a mut Mirror, buffer: &'a mut ClientRequest) -> Self {
6468
Self {
69+
id: &mirror.id,
6570
prepared_statements: &mut mirror.prepared_statements,
6671
params: &mut mirror.params,
6772
client_request: buffer,

0 commit comments

Comments
 (0)