@@ -326,3 +326,34 @@ func TestJSONCodecScanToNonPointerValues(t *testing.T) {
326
326
require .Equal (t , 42 , m )
327
327
})
328
328
}
329
+
330
+ func TestJSONCodecScanNull (t * testing.T ) {
331
+ defaultConnTestRunner .RunTest (context .Background (), t , func (ctx context.Context , t testing.TB , conn * pgx.Conn ) {
332
+ var dest struct {}
333
+ err := conn .QueryRow (ctx , "select null::jsonb" ).Scan (& dest )
334
+ require .Error (t , err )
335
+ require .Contains (t , err .Error (), "cannot scan NULL into *struct {}" )
336
+
337
+ err = conn .QueryRow (ctx , "select 'null'::jsonb" ).Scan (& dest )
338
+ require .Error (t , err )
339
+ require .Contains (t , err .Error (), "cannot scan NULL into *struct {}" )
340
+
341
+ var destPointer * struct {}
342
+ err = conn .QueryRow (ctx , "select null::jsonb" ).Scan (& destPointer )
343
+ require .NoError (t , err )
344
+ require .Nil (t , destPointer )
345
+
346
+ err = conn .QueryRow (ctx , "select 'null'::jsonb" ).Scan (& destPointer )
347
+ require .NoError (t , err )
348
+ require .Nil (t , destPointer )
349
+ })
350
+ }
351
+
352
+ func TestJSONCodecScanNullToPointerToSQLScanner (t * testing.T ) {
353
+ defaultConnTestRunner .RunTest (context .Background (), t , func (ctx context.Context , t testing.TB , conn * pgx.Conn ) {
354
+ var dest * Issue2146
355
+ err := conn .QueryRow (ctx , "select null::jsonb" ).Scan (& dest )
356
+ require .NoError (t , err )
357
+ require .Nil (t , dest )
358
+ })
359
+ }
0 commit comments