make ImportSetFieldValue a private method and add some error handling

This commit is contained in:
Travis 2017-09-15 09:24:47 -05:00
parent 0d8c2c10e2
commit eaefc31b4f
No known key found for this signature in database
GPG key ID: 7F08008DFD9314C9

View file

@ -542,18 +542,25 @@ func (f *Fragment) SetFieldValue(columnID uint64, bitDepth uint, value uint64) (
return changed, nil
}
func (f *Fragment) ImportSetFieldValue(columnID uint64, bitDepth uint, value uint64) (changed bool, err error) {
// importSetFieldValue is a more efficient SetFieldValue just for imports.
func (f *Fragment) importSetFieldValue(columnID uint64, bitDepth uint, value uint64) (changed bool, err error) {
for i := uint(0); i < bitDepth; i++ {
if value&(1<<i) != 0 {
bit, _ := f.pos(uint64(i), columnID)
bit, err := f.pos(uint64(i), columnID)
if err != nil {
return changed, err
}
if c, err := f.storage.Add(bit); err != nil {
return changed, err
} else if c {
changed = true
}
} else {
bit, _ := f.pos(uint64(i), columnID)
bit, err := f.pos(uint64(i), columnID)
if err != nil {
return changed, err
}
if c, err := f.storage.Remove(bit); err != nil {
return changed, err
} else if c {
@ -563,7 +570,10 @@ func (f *Fragment) ImportSetFieldValue(columnID uint64, bitDepth uint, value uin
}
// Mark value as set.
p, _ := f.pos(uint64(bitDepth), columnID)
p, err := f.pos(uint64(bitDepth), columnID)
if err != nil {
return changed, err
}
if c, err := f.storage.Add(p); err != nil {
return changed, err
} else if c {
@ -1306,7 +1316,7 @@ func (f *Fragment) ImportValue(columnIDs, values []uint64, bitDepth uint) error
for i := range columnIDs {
columnID, value := columnIDs[i], values[i]
_, err := f.ImportSetFieldValue(columnID, bitDepth, value)
_, err := f.importSetFieldValue(columnID, bitDepth, value)
if err != nil {
return err
}