Skip to content

Commit 6381322

Browse files
author
James Cor
committed
don't use vitess type
1 parent 70fea5c commit 6381322

File tree

12 files changed

+213
-118
lines changed

12 files changed

+213
-118
lines changed

server/handler.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -868,8 +868,12 @@ func (h *Handler) resultForDefaultIter2(ctx *sql.Context, c *mysql.Conn, iter sq
868868
if !ok {
869869
return nil
870870
}
871-
ctx.GetLogger().Tracef("spooling result row %s", row)
872-
res.Rows = append(res.Rows, row)
871+
resRow := make([]sqltypes.Value, len(row))
872+
for i, v := range row {
873+
resRow[i] = sqltypes.MakeTrusted(v.Typ, v.Val)
874+
}
875+
ctx.GetLogger().Tracef("spooling result row %s", resRow)
876+
res.Rows = append(res.Rows, resRow)
873877
res.RowsAffected++
874878
if !timer.Stop() {
875879
<-timer.C

sql/convert_value.go

Lines changed: 62 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,44 +5,88 @@ import (
55

66
"github.com/dolthub/go-mysql-server/sql/values"
77

8-
"github.com/dolthub/vitess/go/sqltypes"
98
"github.com/dolthub/vitess/go/vt/proto/query"
109
)
1110

1211
// ConvertToValue converts the interface to a sql value.
13-
func ConvertToValue(v interface{}) (sqltypes.Value, error) {
12+
func ConvertToValue(v interface{}) (Value, error) {
1413
switch v := v.(type) {
1514
case nil:
16-
return sqltypes.MakeTrusted(query.Type_NULL_TYPE, nil), nil
15+
return Value{
16+
Typ: query.Type_NULL_TYPE,
17+
Val: nil,
18+
}, nil
1719
case int:
18-
return sqltypes.MakeTrusted(query.Type_INT64, values.WriteInt64(make([]byte, values.Int64Size), int64(v))), nil
20+
return Value{
21+
Typ: query.Type_INT64,
22+
Val: values.WriteInt64(make([]byte, values.Int64Size), int64(v)),
23+
}, nil
1924
case int8:
20-
return sqltypes.MakeTrusted(query.Type_INT8, values.WriteInt8(make([]byte, values.Int8Size), v)), nil
25+
return Value{
26+
Typ: query.Type_INT8,
27+
Val: values.WriteInt8(make([]byte, values.Int8Size), v),
28+
}, nil
2129
case int16:
22-
return sqltypes.MakeTrusted(query.Type_INT16, values.WriteInt16(make([]byte, values.Int16Size), v)), nil
30+
return Value{
31+
Typ: query.Type_INT16,
32+
Val: values.WriteInt16(make([]byte, values.Int16Size), v),
33+
}, nil
2334
case int32:
24-
return sqltypes.MakeTrusted(query.Type_INT32, values.WriteInt32(make([]byte, values.Int32Size), v)), nil
35+
return Value{
36+
Typ: query.Type_INT32,
37+
Val: values.WriteInt32(make([]byte, values.Int32Size), v),
38+
}, nil
2539
case int64:
26-
return sqltypes.MakeTrusted(query.Type_INT64, values.WriteInt64(make([]byte, values.Int64Size), v)), nil
40+
return Value{
41+
Typ: query.Type_INT64,
42+
Val: values.WriteInt64(make([]byte, values.Int64Size), v),
43+
}, nil
2744
case uint:
28-
return sqltypes.MakeTrusted(query.Type_UINT64, values.WriteUint64(make([]byte, values.Uint64Size), uint64(v))), nil
45+
return Value{
46+
Typ: query.Type_UINT64,
47+
Val: values.WriteUint64(make([]byte, values.Uint64Size), uint64(v)),
48+
}, nil
2949
case uint8:
30-
return sqltypes.MakeTrusted(query.Type_UINT8, values.WriteUint8(make([]byte, values.Uint8Size), v)), nil
50+
return Value{
51+
Typ: query.Type_UINT8,
52+
Val: values.WriteUint8(make([]byte, values.Uint8Size), v),
53+
}, nil
3154
case uint16:
32-
return sqltypes.MakeTrusted(query.Type_UINT16, values.WriteUint16(make([]byte, values.Uint16Size), v)), nil
55+
return Value{
56+
Typ: query.Type_UINT16,
57+
Val: values.WriteUint16(make([]byte, values.Uint16Size), v),
58+
}, nil
3359
case uint32:
34-
return sqltypes.MakeTrusted(query.Type_UINT32, values.WriteUint32(make([]byte, values.Uint32Size), v)), nil
60+
return Value{
61+
Typ: query.Type_UINT32,
62+
Val: values.WriteUint32(make([]byte, values.Uint32Size), v),
63+
}, nil
3564
case uint64:
36-
return sqltypes.MakeTrusted(query.Type_UINT64, values.WriteUint64(make([]byte, values.Uint64Size), v)), nil
65+
return Value{
66+
Typ: query.Type_UINT64,
67+
Val: values.WriteUint64(make([]byte, values.Uint64Size), v),
68+
}, nil
3769
case float32:
38-
return sqltypes.MakeTrusted(query.Type_FLOAT32, values.WriteFloat32(make([]byte, values.Float32Size), v)), nil
70+
return Value{
71+
Typ: query.Type_FLOAT32,
72+
Val: values.WriteFloat32(make([]byte, values.Float32Size), v),
73+
}, nil
3974
case float64:
40-
return sqltypes.MakeTrusted(query.Type_FLOAT64, values.WriteFloat64(make([]byte, values.Float64Size), v)), nil
75+
return Value{
76+
Typ: query.Type_FLOAT64,
77+
Val: values.WriteFloat64(make([]byte, values.Float64Size), v),
78+
}, nil
4179
case string:
42-
return sqltypes.MakeTrusted(query.Type_VARCHAR, values.WriteString(make([]byte, len(v)), v, values.ByteOrderCollation)), nil
80+
return Value{
81+
Typ: query.Type_VARCHAR,
82+
Val: values.WriteString(make([]byte, len(v)), v, values.ByteOrderCollation),
83+
}, nil
4384
case []byte:
44-
return sqltypes.MakeTrusted(query.Type_BLOB, values.WriteBytes(make([]byte, len(v)), v, values.ByteOrderCollation)), nil
85+
return Value{
86+
Typ: query.Type_BLOB,
87+
Val: values.WriteBytes(make([]byte, len(v)), v, values.ByteOrderCollation),
88+
}, nil
4589
default:
46-
return sqltypes.Value{}, fmt.Errorf("type %T not implemented", v)
90+
return Value{}, fmt.Errorf("type %T not implemented", v)
4791
}
4892
}

sql/core.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import (
2626
"time"
2727
"unsafe"
2828

29-
"github.com/dolthub/vitess/go/sqltypes"
3029
"github.com/shopspring/decimal"
3130
"gopkg.in/src-d/go-errors.v1"
3231

@@ -465,7 +464,7 @@ func DebugString(nodeOrExpression interface{}) string {
465464
type Expression2 interface {
466465
Expression
467466
// Eval2 evaluates the given row frame and returns a result.
468-
Eval2(ctx *Context, row Row2) (sqltypes.Value, error)
467+
Eval2(ctx *Context, row Row2) (Value, error)
469468
// Type2 returns the expression type.
470469
Type2() Type2
471470
IsExpr2() bool

sql/expression/comparison.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ package expression
1717
import (
1818
"fmt"
1919

20-
"github.com/dolthub/vitess/go/sqltypes"
2120
querypb "github.com/dolthub/vitess/go/vt/proto/query"
2221
errors "gopkg.in/src-d/go-errors.v1"
2322

@@ -521,7 +520,7 @@ func (gt *GreaterThan) Eval(ctx *sql.Context, row sql.Row) (interface{}, error)
521520
return result == 1, nil
522521
}
523522

524-
func (gt *GreaterThan) Eval2(ctx *sql.Context, row sql.Row2) (sqltypes.Value, error) {
523+
func (gt *GreaterThan) Eval2(ctx *sql.Context, row sql.Row2) (sql.Value, error) {
525524
l, ok := gt.Left().(sql.Expression2)
526525
if !ok {
527526
panic(fmt.Sprintf("%T does not implement sql.Expression2", gt.Left()))
@@ -533,28 +532,31 @@ func (gt *GreaterThan) Eval2(ctx *sql.Context, row sql.Row2) (sqltypes.Value, er
533532

534533
lv, err := l.Eval2(ctx, row)
535534
if err != nil {
536-
return sqltypes.Value{}, err
535+
return sql.Value{}, err
537536
}
538537
rv, err := r.Eval2(ctx, row)
539538
if err != nil {
540-
return sqltypes.Value{}, err
539+
return sql.Value{}, err
541540
}
542541

543542
// TODO: just assume they are int64
544543
l64, err := types.ConvertValueToInt64(types.NumberTypeImpl_{}, lv)
545544
if err != nil {
546-
return sqltypes.Value{}, err
545+
return sql.Value{}, err
547546
}
548547
r64, err := types.ConvertValueToInt64(types.NumberTypeImpl_{}, rv)
549548
if err != nil {
550-
return sqltypes.Value{}, err
549+
return sql.Value{}, err
551550
}
552551
var rb byte
553552
if l64 > r64 {
554553
rb = 1
555554
}
556555

557-
ret := sqltypes.MakeTrusted(querypb.Type_INT8, []byte{rb})
556+
ret := sql.Value{
557+
Val: []byte{rb},
558+
Typ: querypb.Type_INT8,
559+
}
558560
return ret, nil
559561
}
560562

sql/expression/get_field.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818
"fmt"
1919
"strings"
2020

21-
"github.com/dolthub/vitess/go/sqltypes"
2221
errors "gopkg.in/src-d/go-errors.v1"
2322

2423
"github.com/dolthub/go-mysql-server/sql"
@@ -150,9 +149,9 @@ func (p *GetField) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
150149
return row[p.fieldIndex], nil
151150
}
152151

153-
func (p *GetField) Eval2(ctx *sql.Context, row sql.Row2) (sqltypes.Value, error) {
152+
func (p *GetField) Eval2(ctx *sql.Context, row sql.Row2) (sql.Value, error) {
154153
if p.fieldIndex < 0 || p.fieldIndex >= row.Len() {
155-
return sqltypes.Value{}, ErrIndexOutOfBounds.New(p.fieldIndex, row.Len())
154+
return sql.Value{}, ErrIndexOutOfBounds.New(p.fieldIndex, row.Len())
156155
}
157156
return row[p.fieldIndex], nil
158157
}

sql/expression/literal.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818
"fmt"
1919
"strings"
2020

21-
"github.com/dolthub/vitess/go/sqltypes"
2221
"github.com/dolthub/vitess/go/vt/proto/query"
2322
"github.com/dolthub/vitess/go/vt/sqlparser"
2423
"github.com/shopspring/decimal"
@@ -31,7 +30,7 @@ import (
3130
type Literal struct {
3231
Val interface{}
3332
Typ sql.Type
34-
val2 sqltypes.Value
33+
val2 sql.Value
3534
}
3635

3736
var _ sql.Expression = &Literal{}
@@ -137,7 +136,7 @@ func (*Literal) Children() []sql.Expression {
137136
return nil
138137
}
139138

140-
func (lit *Literal) Eval2(ctx *sql.Context, row sql.Row2) (sqltypes.Value, error) {
139+
func (lit *Literal) Eval2(ctx *sql.Context, row sql.Row2) (sql.Value, error) {
141140
return lit.val2, nil
142141
}
143142

sql/expression/unresolved.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818
"fmt"
1919
"strings"
2020

21-
"github.com/dolthub/vitess/go/sqltypes"
2221
"gopkg.in/src-d/go-errors.v1"
2322

2423
"github.com/dolthub/go-mysql-server/sql"
@@ -72,7 +71,7 @@ func (*UnresolvedColumn) CollationCoercibility(ctx *sql.Context) (collation sql.
7271
return sql.Collation_binary, 7
7372
}
7473

75-
func (uc *UnresolvedColumn) Eval2(ctx *sql.Context, row sql.Row2) (sqltypes.Value, error) {
74+
func (uc *UnresolvedColumn) Eval2(ctx *sql.Context, row sql.Row2) (sql.Value, error) {
7675
panic("unresolved column is a placeholder node, but Eval2 was called")
7776
}
7877

sql/plan/filter.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func (i *FilterIter) Next2(ctx *sql.Context) (sql.Row2, error) {
149149
if err != nil {
150150
return nil, err
151151
}
152-
if res.Raw()[0] == 1 {
152+
if res.Val[0] == 1 {
153153
return row, nil
154154
}
155155
}

sql/row_frame.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ package sql
1717
import (
1818
"sync"
1919

20-
"github.com/dolthub/vitess/go/sqltypes"
2120
querypb "github.com/dolthub/vitess/go/vt/proto/query"
2221
)
2322

@@ -27,10 +26,10 @@ const (
2726
)
2827

2928
// Row2 is a slice of values
30-
type Row2 []sqltypes.Value
29+
type Row2 []Value
3130

3231
// GetField returns the Value for the ith field in this row.
33-
func (r Row2) GetField(i int) sqltypes.Value {
32+
func (r Row2) GetField(i int) Value {
3433
return r[i]
3534
}
3635

@@ -98,7 +97,10 @@ func (f *RowFrame) Row2() Row2 {
9897

9998
rs := make(Row2, len(f.Values))
10099
for i := range f.Values {
101-
rs[i] = sqltypes.MakeTrusted(f.Types[i], f.Values[i])
100+
rs[i] = Value{
101+
Val: f.Values[i],
102+
Typ: f.Types[i],
103+
}
102104
}
103105
return rs
104106
}
@@ -111,7 +113,10 @@ func (f *RowFrame) Row2Copy() Row2 {
111113
for i := range f.Values {
112114
v := make(ValueBytes, len(f.Values[i]))
113115
copy(v, f.Values[i])
114-
rs[i] = sqltypes.MakeTrusted(f.Types[i], v)
116+
rs[i] = Value{
117+
Val: v,
118+
Typ: f.Types[i],
119+
}
115120
}
116121
return rs
117122
}

sql/rows.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -123,29 +123,29 @@ func RowFromRow2(sch Schema, r Row2) Row {
123123
for i, col := range sch {
124124
switch col.Type.Type() {
125125
case query.Type_INT8:
126-
row[i] = values.ReadInt8(r.GetField(i).Raw())
126+
row[i] = values.ReadInt8(r.GetField(i).Val)
127127
case query.Type_UINT8:
128-
row[i] = values.ReadUint8(r.GetField(i).Raw())
128+
row[i] = values.ReadUint8(r.GetField(i).Val)
129129
case query.Type_INT16:
130-
row[i] = values.ReadInt16(r.GetField(i).Raw())
130+
row[i] = values.ReadInt16(r.GetField(i).Val)
131131
case query.Type_UINT16:
132-
row[i] = values.ReadUint16(r.GetField(i).Raw())
132+
row[i] = values.ReadUint16(r.GetField(i).Val)
133133
case query.Type_INT32:
134-
row[i] = values.ReadInt32(r.GetField(i).Raw())
134+
row[i] = values.ReadInt32(r.GetField(i).Val)
135135
case query.Type_UINT32:
136-
row[i] = values.ReadUint32(r.GetField(i).Raw())
136+
row[i] = values.ReadUint32(r.GetField(i).Val)
137137
case query.Type_INT64:
138-
row[i] = values.ReadInt64(r.GetField(i).Raw())
138+
row[i] = values.ReadInt64(r.GetField(i).Val)
139139
case query.Type_UINT64:
140-
row[i] = values.ReadUint64(r.GetField(i).Raw())
140+
row[i] = values.ReadUint64(r.GetField(i).Val)
141141
case query.Type_FLOAT32:
142-
row[i] = values.ReadFloat32(r.GetField(i).Raw())
142+
row[i] = values.ReadFloat32(r.GetField(i).Val)
143143
case query.Type_FLOAT64:
144-
row[i] = values.ReadFloat64(r.GetField(i).Raw())
144+
row[i] = values.ReadFloat64(r.GetField(i).Val)
145145
case query.Type_TEXT, query.Type_VARCHAR, query.Type_CHAR:
146-
row[i] = values.ReadString(r.GetField(i).Raw(), values.ByteOrderCollation)
146+
row[i] = values.ReadString(r.GetField(i).Val, values.ByteOrderCollation)
147147
case query.Type_BLOB, query.Type_VARBINARY, query.Type_BINARY:
148-
row[i] = values.ReadBytes(r.GetField(i).Raw(), values.ByteOrderCollation)
148+
row[i] = values.ReadBytes(r.GetField(i).Val, values.ByteOrderCollation)
149149
case query.Type_BIT:
150150
fallthrough
151151
case query.Type_ENUM:

0 commit comments

Comments
 (0)