@@ -30,9 +30,11 @@ use std::net::SocketAddr;
3030use std:: sync:: Arc ;
3131
3232use :: auth:: UserProviderRef ;
33+ use catalog:: process_manager:: ProcessManagerRef ;
3334use derive_builder:: Builder ;
3435use pgwire:: api:: auth:: ServerParameterProvider ;
3536use pgwire:: api:: auth:: StartupHandler ;
37+ use pgwire:: api:: cancel:: CancelHandler ;
3638use pgwire:: api:: query:: { ExtendedQueryHandler , SimpleQueryHandler } ;
3739use pgwire:: api:: ErrorHandler ;
3840use pgwire:: api:: { ClientInfo , PgWireServerHandlers } ;
@@ -73,6 +75,7 @@ impl ServerParameterProvider for GreptimeDBStartupParameters {
7375
7476pub struct PostgresServerHandlerInner {
7577 query_handler : ServerSqlQueryHandlerRef ,
78+ process_manager : ProcessManagerRef ,
7679 login_verifier : PgLoginVerifier ,
7780 force_tls : bool ,
7881 param_provider : Arc < GreptimeDBStartupParameters > ,
@@ -84,6 +87,7 @@ pub struct PostgresServerHandlerInner {
8487#[ derive( Builder ) ]
8588pub ( crate ) struct MakePostgresServerHandler {
8689 query_handler : ServerSqlQueryHandlerRef ,
90+ process_manager : ProcessManagerRef ,
8791 user_provider : Option < UserProviderRef > ,
8892 #[ builder( default = "Arc::new(GreptimeDBStartupParameters::new())" ) ]
8993 param_provider : Arc < GreptimeDBStartupParameters > ,
@@ -108,10 +112,15 @@ impl PgWireServerHandlers for PostgresServerHandler {
108112 fn error_handler ( & self ) -> Arc < impl ErrorHandler > {
109113 self . 0 . clone ( )
110114 }
115+
116+ fn cancel_handler ( & self ) -> Arc < impl CancelHandler > {
117+ self . 0 . clone ( )
118+ }
111119}
112120
113121impl MakePostgresServerHandler {
114- fn make ( & self , addr : Option < SocketAddr > , process_id : u32 ) -> PostgresServerHandler {
122+ fn make ( & self , addr : Option < SocketAddr > ) -> PostgresServerHandler {
123+ let process_id = self . process_manager . next_id ( ) ;
115124 let session = Arc :: new ( Session :: new (
116125 addr,
117126 Channel :: Postgres ,
@@ -120,6 +129,7 @@ impl MakePostgresServerHandler {
120129 ) ) ;
121130 let handler = PostgresServerHandlerInner {
122131 query_handler : self . query_handler . clone ( ) ,
132+ process_manager : self . process_manager . clone ( ) ,
123133 login_verifier : PgLoginVerifier :: new ( self . user_provider . clone ( ) ) ,
124134 force_tls : self . force_tls ,
125135 param_provider : self . param_provider . clone ( ) ,
0 commit comments