mz_sql/session/
metadata.rs1use std::fmt::Debug;
11use std::net::IpAddr;
12
13use mz_adapter_types::connection::ConnectionId;
14use mz_repr::role_id::RoleId;
15
16use crate::plan::PlanContext;
17use crate::session::user::{RoleMetadata, User};
18use crate::session::vars::SessionVars;
19
20pub trait SessionMetadata: Debug + Sync {
21 fn vars(&self) -> &SessionVars;
23 fn conn_id(&self) -> &ConnectionId;
25 fn client_ip(&self) -> Option<&IpAddr>;
27 fn pcx(&self) -> &PlanContext;
30 fn role_metadata(&self) -> &RoleMetadata;
32
33 fn current_role_id(&self) -> &RoleId {
38 &self.role_metadata().current_role
39 }
40
41 fn session_role_id(&self) -> &RoleId {
46 &self.role_metadata().session_role
47 }
48
49 fn user(&self) -> &User {
50 self.vars().user()
51 }
52
53 fn database(&self) -> &str {
54 self.vars().database()
55 }
56
57 fn search_path(&self) -> &[mz_sql_parser::ast::Ident] {
58 self.vars().search_path()
59 }
60
61 fn is_superuser(&self) -> bool {
62 self.vars().is_superuser()
63 }
64
65 fn enable_session_rbac_checks(&self) -> bool {
66 self.vars().enable_session_rbac_checks()
67 }
68
69 fn restrict_to_user_objects(&self) -> bool {
70 self.vars().restrict_to_user_objects()
71 }
72}