From e2520095857f7886a0cc8758c93dd388a9276fcf Mon Sep 17 00:00:00 2001 From: MaxaiZer Date: Thu, 12 Feb 2026 02:11:17 +0700 Subject: [PATCH 1/2] fix --- internal/pgengine/log_hook.go | 6 ++++++ internal/pgengine/transaction.go | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/internal/pgengine/log_hook.go b/internal/pgengine/log_hook.go index 67480419..14f466e9 100644 --- a/internal/pgengine/log_hook.go +++ b/internal/pgengine/log_hook.go @@ -141,6 +141,12 @@ func (hook *LogHook) send(cache []logrus.Entry) { []string{"ts", "client_name", "pid", "log_level", "message", "message_data"}, pgx.CopyFromSlice(len(cache), func(i int) ([]any, error) { + if errVal, ok := cache[i].Data[logrus.ErrorKey]; ok { + if e, isErr := errVal.(error); isErr && e != nil { + cache[i].Data[logrus.ErrorKey] = e.Error() + } + } + jsonData, err := json.Marshal(cache[i].Data) if err != nil { return nil, err diff --git a/internal/pgengine/transaction.go b/internal/pgengine/transaction.go index f0446463..76d8a6d8 100644 --- a/internal/pgengine/transaction.go +++ b/internal/pgengine/transaction.go @@ -124,7 +124,7 @@ func (pge *PgEngine) ExecuteSQLCommand(ctx context.Context, executor executor, t } if len(paramValues) == 0 { //mimic empty param ct, e := executor.Exec(ctx, task.Command) - pge.LogTaskExecution(context.Background(), task, errCodes[err != nil], ct.String(), "") + pge.LogTaskExecution(context.Background(), task, errCodes[e != nil], ct.String(), "") return e } for _, val := range paramValues { From ec3a4793cabc58d672420487d11f05a978a90ced Mon Sep 17 00:00:00 2001 From: MaxaiZer Date: Thu, 12 Feb 2026 02:58:44 +0700 Subject: [PATCH 2/2] fix case when parse error overrides joined errors --- internal/pgengine/transaction.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/pgengine/transaction.go b/internal/pgengine/transaction.go index 76d8a6d8..4655ace5 100644 --- a/internal/pgengine/transaction.go +++ b/internal/pgengine/transaction.go @@ -131,7 +131,8 @@ func (pge *PgEngine) ExecuteSQLCommand(ctx context.Context, executor executor, t if val == "" { continue } - if err = json.Unmarshal([]byte(val), ¶ms); err != nil { + if parseErr := json.Unmarshal([]byte(val), ¶ms); parseErr != nil { + err = errors.Join(err, fmt.Errorf("failed to parse parameter %s: %w", val, parseErr)) return } ct, e := executor.Exec(ctx, task.Command, params...)