mirror of https://github.com/jackc/pgx.git
Merge pull request #2112 from jennifersp/master
support text scanner for binary format for uint32pull/2114/head
commit
b197994b1f
|
@ -205,6 +205,8 @@ func (Uint32Codec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPl
|
||||||
return scanPlanBinaryUint32ToUint32{}
|
return scanPlanBinaryUint32ToUint32{}
|
||||||
case Uint32Scanner:
|
case Uint32Scanner:
|
||||||
return scanPlanBinaryUint32ToUint32Scanner{}
|
return scanPlanBinaryUint32ToUint32Scanner{}
|
||||||
|
case TextScanner:
|
||||||
|
return scanPlanBinaryUint32ToTextScanner{}
|
||||||
}
|
}
|
||||||
case TextFormatCode:
|
case TextFormatCode:
|
||||||
switch target.(type) {
|
switch target.(type) {
|
||||||
|
@ -282,6 +284,22 @@ func (scanPlanBinaryUint32ToUint32Scanner) Scan(src []byte, dst any) error {
|
||||||
return s.ScanUint32(Uint32{Uint32: n, Valid: true})
|
return s.ScanUint32(Uint32{Uint32: n, Valid: true})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type scanPlanBinaryUint32ToTextScanner struct{}
|
||||||
|
|
||||||
|
func (scanPlanBinaryUint32ToTextScanner) Scan(src []byte, dst any) error {
|
||||||
|
s, ok := (dst).(TextScanner)
|
||||||
|
if !ok {
|
||||||
|
return ErrScanTargetTypeChanged
|
||||||
|
}
|
||||||
|
|
||||||
|
if src == nil {
|
||||||
|
return s.ScanText(Text{})
|
||||||
|
}
|
||||||
|
|
||||||
|
n := uint64(binary.BigEndian.Uint32(src))
|
||||||
|
return s.ScanText(Text{String: strconv.FormatUint(n, 10), Valid: true})
|
||||||
|
}
|
||||||
|
|
||||||
type scanPlanTextAnyToUint32Scanner struct{}
|
type scanPlanTextAnyToUint32Scanner struct{}
|
||||||
|
|
||||||
func (scanPlanTextAnyToUint32Scanner) Scan(src []byte, dst any) error {
|
func (scanPlanTextAnyToUint32Scanner) Scan(src []byte, dst any) error {
|
||||||
|
|
|
@ -17,5 +17,6 @@ func TestUint32Codec(t *testing.T) {
|
||||||
},
|
},
|
||||||
{pgtype.Uint32{}, new(pgtype.Uint32), isExpectedEq(pgtype.Uint32{})},
|
{pgtype.Uint32{}, new(pgtype.Uint32), isExpectedEq(pgtype.Uint32{})},
|
||||||
{nil, new(pgtype.Uint32), isExpectedEq(pgtype.Uint32{})},
|
{nil, new(pgtype.Uint32), isExpectedEq(pgtype.Uint32{})},
|
||||||
|
{"1147", new(string), isExpectedEq("1147")},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue