pf feedback round 2

This commit is contained in:
Andy Arthur
2020-12-16 15:34:22 -08:00
parent 949d84c505
commit 8a59457dda
4 changed files with 22 additions and 35 deletions

View File

@@ -22,7 +22,9 @@ import (
)
const (
cardinalityValIdx = uint64(1)
KeylessCardinalityTagIdx = uint64(0)
KeylessCardinalityValIdx = uint64(1)
KeylessFirstValIdx = uint64(2)
)
var ErrZeroCardinality = fmt.Errorf("read row with zero cardinality")
@@ -104,17 +106,10 @@ func (r keylessRow) NomsMapValue(sch schema.Schema) types.Valuable {
}
func (r keylessRow) IterCols(cb func(tag uint64, val types.Value) (stop bool, err error)) (bool, error) {
iter, err := r.val.IteratorAt(cardinalityValIdx) // skip cardinality tag
iter, err := r.val.IteratorAt(KeylessFirstValIdx) // skip cardinality tag & val
if err != nil {
return false, err
}
_, card, err := iter.Next()
if err != nil {
return false, err
}
if card.(types.Uint) < 1 {
return false, ErrZeroCardinality
}
for {
_, v, err := iter.Next()
@@ -148,17 +143,10 @@ func (r keylessRow) IterCols(cb func(tag uint64, val types.Value) (stop bool, er
}
func (r keylessRow) IterSchema(sch schema.Schema, cb func(tag uint64, val types.Value) (stop bool, err error)) (bool, error) {
iter, err := r.val.IteratorAt(cardinalityValIdx) // skip cardinality tag
iter, err := r.val.IteratorAt(KeylessFirstValIdx) // skip cardinality tag & val
if err != nil {
return false, err
}
_, card, err := iter.Next()
if err != nil {
return false, err
}
if card.(types.Uint) < 1 {
return false, ErrZeroCardinality
}
tags := sch.GetAllCols().Tags
vals := make([]types.Value, len(tags))
@@ -209,7 +197,7 @@ func (r keylessRow) GetColVal(tag uint64) (val types.Value, ok bool) {
}
func (r keylessRow) SetColVal(updateTag uint64, updateVal types.Value, sch schema.Schema) (Row, error) {
iter, err := r.val.IteratorAt(cardinalityValIdx) // skip cardinality tag
iter, err := r.val.IteratorAt(KeylessCardinalityValIdx) // skip cardinality tag
if err != nil {
return nil, err
}
@@ -217,11 +205,7 @@ func (r keylessRow) SetColVal(updateTag uint64, updateVal types.Value, sch schem
if err != nil {
return nil, err
}
card := uint64(c.(types.Uint))
if card < 1 {
return nil, ErrZeroCardinality
}
i := 0
vals := make([]types.Value, sch.GetAllCols().Size())

View File

@@ -81,7 +81,7 @@ func GetFieldByNameWithDefault(colName string, defVal types.Value, r Row, sch sc
}
}
// ReduceToIndex creates and index record from a primary storage record.
// ReduceToIndex creates an index record from a primary storage record.
func ReduceToIndex(idx schema.Index, r Row) (Row, error) {
newRow := nomsRow{
key: make(TaggedValues),
@@ -97,7 +97,7 @@ func ReduceToIndex(idx schema.Index, r Row) (Row, error) {
return newRow, nil
}
// ReduceToIndexPartialKey creates and index record from a primary storage record.
// ReduceToIndexPartialKey creates an index record from a primary storage record.
func ReduceToIndexPartialKey(idx schema.Index, r Row) (types.Tuple, error) {
var vals []types.Value
for _, tag := range idx.IndexedColumnTags() {

View File

@@ -14,6 +14,13 @@
package schema
// ** WARNING - DO NOT CHANGE **
//
// consistency in these values
// is critical for compatibility
//
// ** WARNING - DO NOT CHANGE **
const (
// SystemTableReservedMin defines the lower bound of the tag space reserved for system tables
SystemTableReservedMin uint64 = ReservedTagMin << 1

View File

@@ -30,10 +30,6 @@ import (
"github.com/dolthub/dolt/go/store/types"
)
const (
cardinalityValIdx = uint64(1)
)
// keylessTableEditor accumulates and applies row edits to keyless tables.
type keylessTableEditor struct {
tbl *doltdb.Table
@@ -316,9 +312,9 @@ func applyEdits(ctx context.Context, tbl *doltdb.Table, acc keylessEditAcc) (*do
var ok bool
if v == nil {
// row does not yet exist
v, ok, err = setCardinality(delta.val, delta.delta)
v, ok, err = initializeCardinality(delta.val, delta.delta)
} else {
v, ok, err = updateCardinality(v.(types.Tuple), delta.delta)
v, ok, err = modifyCardinalityWithDelta(v.(types.Tuple), delta.delta)
}
if err != nil {
return nil, err
@@ -340,12 +336,12 @@ func applyEdits(ctx context.Context, tbl *doltdb.Table, acc keylessEditAcc) (*do
}
// for deletes (cardinality < 1): |ok| is set false
func setCardinality(val types.Tuple, card int64) (v types.Tuple, ok bool, err error) {
func initializeCardinality(val types.Tuple, card int64) (v types.Tuple, ok bool, err error) {
if card < 1 {
return types.Tuple{}, false, nil
}
v, err = val.Set(cardinalityValIdx, types.Uint(card))
v, err = val.Set(row.KeylessCardinalityValIdx, types.Uint(card))
if err != nil {
return v, false, err
}
@@ -354,8 +350,8 @@ func setCardinality(val types.Tuple, card int64) (v types.Tuple, ok bool, err er
}
// for deletes (cardinality < 1): |ok| is set false
func updateCardinality(val types.Tuple, delta int64) (v types.Tuple, ok bool, err error) {
c, err := val.Get(cardinalityValIdx)
func modifyCardinalityWithDelta(val types.Tuple, delta int64) (v types.Tuple, ok bool, err error) {
c, err := val.Get(row.KeylessCardinalityValIdx)
if err != nil {
return v, false, err
}
@@ -365,7 +361,7 @@ func updateCardinality(val types.Tuple, delta int64) (v types.Tuple, ok bool, er
return types.Tuple{}, false, nil
}
v, err = val.Set(cardinalityValIdx, types.Uint(card))
v, err = val.Set(row.KeylessCardinalityValIdx, types.Uint(card))
if err != nil {
return v, false, err
}