From 73cdafb1ca61bc2d1786a8f9e335833429102ef9 Mon Sep 17 00:00:00 2001 From: Garet Halliday <me@garet.holiday> Date: Wed, 17 May 2023 18:04:18 -0500 Subject: [PATCH] fix alloc in eqp.Server.Bind --- lib/middleware/middlewares/eqp/server.go | 10 ++++++---- lib/zap/buf.go | 15 +++++++++------ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/lib/middleware/middlewares/eqp/server.go b/lib/middleware/middlewares/eqp/server.go index 339f5a8d..9dc67d56 100644 --- a/lib/middleware/middlewares/eqp/server.go +++ b/lib/middleware/middlewares/eqp/server.go @@ -119,8 +119,9 @@ func (T *Server) bindPreparedStatement( return err } - buf := zap.MakeBuf(preparedStatement.raw) - err = ctx.Send(buf.Out()) + old := T.buf.Swap(preparedStatement.raw) + err = ctx.Send(T.buf.Out()) + T.buf.Swap(old) if err != nil { return err } @@ -148,8 +149,9 @@ func (T *Server) bindPortal( return err } - buf := zap.MakeBuf(portal.raw) - err = ctx.Send(buf.Out()) + old := T.buf.Swap(portal.raw) + err = ctx.Send(T.buf.Out()) + T.buf.Swap(old) if err != nil { return err } diff --git a/lib/zap/buf.go b/lib/zap/buf.go index 4d02f4af..38646535 100644 --- a/lib/zap/buf.go +++ b/lib/zap/buf.go @@ -18,12 +18,6 @@ type Buf struct { rev int } -func MakeBuf(buf []byte) Buf { - return Buf{ - buf: buf, - } -} - func (T *Buf) assertRev(rev int) { // this check can be turned off when in production mode (for dev, this is helpful though) if T.rev != rev { @@ -127,6 +121,15 @@ func (T *Buf) Write() Out { return T.Out() } +func (T *Buf) Swap(buf []byte) []byte { + T.pos = 0 + T.rev++ + + v := T.buf + T.buf = buf + return v +} + func (T *Buf) Done() { T.rev++ T.pos = 0 -- GitLab