# HG changeset patch
# User Christophe de Vienne <christophe@cdevienne.info>
# Date 1643376549 -3600
#      Fri Jan 28 14:29:09 2022 +0100
# Node ID d9423fd8e23ba3708ecffb6daa74ee6401138f00
# Parent  88cf4ccfe86f10bd51f8b659695a3d61b297e971
SQLTrace: limit argument size to 512 bytes

diff --git a/database/sql.go b/database/sql.go
--- a/database/sql.go
+++ b/database/sql.go
@@ -3,6 +3,7 @@
 import (
 	"context"
 	"database/sql"
+	"encoding/json"
 	"strings"
 
 	"github.com/Masterminds/squirrel"
@@ -27,7 +28,18 @@
 	if log != nil && log.GetLevel() < 0 {
 		arr := zerolog.Arr()
 		for _, arg := range args {
-			arr.Interface(arg)
+			b, err := json.Marshal(arg)
+			if err != nil {
+				arr.Interface(arg)
+			} else {
+				if len(b) > 512 {
+					b, _ = json.Marshal(map[string]interface{}{
+						"arg first 512 bytes": b[:512],
+						"len":                 len(b),
+					})
+				}
+				arr.RawJSON(b)
+			}
 		}
 		logger := log.With().Array("args", arr).Logger()
 		logger.Trace().Msg("SQL: " + sql)