in spanner_prober/prober/proberlib.go [599:627]
func validateRows(iter *spanner.RowIterator) (int, error) {
rows := 0
for {
row, err := iter.Next()
if err == iterator.Done {
return rows, nil
}
if err != nil {
return rows, err
}
var id int64
var payload, payloadHash []byte
if err := row.Columns(&id, &payload, &payloadHash); err != nil {
return rows, err
}
h := sha256.New()
_, err = h.Write(payload)
if err != nil {
return rows, err
}
if calculatedHash := h.Sum(nil); !bytes.Equal(calculatedHash, payloadHash) {
return rows, fmt.Errorf("hash for row %v did not match, got %v, want %v", id, calculatedHash, payloadHash)
}
rows++
}
}