https://github.com/jackc/pgx/issues/1365
(t *testing.T)
| 181 | |
| 182 | // https://github.com/jackc/pgx/issues/1365 |
| 183 | func TestLogQueryArgsHandlesUTF8(t *testing.T) { |
| 184 | t.Parallel() |
| 185 | |
| 186 | ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) |
| 187 | defer cancel() |
| 188 | |
| 189 | logger := &testLogger{} |
| 190 | tracer := &tracelog.TraceLog{ |
| 191 | Logger: logger, |
| 192 | LogLevel: tracelog.LogLevelTrace, |
| 193 | } |
| 194 | |
| 195 | ctr := defaultConnTestRunner |
| 196 | ctr.CreateConfig = func(ctx context.Context, t testing.TB) *pgx.ConnConfig { |
| 197 | config := defaultConnTestRunner.CreateConfig(ctx, t) |
| 198 | config.Tracer = tracer |
| 199 | return config |
| 200 | } |
| 201 | |
| 202 | pgxtest.RunWithQueryExecModes(ctx, t, ctr, nil, func(ctx context.Context, t testing.TB, conn *pgx.Conn) { |
| 203 | logger.Clear() // Clear any logs written when establishing connection |
| 204 | |
| 205 | var s string |
| 206 | for range 63 { |
| 207 | s += "0" |
| 208 | } |
| 209 | s += "😊" |
| 210 | |
| 211 | _, err := conn.Exec(ctx, `select $1::text`, s) |
| 212 | require.NoError(t, err) |
| 213 | |
| 214 | logs := logger.FilterByMsg("Query") |
| 215 | require.Len(t, logs, 1) |
| 216 | require.Equal(t, tracelog.LogLevelInfo, logs[0].lvl) |
| 217 | require.Equal(t, s, logs[0].data["args"].([]any)[0]) |
| 218 | |
| 219 | logger.Clear() |
| 220 | |
| 221 | _, err = conn.Exec(ctx, `select $1::text`, s+"000") |
| 222 | require.NoError(t, err) |
| 223 | |
| 224 | logs = logger.FilterByMsg("Query") |
| 225 | require.Len(t, logs, 1) |
| 226 | require.Equal(t, tracelog.LogLevelInfo, logs[0].lvl) |
| 227 | require.Equal(t, s+" (truncated 3 bytes)", logs[0].data["args"].([]any)[0]) |
| 228 | }) |
| 229 | } |
| 230 | |
| 231 | func TestLogCopyFrom(t *testing.T) { |
| 232 | t.Parallel() |
nothing calls this directly
no test coverage detected