Skip to content

Commit 19a00e3

Browse files
committed
Simplify textRows.readRow
Refactor textRows.readRow to improve readability: * simplified flow: * reduced maximum indent level * return error early * remove 3 'continue' * remove one type cast * remove one obsolete comment about readLengthEncodedString * -6 lines of code
1 parent 12508c8 commit 19a00e3

File tree

1 file changed

+20
-26
lines changed

1 file changed

+20
-26
lines changed

packets.go

+20-26
Original file line numberDiff line numberDiff line change
@@ -761,40 +761,34 @@ func (rows *textRows) readRow(dest []driver.Value) error {
761761
}
762762

763763
// RowSet Packet
764-
var n int
765-
var isNull bool
766764
pos := 0
767765

768766
for i := range dest {
769-
// Read bytes and convert to string
770-
dest[i], isNull, n, err = readLengthEncodedString(data[pos:])
767+
b, isNull, n, err := readLengthEncodedString(data[pos:])
768+
if err != nil {
769+
return err
770+
}
771771
pos += n
772-
if err == nil {
773-
if !isNull {
774-
if !mc.parseTime {
772+
switch {
773+
case isNull:
774+
dest[i] = nil
775+
case mc.parseTime:
776+
switch rows.rs.columns[i].fieldType {
777+
778+
case fieldTypeTimestamp, fieldTypeDateTime,
779+
fieldTypeDate, fieldTypeNewDate:
780+
781+
t, err := parseDateTime(b, mc.cfg.Loc)
782+
if err != nil {
783+
dest[i] = t
775784
continue
776-
} else {
777-
switch rows.rs.columns[i].fieldType {
778-
case fieldTypeTimestamp, fieldTypeDateTime,
779-
fieldTypeDate, fieldTypeNewDate:
780-
dest[i], err = parseDateTime(
781-
dest[i].([]byte),
782-
mc.cfg.Loc,
783-
)
784-
if err == nil {
785-
continue
786-
}
787-
default:
788-
continue
789-
}
790785
}
791-
792-
} else {
793-
dest[i] = nil
794-
continue
786+
// If parseDateTime failed, leave as []byte
795787
}
788+
fallthrough
789+
default:
790+
dest[i] = b
796791
}
797-
return err // err != nil
798792
}
799793

800794
return nil

0 commit comments

Comments
 (0)