mirror of
https://github.com/dolthub/dolt.git
synced 2026-05-03 11:30:28 -05:00
Bug fix: need to make a row the length of the projections, not the length of physical columns
This commit is contained in:
@@ -413,6 +413,7 @@ func (lb *coveringLookupBuilder) NewRowIter(ctx *sql.Context, part sql.Partition
|
||||
valMap: lb.valMap,
|
||||
ordMap: lb.ordMap,
|
||||
sqlSch: lb.sch.Schema,
|
||||
projections: lb.projections,
|
||||
ns: lb.ns,
|
||||
}, nil
|
||||
}
|
||||
@@ -446,6 +447,7 @@ func (lb *nonCoveringLookupBuilder) NewRowIter(ctx *sql.Context, part sql.Partit
|
||||
valMap: lb.valMap,
|
||||
ordMap: lb.ordMap,
|
||||
sqlSch: lb.sch.Schema,
|
||||
projections: lb.projections,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ type prollyIndexIter struct {
|
||||
keyMap, valMap val.OrdinalMapping
|
||||
//ordMap are output ordinals for |keyMap| and |valMap|
|
||||
ordMap val.OrdinalMapping
|
||||
projections []uint64
|
||||
sqlSch sql.Schema
|
||||
}
|
||||
|
||||
@@ -79,6 +80,7 @@ func newProllyIndexIter(
|
||||
keyMap: keyProj,
|
||||
valMap: valProj,
|
||||
ordMap: ordProj,
|
||||
projections: projections,
|
||||
sqlSch: pkSch.Schema,
|
||||
}
|
||||
|
||||
@@ -97,7 +99,7 @@ func (p prollyIndexIter) Next(ctx *sql.Context) (sql.Row, error) {
|
||||
}
|
||||
pk := p.pkBld.Build(sharePool)
|
||||
|
||||
r := make(sql.Row, len(p.keyMap)+len(p.valMap))
|
||||
r := make(sql.Row, len(p.projections))
|
||||
err = p.primary.Get(ctx, pk, func(key, value val.Tuple) error {
|
||||
return p.rowFromTuples(ctx, key, value, r)
|
||||
})
|
||||
@@ -167,6 +169,7 @@ type prollyCoveringIndexIter struct {
|
||||
|
||||
// |keyMap| and |valMap| are both of len ==
|
||||
keyMap, valMap, ordMap val.OrdinalMapping
|
||||
projections []uint64
|
||||
sqlSch sql.Schema
|
||||
}
|
||||
|
||||
@@ -214,7 +217,7 @@ func (p prollyCoveringIndexIter) Next(ctx *sql.Context) (sql.Row, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
r := make(sql.Row, len(p.keyMap)+len(p.valMap))
|
||||
r := make(sql.Row, len(p.projections))
|
||||
if err := p.writeRowFromTuples(ctx, k, v, r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -131,13 +131,10 @@ func projectionMappingsForIndex(sch schema.Schema, projections []uint64) (keyMap
|
||||
nonPks := sch.GetNonPKCols()
|
||||
|
||||
numPhysicalColumns := len(projections)
|
||||
physicalProjections := projections
|
||||
if schema.IsVirtual(sch) {
|
||||
numPhysicalColumns = 0
|
||||
physicalProjections = make([]uint64, sch.GetAllCols().StoredSize())
|
||||
for _, t := range projections {
|
||||
if idx, ok := sch.GetAllCols().TagToIdx[t]; ok && !sch.GetAllCols().GetByIndex(idx).Virtual {
|
||||
physicalProjections[numPhysicalColumns] = t
|
||||
numPhysicalColumns++
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user