]> Cypherpunks repositories - gostls13.git/commitdiff
database/sql: use reflect.TypeFor for known types
authorIan Lance Taylor <iant@golang.org>
Tue, 1 Aug 2023 19:37:15 +0000 (12:37 -0700)
committerGopher Robot <gobot@golang.org>
Tue, 8 Aug 2023 20:57:57 +0000 (20:57 +0000)
For #60088

Change-Id: Ib05ba3d456b22f7370459037b3d263c4b3ebe3b1
Reviewed-on: https://go-review.googlesource.com/c/go/+/514975
Reviewed-by: Daniel Theophanes <kardianos@gmail.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
src/database/sql/convert.go
src/database/sql/driver/types.go
src/database/sql/fakedb_test.go
src/database/sql/sql.go

index ffc4e497b4c1cb720ab468ccaf65dc16aac58695..d1a8981e5e5706c9739d0dbc870758e2b815eb5e 100644 (file)
@@ -529,7 +529,7 @@ func asBytes(buf []byte, rv reflect.Value) (b []byte, ok bool) {
        return
 }
 
-var valuerReflectType = reflect.TypeOf((*driver.Valuer)(nil)).Elem()
+var valuerReflectType = reflect.TypeFor[driver.Valuer]()
 
 // callValuerValue returns vr.Value(), with one exception:
 // If vr.Value is an auto-generated method on a pointer type and the
index fa98df7acdec973b7c801271fe7ef4fa74b399e5..c4a253b3e5608f0c59d53e7ca360e17ae7cc57cb 100644 (file)
@@ -211,7 +211,7 @@ type defaultConverter struct{}
 
 var _ ValueConverter = defaultConverter{}
 
-var valuerReflectType = reflect.TypeOf((*Valuer)(nil)).Elem()
+var valuerReflectType = reflect.TypeFor[Valuer]()
 
 // callValuerValue returns vr.Value(), with one exception:
 // If vr.Value is an auto-generated method on a pointer type and the
index cfeb3b343739190abab806135fdeec0c0ffac52e..c6c3172b5c34151b635521ceee0d350a9a5df9c1 100644 (file)
@@ -1251,33 +1251,33 @@ func converterForType(typ string) driver.ValueConverter {
 func colTypeToReflectType(typ string) reflect.Type {
        switch typ {
        case "bool":
-               return reflect.TypeOf(false)
+               return reflect.TypeFor[bool]()
        case "nullbool":
-               return reflect.TypeOf(NullBool{})
+               return reflect.TypeFor[NullBool]()
        case "int16":
-               return reflect.TypeOf(int16(0))
+               return reflect.TypeFor[int16]()
        case "nullint16":
-               return reflect.TypeOf(NullInt16{})
+               return reflect.TypeFor[NullInt16]()
        case "int32":
-               return reflect.TypeOf(int32(0))
+               return reflect.TypeFor[int32]()
        case "nullint32":
-               return reflect.TypeOf(NullInt32{})
+               return reflect.TypeFor[NullInt32]()
        case "string":
-               return reflect.TypeOf("")
+               return reflect.TypeFor[string]()
        case "nullstring":
-               return reflect.TypeOf(NullString{})
+               return reflect.TypeFor[NullString]()
        case "int64":
-               return reflect.TypeOf(int64(0))
+               return reflect.TypeFor[int64]()
        case "nullint64":
-               return reflect.TypeOf(NullInt64{})
+               return reflect.TypeFor[NullInt64]()
        case "float64":
-               return reflect.TypeOf(float64(0))
+               return reflect.TypeFor[float64]()
        case "nullfloat64":
-               return reflect.TypeOf(NullFloat64{})
+               return reflect.TypeFor[NullFloat64]()
        case "datetime":
-               return reflect.TypeOf(time.Time{})
+               return reflect.TypeFor[time.Time]()
        case "any":
-               return reflect.TypeOf(new(any)).Elem()
+               return reflect.TypeFor[any]()
        }
        panic("invalid fakedb column type of " + typ)
 }
index 7a57c7de36c9746ad8e7c766cbf0e5554dd3c524..7592bad1d385138af1513cf35212e95d462e2244 100644 (file)
@@ -3244,7 +3244,7 @@ func rowsColumnInfoSetupConnLocked(rowsi driver.Rows) []*ColumnType {
                if prop, ok := rowsi.(driver.RowsColumnTypeScanType); ok {
                        ci.scanType = prop.ColumnTypeScanType(i)
                } else {
-                       ci.scanType = reflect.TypeOf(new(any)).Elem()
+                       ci.scanType = reflect.TypeFor[any]()
                }
                if prop, ok := rowsi.(driver.RowsColumnTypeDatabaseTypeName); ok {
                        ci.databaseType = prop.ColumnTypeDatabaseTypeName(i)