2
0

Add ScanDecoder and ScanValue to composite scanners.

Rename Scan to Next to disambiguate.
This commit is contained in:
Jack Christensen
2020-05-12 15:04:14 -05:00
parent e51cb1ef09
commit fcb385dccb
4 changed files with 104 additions and 94 deletions
+6 -29
View File
@@ -20,19 +20,10 @@ func (cf CompositeFields) DecodeBinary(ci *ConnInfo, src []byte) error {
return errors.Errorf("cannot decode unexpected null into CompositeFields")
}
scanner, err := NewCompositeBinaryScanner(src)
if err != nil {
return err
}
if len(cf) != scanner.FieldCount() {
return errors.Errorf("SQL composite can't be read, field count mismatch. expected %d , found %d", len(cf), scanner.FieldCount())
}
scanner := NewCompositeBinaryScanner(ci, src)
for i := 0; scanner.Scan(); i++ {
err := ci.Scan(scanner.OID(), BinaryFormatCode, scanner.Bytes(), cf[i])
if err != nil {
return err
}
for _, f := range cf {
scanner.ScanValue(f)
}
if scanner.Err() != nil {
@@ -51,30 +42,16 @@ func (cf CompositeFields) DecodeText(ci *ConnInfo, src []byte) error {
return errors.Errorf("cannot decode unexpected null into CompositeFields")
}
scanner, err := NewCompositeTextScanner(src)
if err != nil {
return err
}
scanner := NewCompositeTextScanner(ci, src)
fieldCount := 0
for i := 0; scanner.Scan(); i++ {
err := ci.Scan(0, TextFormatCode, scanner.Bytes(), cf[i])
if err != nil {
return err
}
fieldCount += 1
for _, f := range cf {
scanner.ScanValue(f)
}
if scanner.Err() != nil {
return scanner.Err()
}
if len(cf) != fieldCount {
return errors.Errorf("SQL composite can't be read, field count mismatch. expected %d , found %d", len(cf), fieldCount)
}
return nil
}