From 04927ab6cae2b47e2cc1ba99cd833b99b22d14af Mon Sep 17 00:00:00 2001 From: Garet Halliday <me@garet.holiday> Date: Thu, 3 Aug 2023 16:03:18 -0600 Subject: [PATCH] fix --- cmd/cgat/main.go | 68 +++++++++++-------- lib/middleware/middlewares/eqp/client.go | 15 ++-- lib/middleware/middlewares/eqp/portal.go | 4 +- .../middlewares/eqp/preparedStatement.go | 4 +- lib/middleware/middlewares/eqp/server.go | 9 ++- lib/middleware/middlewares/ps/client.go | 5 +- lib/middleware/middlewares/ps/server.go | 5 +- 7 files changed, 60 insertions(+), 50 deletions(-) diff --git a/cmd/cgat/main.go b/cmd/cgat/main.go index 21ea9abb..866546b5 100644 --- a/cmd/cgat/main.go +++ b/cmd/cgat/main.go @@ -7,7 +7,8 @@ import ( "time" "pggat2/lib/gat" - "pggat2/lib/gat/pools/session" + "pggat2/lib/gat/pools/transaction" + "pggat2/lib/rob" ) func main() { @@ -24,51 +25,64 @@ func main() { pooler.AddUser("postgres", postgres) // create pool - { + rawPool := transaction.NewPool() + pool := gat.NewPool(rawPool, 15*time.Second) + postgres.AddPool("uniswap", pool) + pool.AddRecipe("localhost", gat.TCPRecipe{ + Database: "uniswap", + Address: "localhost:5432", + User: "postgres", + Password: "password", + MinConnections: 0, + MaxConnections: 5, + }) + /* + { + rawPool := session.NewPool(false) + pool := gat.NewPool(rawPool, 15*time.Second) + postgres.AddPool("postgres", pool) + pool.AddRecipe("localhost", gat.TCPRecipe{ + Database: "postgres", + Address: "localhost:5432", + User: "postgres", + Password: "password", + MinConnections: 0, + MaxConnections: 5, + }) + } rawPool := session.NewPool(false) pool := gat.NewPool(rawPool, 15*time.Second) - postgres.AddPool("postgres", pool) + postgres.AddPool("regression", pool) pool.AddRecipe("localhost", gat.TCPRecipe{ - Database: "postgres", + Database: "regression", Address: "localhost:5432", User: "postgres", Password: "password", MinConnections: 0, MaxConnections: 5, }) - } - rawPool := session.NewPool(false) - pool := gat.NewPool(rawPool, 15*time.Second) - postgres.AddPool("regression", pool) - pool.AddRecipe("localhost", gat.TCPRecipe{ - Database: "regression", - Address: "localhost:5432", - User: "postgres", - Password: "password", - MinConnections: 0, - MaxConnections: 5, - }) + */ + + go func() { + var metrics rob.Metrics + for { + time.Sleep(1 * time.Second) + rawPool.ReadSchedulerMetrics(&metrics) + log.Println(metrics.String()) + } + }() /* go func() { - var metrics rob.Metrics + var metrics session.Metrics for { time.Sleep(1 * time.Second) - rawPool.ReadSchedulerMetrics(&metrics) + rawPool.ReadMetrics(&metrics) log.Println(metrics.String()) } }() */ - go func() { - var metrics session.Metrics - - for { - time.Sleep(1 * time.Second) - rawPool.ReadMetrics(&metrics) - log.Println(metrics.String()) - } - }() log.Println("Listening on :6432") diff --git a/lib/middleware/middlewares/eqp/client.go b/lib/middleware/middlewares/eqp/client.go index 0144293a..fb559527 100644 --- a/lib/middleware/middlewares/eqp/client.go +++ b/lib/middleware/middlewares/eqp/client.go @@ -53,7 +53,7 @@ func (T *Client) Write(_ middleware.Context, packet *zap.Packet) error { read := packet.Read() switch read.ReadType() { case packets.ReadyForQuery: - state, ok := packets.ReadReadyForQuery(&read) + state, ok := packets.ReadReadyForQuery(read) if !ok { return errors.New("bad packet format") } @@ -71,8 +71,7 @@ func (T *Client) Write(_ middleware.Context, packet *zap.Packet) error { } func (T *Client) Read(ctx middleware.Context, packet *zap.Packet) error { - read := packet.Read() - switch read.ReadType() { + switch packet.ReadType() { case packets.Query: // clobber unnamed portal and unnamed prepared statement T.deletePreparedStatement("") @@ -80,7 +79,7 @@ func (T *Client) Read(ctx middleware.Context, packet *zap.Packet) error { case packets.Parse: ctx.Cancel() - destination, preparedStatement, ok := ReadParse(&read) + destination, preparedStatement, ok := ReadParse(packet.Read()) if !ok { return errors.New("bad packet format") } @@ -96,7 +95,7 @@ func (T *Client) Read(ctx middleware.Context, packet *zap.Packet) error { case packets.Bind: ctx.Cancel() - destination, portal, ok := ReadBind(&read) + destination, portal, ok := ReadBind(packet.Read()) if !ok { return errors.New("bad packet format") } @@ -112,7 +111,7 @@ func (T *Client) Read(ctx middleware.Context, packet *zap.Packet) error { case packets.Close: ctx.Cancel() - which, target, ok := packets.ReadClose(&read) + which, target, ok := packets.ReadClose(packet.Read()) if !ok { return errors.New("bad packet format") } @@ -133,7 +132,7 @@ func (T *Client) Read(ctx middleware.Context, packet *zap.Packet) error { } case packets.Describe: // ensure target exists - which, _, ok := packets.ReadDescribe(&read) + which, _, ok := packets.ReadDescribe(packet.Read()) if !ok { return errors.New("bad packet format") } @@ -144,7 +143,7 @@ func (T *Client) Read(ctx middleware.Context, packet *zap.Packet) error { return errors.New("unknown describe target") } case packets.Execute: - _, _, ok := packets.ReadExecute(&read) + _, _, ok := packets.ReadExecute(packet.Read()) if !ok { return errors.New("bad packet format") } diff --git a/lib/middleware/middlewares/eqp/portal.go b/lib/middleware/middlewares/eqp/portal.go index 0ece97b9..4e29022c 100644 --- a/lib/middleware/middlewares/eqp/portal.go +++ b/lib/middleware/middlewares/eqp/portal.go @@ -13,11 +13,11 @@ type Portal struct { hash uint64 } -func ReadBind(in *zap.ReadablePacket) (destination string, portal Portal, ok bool) { +func ReadBind(in zap.ReadablePacket) (destination string, portal Portal, ok bool) { if in.ReadType() != packets.Bind { return } - in2 := *in + in2 := in destination, ok = in2.ReadString() if !ok { return diff --git a/lib/middleware/middlewares/eqp/preparedStatement.go b/lib/middleware/middlewares/eqp/preparedStatement.go index 96f34133..c15f929f 100644 --- a/lib/middleware/middlewares/eqp/preparedStatement.go +++ b/lib/middleware/middlewares/eqp/preparedStatement.go @@ -12,11 +12,11 @@ type PreparedStatement struct { hash uint64 } -func ReadParse(in *zap.ReadablePacket) (destination string, preparedStatement PreparedStatement, ok bool) { +func ReadParse(in zap.ReadablePacket) (destination string, preparedStatement PreparedStatement, ok bool) { if in.ReadType() != packets.Parse { return } - in2 := *in + in2 := in destination, ok = in2.ReadString() if !ok { return diff --git a/lib/middleware/middlewares/eqp/server.go b/lib/middleware/middlewares/eqp/server.go index 9b391ba5..3d8aaf47 100644 --- a/lib/middleware/middlewares/eqp/server.go +++ b/lib/middleware/middlewares/eqp/server.go @@ -213,8 +213,7 @@ func (T *Server) syncPortal(ctx middleware.Context, target string) error { } func (T *Server) Write(ctx middleware.Context, packet *zap.Packet) error { - read := packet.Read() - switch read.ReadType() { + switch packet.ReadType() { case packets.Query: // clobber unnamed portal and unnamed prepared statement T.deletePreparedStatement("") @@ -224,7 +223,7 @@ func (T *Server) Write(ctx middleware.Context, packet *zap.Packet) error { panic("unreachable") case packets.Describe: // ensure target exists - which, target, ok := packets.ReadDescribe(&read) + which, target, ok := packets.ReadDescribe(packet.Read()) if !ok { // should've been caught by eqp.Client panic("unreachable") @@ -246,7 +245,7 @@ func (T *Server) Write(ctx middleware.Context, packet *zap.Packet) error { panic("unknown describe target") } case packets.Execute: - target, _, ok := packets.ReadExecute(&read) + target, _, ok := packets.ReadExecute(packet.Read()) if !ok { // should've been caught by eqp.Client panic("unreachable") @@ -277,7 +276,7 @@ func (T *Server) Read(ctx middleware.Context, packet *zap.Packet) error { T.pendingCloses.PopFront() case packets.ReadyForQuery: - state, ok := packets.ReadReadyForQuery(&read) + state, ok := packets.ReadReadyForQuery(packet.Read()) if !ok { return errors.New("bad packet format") } diff --git a/lib/middleware/middlewares/ps/client.go b/lib/middleware/middlewares/ps/client.go index a78e7ef6..563849c3 100644 --- a/lib/middleware/middlewares/ps/client.go +++ b/lib/middleware/middlewares/ps/client.go @@ -21,10 +21,9 @@ func NewClient() *Client { } func (T *Client) Send(ctx middleware.Context, packet *zap.Packet) error { - read := packet.Read() - switch read.ReadType() { + switch packet.ReadType() { case packets.ParameterStatus: - key, value, ok := packets.ReadParameterStatus(&read) + key, value, ok := packets.ReadParameterStatus(packet.Read()) if !ok { return errors.New("bad packet format") } diff --git a/lib/middleware/middlewares/ps/server.go b/lib/middleware/middlewares/ps/server.go index fd5cd0d4..971025ba 100644 --- a/lib/middleware/middlewares/ps/server.go +++ b/lib/middleware/middlewares/ps/server.go @@ -53,10 +53,9 @@ func (T *Server) Sync(client zap.ReadWriter, ps *Client) error { } func (T *Server) Read(_ middleware.Context, in *zap.Packet) error { - read := in.Read() - switch read.ReadType() { + switch in.ReadType() { case packets.ParameterStatus: - key, value, ok := packets.ReadParameterStatus(&read) + key, value, ok := packets.ReadParameterStatus(in.Read()) if !ok { return errors.New("bad packet format") } -- GitLab