From 1b00e7fb17bebeb1b5936f637d930dbc30448124 Mon Sep 17 00:00:00 2001
From: Garet Halliday <me@garet.holiday>
Date: Thu, 14 Sep 2023 20:08:39 -0500
Subject: [PATCH] fix ps initial sync

---
 lib/gat/pool/flow.go | 20 +++++++++++++++-----
 pgbouncer.ini        |  2 +-
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/lib/gat/pool/flow.go b/lib/gat/pool/flow.go
index 677d0ddd..0dce8041 100644
--- a/lib/gat/pool/flow.go
+++ b/lib/gat/pool/flow.go
@@ -43,18 +43,28 @@ func SyncInitialParameters(options Options, client *Client, server *Server) (cli
 	serverParams := server.GetInitialParameters()
 
 	for key, value := range clientParams {
-		setServer := slices.Contains(options.TrackedParameters, key)
-
 		// skip already set params
 		if serverParams[key] == value {
-			setServer = false
-		} else if !setServer {
+			p := packets.ParameterStatus{
+				Key:   key.String(),
+				Value: serverParams[key],
+			}
+			clientErr = client.GetConn().WritePacket(p.IntoPacket())
+			if clientErr != nil {
+				return
+			}
+			continue
+		}
+
+		setServer := slices.Contains(options.TrackedParameters, key)
+
+		if !setServer {
 			value = serverParams[key]
 		}
 
 		p := packets.ParameterStatus{
 			Key:   key.String(),
-			Value: serverParams[key],
+			Value: value,
 		}
 		clientErr = client.GetConn().WritePacket(p.IntoPacket())
 		if clientErr != nil {
diff --git a/pgbouncer.ini b/pgbouncer.ini
index 428dbd8b..f88533fa 100644
--- a/pgbouncer.ini
+++ b/pgbouncer.ini
@@ -1,5 +1,5 @@
 [pgbouncer]
-pool_mode = transaction
+pool_mode = session
 auth_file = userlist.txt
 listen_addr = *
 track_extra_parameters = IntervalStyle, session_authorization, default_transaction_read_only, search_path
-- 
GitLab