mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-09-11 07:11:02 +00:00
make ImportSetFieldValue a private method and add some error handling
This commit is contained in:
parent
0d8c2c10e2
commit
eaefc31b4f
1 changed files with 15 additions and 5 deletions
20
fragment.go
20
fragment.go
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue