mirror of
https://github.com/dolthub/dolt.git
synced 2026-02-05 02:59:44 -06:00
pf feedback round 2
This commit is contained in:
@@ -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())
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user