2
0

Remove rune to text conversion

Because rune is an alias for int32 this caused some very surprising
results. e.g. inserting int32(65) into text would insert "A" instead of
"65".
This commit is contained in:
Jack Christensen
2022-05-12 17:13:49 -05:00
parent c1495aace0
commit 989a4835de
3 changed files with 0 additions and 40 deletions
-4
View File
@@ -28,8 +28,6 @@ func (EnumCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodeP
return encodePlanTextCodecString{}
case []byte:
return encodePlanTextCodecByteSlice{}
case rune:
return encodePlanTextCodecRune{}
case TextValuer:
return encodePlanTextCodecTextValuer{}
}
@@ -48,8 +46,6 @@ func (c *EnumCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanP
return scanPlanAnyToNewByteSlice{}
case TextScanner:
return &scanPlanTextAnyToEnumTextScanner{codec: c}
case *rune:
return scanPlanTextAnyToRune{}
}
}
-31
View File
@@ -4,7 +4,6 @@ import (
"database/sql/driver"
"encoding/json"
"fmt"
"unicode/utf8"
)
type TextScanner interface {
@@ -98,8 +97,6 @@ func (TextCodec) PlanEncode(m *Map, oid uint32, format int16, value any) EncodeP
return encodePlanTextCodecString{}
case []byte:
return encodePlanTextCodecByteSlice{}
case rune:
return encodePlanTextCodecRune{}
case TextValuer:
return encodePlanTextCodecTextValuer{}
}
@@ -124,14 +121,6 @@ func (encodePlanTextCodecByteSlice) Encode(value any, buf []byte) (newBuf []byte
return buf, nil
}
type encodePlanTextCodecRune struct{}
func (encodePlanTextCodecRune) Encode(value any, buf []byte) (newBuf []byte, err error) {
r := value.(rune)
buf = append(buf, string(r)...)
return buf, nil
}
type encodePlanTextCodecStringer struct{}
func (encodePlanTextCodecStringer) Encode(value any, buf []byte) (newBuf []byte, err error) {
@@ -169,8 +158,6 @@ func (TextCodec) PlanScan(m *Map, oid uint32, format int16, target any) ScanPlan
return scanPlanAnyToByteScanner{}
case TextScanner:
return scanPlanTextAnyToTextScanner{}
case *rune:
return scanPlanTextAnyToRune{}
}
}
@@ -223,24 +210,6 @@ func (scanPlanAnyToByteScanner) Scan(src []byte, dst any) error {
return p.ScanBytes(src)
}
type scanPlanTextAnyToRune struct{}
func (scanPlanTextAnyToRune) Scan(src []byte, dst any) error {
if src == nil {
return fmt.Errorf("cannot scan null into %T", dst)
}
r, size := utf8.DecodeRune(src)
if size != len(src) {
return fmt.Errorf("cannot scan %v into %T: more than one rune received", src, dst)
}
p := (dst).(*rune)
*p = r
return nil
}
type scanPlanTextAnyToTextScanner struct{}
func (scanPlanTextAnyToTextScanner) Scan(src []byte, dst any) error {
-5
View File
@@ -33,11 +33,6 @@ func TestTextCodec(t *testing.T) {
{"foo", new(string), isExpectedEq("foo")},
{someFmtStringer{}, new(string), isExpectedEq("some fmt.Stringer")},
})
// rune requires known OID because otherwise it is considered an int32.
pgxtest.RunValueRoundTripTests(context.Background(), t, defaultConnTestRunner, pgxtest.KnownOIDQueryExecModes, pgTypeName, []pgxtest.ValueRoundTripTest{
{rune('R'), new(rune), isExpectedEq(rune('R'))},
})
}
}