From 8a06a6ff7bae1bddd84f59a1925f993117632e97 Mon Sep 17 00:00:00 2001
From: Garet Halliday <me@garet.holiday>
Date: Tue, 15 Aug 2023 14:51:56 -0500
Subject: [PATCH] fix most tests

---
 lib/gat/configs/pgbouncer/config.go | 6 +++++-
 lib/gat/recipe.go                   | 5 ++++-
 lib/util/maps/clone.go              | 3 +++
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/lib/gat/configs/pgbouncer/config.go b/lib/gat/configs/pgbouncer/config.go
index 1fb11220..6873b340 100644
--- a/lib/gat/configs/pgbouncer/config.go
+++ b/lib/gat/configs/pgbouncer/config.go
@@ -292,6 +292,10 @@ func (T *Config) ListenAndServe(pooler *gat.Pooler) error {
 				continue
 			}
 
+			if db.DBName != "" {
+				dbname = db.DBName
+			}
+
 			var poolMode PoolMode
 			if user.PoolMode != "" {
 				poolMode = user.PoolMode
@@ -344,7 +348,7 @@ func (T *Config) ListenAndServe(pooler *gat.Pooler) error {
 
 				// connect over tcp
 				recipe := gat.TCPRecipe{
-					Database:          db.DBName,
+					Database:          dbname,
 					Address:           address,
 					Credentials:       creds,
 					MinConnections:    db.MinPoolSize,
diff --git a/lib/gat/recipe.go b/lib/gat/recipe.go
index 8735fde0..65438046 100644
--- a/lib/gat/recipe.go
+++ b/lib/gat/recipe.go
@@ -37,8 +37,11 @@ func (T TCPRecipe) Connect() (zap.ReadWriter, map[string]string, error) {
 	rw := zap.WrapIOReadWriter(conn)
 
 	parameterStatus := maps.Clone(T.StartupParameters)
+	if parameterStatus == nil {
+		parameterStatus = make(map[string]string)
+	}
 
-	err = backends.Accept(rw, T.Credentials, T.Database, T.StartupParameters)
+	err = backends.Accept(rw, T.Credentials, T.Database, parameterStatus)
 	if err != nil {
 		return nil, nil, err
 	}
diff --git a/lib/util/maps/clone.go b/lib/util/maps/clone.go
index d74c7429..88e44381 100644
--- a/lib/util/maps/clone.go
+++ b/lib/util/maps/clone.go
@@ -1,6 +1,9 @@
 package maps
 
 func Clone[K comparable, V any](value map[K]V) map[K]V {
+	if value == nil {
+		return nil
+	}
 	m := make(map[K]V, len(value))
 	for k, v := range value {
 		m[k] = v
-- 
GitLab