mirror of
https://github.com/dolthub/dolt.git
synced 2026-02-15 00:50:22 -06:00
cleanup
This commit is contained in:
@@ -30,11 +30,14 @@ teardown() {
|
||||
dolt sql -q 'insert into test values (0,0,"0"), (1,1,"1")'
|
||||
dolt add .
|
||||
dolt commit -m rows
|
||||
dolt sql -q 'update test set c1 = 9 where pk = 0'
|
||||
dolt sql -q 'delete from test where pk=1'
|
||||
dolt sql -q 'insert into test values (2,2,"2")'
|
||||
run dolt query_diff 'select * from test'
|
||||
[ "$status" -eq 0 ]
|
||||
[[ "$output" =~ "| | pk | c1 | c2 |" ]]
|
||||
[[ "$output" =~ "| < | 1 | 1 | 1 |" ]]
|
||||
[[ "$output" =~ "| > | 1 | 9 | 1 |" ]]
|
||||
[[ "$output" =~ "| - | 1 | 1 | 1 |" ]]
|
||||
[[ "$output" =~ "| + | 2 | 2 | 2 |" ]]
|
||||
}
|
||||
|
||||
@@ -51,28 +51,25 @@ func lazyQueryPlan(node sql.Node) (lazyNode sql.Node, projections []sql.Expressi
|
||||
}
|
||||
|
||||
offset := 0
|
||||
newChildren := make([]sql.Node, len(children))
|
||||
lazyChildren := make([]sql.Node, len(children))
|
||||
for i, c := range children {
|
||||
c, pjs, err := lazyQueryPlan(c)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
if len(c.Schema()) != len(pjs) {
|
||||
return nil, nil, fmt.Errorf("node schema mismatched with node projections")
|
||||
}
|
||||
newChildren[i] = c
|
||||
lazyChildren[i] = c
|
||||
|
||||
pjs = shiftFieldIndexes(pjs, offset)
|
||||
projections = append(projections, pjs...)
|
||||
offset += len(pjs)
|
||||
}
|
||||
|
||||
lazyNode, err = node.WithChildren(newChildren...)
|
||||
node, err = node.WithChildren(lazyChildren...)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
lazyNode, err = plan.TransformExpressions(lazyNode, func(e sql.Expression) (sql.Expression, error) {
|
||||
lazyNode, err = plan.TransformExpressions(node, func(e sql.Expression) (sql.Expression, error) {
|
||||
return makeExpressionLazy(e, projections)
|
||||
})
|
||||
if err != nil {
|
||||
@@ -84,7 +81,12 @@ func lazyQueryPlan(node sql.Node) (lazyNode sql.Node, projections []sql.Expressi
|
||||
projections = p.Expressions()
|
||||
}
|
||||
|
||||
return lazyNode, projections, err
|
||||
err = validateProjections(lazyNode.Schema(), projections)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
return lazyNode, projections, nil
|
||||
}
|
||||
|
||||
func extractRowOrder(node sql.Node) (composite []plan.SortField) {
|
||||
@@ -150,6 +152,19 @@ func shiftFieldIndexes(composite []sql.Expression, offset int) []sql.Expression
|
||||
return shifted
|
||||
}
|
||||
|
||||
func validateProjections(sch sql.Schema, projections []sql.Expression) error {
|
||||
if len(sch) != len(projections) {
|
||||
return fmt.Errorf("lazy node schema does not match lazy projections")
|
||||
}
|
||||
for i, col := range sch {
|
||||
if col.Type != projections[i].Type() {
|
||||
return fmt.Errorf("lazy node schema col type %s does not match lazy projection type %s",
|
||||
col.Type.String(), projections[i].Type().String())
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func errWithQueryPlan(ctx *sql.Context, eng *sqle.Engine, query string, cause error) error {
|
||||
_, iter, err := eng.Query(ctx, fmt.Sprintf("describe %s", query))
|
||||
if err != nil {
|
||||
|
||||
@@ -16,7 +16,6 @@ package querydiff
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"math"
|
||||
@@ -39,8 +38,6 @@ const (
|
||||
Unknown rowOrder = math.MaxInt8
|
||||
)
|
||||
|
||||
var errSkip = errors.New("errSkip") // u lyk hax?
|
||||
|
||||
type rowOrder int8
|
||||
|
||||
type QueryDiffer struct {
|
||||
@@ -108,6 +105,9 @@ func (qd *QueryDiffer) Start() {
|
||||
|
||||
func (qd *QueryDiffer) NextDiff() (fromRow sql.Row, toRow sql.Row, err error) {
|
||||
for {
|
||||
if qd.ae.IsSet() {
|
||||
return nil, nil, qd.ae.Get()
|
||||
}
|
||||
if qd.from.isDone() && qd.to.isDone() {
|
||||
return nil, nil, io.EOF
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user