diff --git a/lib/gat/configs/pgbouncer/config.go b/lib/gat/configs/pgbouncer/config.go
index 6873b34007b9f633a918b9d408a57f57103c8e02..3c77e7c57231cb4dd31880a0f127de7ea9bf80dc 100644
--- a/lib/gat/configs/pgbouncer/config.go
+++ b/lib/gat/configs/pgbouncer/config.go
@@ -160,21 +160,19 @@ type PgBouncer struct {
 }
 
 type Database struct {
-	DBName           string   `ini:"dbname"`
-	Host             string   `ini:"host"`
-	Port             int      `ini:"port"`
-	User             string   `ini:"user"`
-	Password         string   `ini:"password"`
-	AuthUser         string   `ini:"auth_user"`
-	PoolSize         int      `ini:"pool_size"`
-	MinPoolSize      int      `ini:"min_pool_size"`
-	ReservePool      int      `ini:"reserve_pool"`
-	ConnectQuery     string   `ini:"connect_query"`
-	PoolMode         PoolMode `ini:"pool_mode"`
-	MaxDBConnections int      `ini:"max_db_connections"`
-	ClientEncoding   string   `ini:"client_encoding"`
-	Datestyle        string   `ini:"datestyle"`
-	Timezone         string   `ini:"timezone"`
+	DBName            string            `ini:"dbname"`
+	Host              string            `ini:"host"`
+	Port              int               `ini:"port"`
+	User              string            `ini:"user"`
+	Password          string            `ini:"password"`
+	AuthUser          string            `ini:"auth_user"`
+	PoolSize          int               `ini:"pool_size"`
+	MinPoolSize       int               `ini:"min_pool_size"`
+	ReservePool       int               `ini:"reserve_pool"`
+	ConnectQuery      string            `ini:"connect_query"`
+	PoolMode          PoolMode          `ini:"pool_mode"`
+	MaxDBConnections  int               `ini:"max_db_connections"`
+	StartupParameters map[string]string `ini:"*"`
 }
 
 type User struct {
@@ -318,17 +316,6 @@ func (T *Config) ListenAndServe(pooler *gat.Pooler) error {
 			p := gat.NewPool(raw, time.Duration(T.PgBouncer.ServerIdleTimeout*float64(time.Second)))
 			u.AddPool(dbname, p)
 
-			startupParameters := make(map[string]string)
-			if db.ClientEncoding != "" {
-				startupParameters["client_encoding"] = db.ClientEncoding
-			}
-			if db.Datestyle != "" {
-				startupParameters["datestyle"] = db.Datestyle
-			}
-			if db.Timezone != "" {
-				startupParameters["timezone"] = db.Timezone
-			}
-
 			if db.Host == "" {
 				// connect over unix socket
 				// TODO(garet)
@@ -353,7 +340,7 @@ func (T *Config) ListenAndServe(pooler *gat.Pooler) error {
 					Credentials:       creds,
 					MinConnections:    db.MinPoolSize,
 					MaxConnections:    db.MaxDBConnections,
-					StartupParameters: startupParameters,
+					StartupParameters: db.StartupParameters,
 				}
 				if recipe.MinConnections == 0 {
 					recipe.MinConnections = T.PgBouncer.MinPoolSize
diff --git a/lib/util/encoding/ini/unmarshal.go b/lib/util/encoding/ini/unmarshal.go
index e6a254f3ae58eb0010e4c5bc09fa3c21c789c278..7f227f60da7b138b478b357ac7635e3d77747e20 100644
--- a/lib/util/encoding/ini/unmarshal.go
+++ b/lib/util/encoding/ini/unmarshal.go
@@ -37,6 +37,9 @@ outer:
 			if !ok {
 				name = field.Name
 			}
+			if name == "*" {
+				return get(rv.Field(i), key, fn)
+			}
 			if name == key {
 				return fn(rv.Field(i))
 			}
diff --git a/pgbouncer.ini b/pgbouncer.ini
index 793026571ec05377406670f32d5adb556b8970e4..c0d71af9d41a708354103529c16aac6fec87c716 100644
--- a/pgbouncer.ini
+++ b/pgbouncer.ini
@@ -7,5 +7,5 @@ listen_addr = *
 postgres =
 
 [databases]
-regression = host=localhost
+regression = host=localhost datestyle=Postgres,MDY intervalstyle=postgres_verbose timezone=PST8PDT
 postgres = host=localhost