Skip to content

Commit c8a2f08

Browse files
committed
Update code to support new context and Expression interface
Signed-off-by: Javi Fontan <[email protected]>
1 parent 2c5bdc8 commit c8a2f08

25 files changed

+116
-88
lines changed

blobs.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ func (r *blobsTable) TransformExpressionsUp(f sql.TransformExprFunc) (sql.Node,
6363
return r, nil
6464
}
6565

66-
func (r blobsTable) RowIter(session sql.Session) (sql.RowIter, error) {
66+
func (r blobsTable) RowIter(ctx *sql.Context) (sql.RowIter, error) {
6767
iter := new(blobIter)
6868

69-
repoIter, err := NewRowRepoIter(session, iter)
69+
repoIter, err := NewRowRepoIter(ctx, iter)
7070
if err != nil {
7171
return nil, err
7272
}
@@ -83,11 +83,11 @@ func (blobsTable) HandledFilters(filters []sql.Expression) []sql.Expression {
8383
}
8484

8585
func (r *blobsTable) WithProjectAndFilters(
86-
session sql.Session,
86+
ctx *sql.Context,
8787
_, filters []sql.Expression,
8888
) (sql.RowIter, error) {
8989
return rowIterWithSelectors(
90-
session, blobsSchema, blobsTableName, filters,
90+
ctx, blobsSchema, blobsTableName, filters,
9191
[]string{"hash"},
9292
func(selectors selectors) (RowRepoIter, error) {
9393
if len(selectors["hash"]) == 0 {

blobs_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ func TestBlobsTable_Children(t *testing.T) {
2929

3030
func TestBlobsTable_RowIter(t *testing.T) {
3131
require := require.New(t)
32-
session, _, cleanup := setup(t)
32+
ctx, _, cleanup := setup(t)
3333
defer cleanup()
3434

3535
table := getTable(require, blobsTableName)
3636

37-
rows, err := sql.NodeToRows(session, table)
37+
rows, err := sql.NodeToRows(ctx, table)
3838
require.NoError(err)
3939
require.Len(rows, 10)
4040

commits.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,10 @@ func (r *commitsTable) TransformExpressionsUp(f sql.TransformExprFunc) (sql.Node
5454
return r, nil
5555
}
5656

57-
func (r commitsTable) RowIter(session sql.Session) (sql.RowIter, error) {
57+
func (r commitsTable) RowIter(ctx *sql.Context) (sql.RowIter, error) {
5858
iter := new(commitIter)
5959

60-
repoIter, err := NewRowRepoIter(session, iter)
60+
repoIter, err := NewRowRepoIter(ctx, iter)
6161
if err != nil {
6262
return nil, err
6363
}
@@ -74,11 +74,11 @@ func (commitsTable) HandledFilters(filters []sql.Expression) []sql.Expression {
7474
}
7575

7676
func (r *commitsTable) WithProjectAndFilters(
77-
session sql.Session,
77+
ctx *sql.Context,
7878
_, filters []sql.Expression,
7979
) (sql.RowIter, error) {
8080
return rowIterWithSelectors(
81-
session, commitsSchema, commitsTableName, filters,
81+
ctx, commitsSchema, commitsTableName, filters,
8282
[]string{"hash"},
8383
func(selectors selectors) (RowRepoIter, error) {
8484
if len(selectors["hash"]) == 0 {

common_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ import (
77
"github.com/stretchr/testify/require"
88
fixtures "gopkg.in/src-d/go-git-fixtures.v3"
99
sqle "gopkg.in/src-d/go-mysql-server.v0"
10+
"gopkg.in/src-d/go-mysql-server.v0/sql"
1011
)
1112

1213
type CleanupFunc func()
1314

14-
func setup(t *testing.T) (sess *Session, path string, cleanup CleanupFunc) {
15+
func setup(t *testing.T) (ctx *sql.Context, path string, cleanup CleanupFunc) {
1516
require := require.New(t)
1617
t.Helper()
1718

@@ -29,5 +30,8 @@ func setup(t *testing.T) (sess *Session, path string, cleanup CleanupFunc) {
2930
require.NoError(fixtures.Clean())
3031
}
3132

32-
return NewSession(context.TODO(), &pool), path, cleanup
33+
session := NewSession(&pool)
34+
ctx = sql.NewContext(context.TODO(), session)
35+
36+
return ctx, path, cleanup
3337
}

filters.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -315,13 +315,13 @@ func unfoldOrs(or *expression.Or) []sql.Expression {
315315
// All remaining filters will also be applied here.
316316
// Example:
317317
// rowIterWithSelectors(
318-
// session, pool, someSchema, someTable, filters, []string{"somecol"},
318+
// ctx, someSchema, someTable, filters, []string{"somecol"},
319319
// func(selectors selectors) (RowRepoIter, error) {
320320
// // return an iter based on the selectors
321321
// },
322322
// )
323323
func rowIterWithSelectors(
324-
session sql.Session,
324+
ctx *sql.Context,
325325
schema sql.Schema,
326326
tableName string,
327327
filters []sql.Expression,
@@ -338,12 +338,12 @@ func rowIterWithSelectors(
338338
return nil, err
339339
}
340340

341-
s, ok := session.(*Session)
341+
_, ok := ctx.Session.(*Session)
342342
if !ok {
343-
return nil, ErrInvalidGitQuerySession.New(session)
343+
return nil, ErrInvalidGitQuerySession.New(ctx.Session)
344344
}
345345

346-
iter, err := NewRowRepoIter(s, rowRepoIter)
346+
iter, err := NewRowRepoIter(ctx, rowRepoIter)
347347
if err != nil {
348348
return nil, err
349349
}
@@ -352,7 +352,7 @@ func rowIterWithSelectors(
352352
return iter, nil
353353
}
354354

355-
return plan.NewFilterIter(session, expression.JoinAnd(filters...), iter), nil
355+
return plan.NewFilterIter(ctx, expression.JoinAnd(filters...), iter), nil
356356
}
357357

358358
func stringContains(slice []string, target string) bool {

integration_test.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,11 @@ func TestIntegration(t *testing.T) {
135135
for _, tt := range testCases {
136136
t.Run(tt.query, func(t *testing.T) {
137137
require := require.New(t)
138-
session := gitquery.NewSession(context.TODO(), &pool)
139-
_, iter, err := engine.Query(session, tt.query)
138+
139+
session := gitquery.NewSession(&pool)
140+
ctx := sql.NewContext(context.TODO(), session)
141+
142+
_, iter, err := engine.Query(ctx, tt.query)
140143
require.NoError(err)
141144
rows, err := sql.RowIterToRows(iter)
142145
require.NoError(err)

internal/function/commit_has_blob.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ func (CommitHasBlob) Type() sql.Type {
3030
}
3131

3232
// Eval implements the Expression interface.
33-
func (f *CommitHasBlob) Eval(session sql.Session, row sql.Row) (interface{}, error) {
34-
s, ok := session.(*gitquery.Session)
33+
func (f *CommitHasBlob) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
34+
s, ok := ctx.Session.(*gitquery.Session)
3535
if !ok {
36-
return nil, gitquery.ErrInvalidGitQuerySession.New(session)
36+
return nil, gitquery.ErrInvalidGitQuerySession.New(ctx.Session)
3737
}
3838

39-
commitHash, err := f.commitHash.Eval(s, row)
39+
commitHash, err := f.commitHash.Eval(ctx, row)
4040
if err != nil {
4141
return nil, err
4242
}
@@ -50,7 +50,7 @@ func (f *CommitHasBlob) Eval(session sql.Session, row sql.Row) (interface{}, err
5050
return nil, err
5151
}
5252

53-
blob, err := f.blob.Eval(s, row)
53+
blob, err := f.blob.Eval(ctx, row)
5454
if err != nil {
5555
return nil, err
5656
}
@@ -163,3 +163,11 @@ func (f CommitHasBlob) TransformUp(fn sql.TransformExprFunc) (sql.Expression, er
163163
func (f CommitHasBlob) String() string {
164164
return fmt.Sprintf("commit_has_blob(%s, %s)", f.commitHash, f.blob)
165165
}
166+
167+
// Children implements the Expression interface.
168+
func (f CommitHasBlob) Children() []sql.Expression {
169+
return []sql.Expression{
170+
f.commitHash,
171+
f.blob,
172+
}
173+
}

internal/function/commit_has_blob_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ func TestCommitHasBlob(t *testing.T) {
2727
pool.AddGit(f.Worktree().Root())
2828
}
2929

30-
session := gitquery.NewSession(context.TODO(), &pool)
30+
session := gitquery.NewSession(&pool)
31+
ctx := sql.NewContext(context.TODO(), session)
3132

3233
testCases := []struct {
3334
name string
@@ -44,7 +45,7 @@ func TestCommitHasBlob(t *testing.T) {
4445
for _, tt := range testCases {
4546
t.Run(tt.name, func(t *testing.T) {
4647
require := require.New(t)
47-
val, err := f.Eval(session, tt.row)
48+
val, err := f.Eval(ctx, tt.row)
4849
if tt.err {
4950
require.Error(err)
5051
} else {

internal/function/commit_has_tree.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ func (f CommitHasTree) String() string {
3636
func (CommitHasTree) Type() sql.Type { return sql.Boolean }
3737

3838
// Eval implements the Expression interface.
39-
func (f *CommitHasTree) Eval(s sql.Session, row sql.Row) (interface{}, error) {
40-
session, ok := s.(*gitquery.Session)
39+
func (f *CommitHasTree) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
40+
s, ok := ctx.Session.(*gitquery.Session)
4141
if !ok {
42-
return nil, gitquery.ErrInvalidGitQuerySession.New(s)
42+
return nil, gitquery.ErrInvalidGitQuerySession.New(ctx.Session)
4343
}
4444

45-
left, err := f.Left.Eval(s, row)
45+
left, err := f.Left.Eval(ctx, row)
4646
if err != nil {
4747
return nil, err
4848
}
@@ -56,7 +56,7 @@ func (f *CommitHasTree) Eval(s sql.Session, row sql.Row) (interface{}, error) {
5656
return nil, err
5757
}
5858

59-
right, err := f.Right.Eval(s, row)
59+
right, err := f.Right.Eval(ctx, row)
6060
if err != nil {
6161
return nil, err
6262
}
@@ -73,7 +73,7 @@ func (f *CommitHasTree) Eval(s sql.Session, row sql.Row) (interface{}, error) {
7373
commitHash := plumbing.NewHash(left.(string))
7474
treeHash := plumbing.NewHash(right.(string))
7575

76-
iter, err := session.Pool.RepoIter()
76+
iter, err := s.Pool.RepoIter()
7777
if err != nil {
7878
return nil, err
7979
}

internal/function/commit_has_tree_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ func TestCommitHasTree(t *testing.T) {
2727
pool.AddGit(f.Worktree().Root())
2828
}
2929

30-
session := gitquery.NewSession(context.TODO(), &pool)
30+
session := gitquery.NewSession(&pool)
31+
ctx := sql.NewContext(context.TODO(), session)
3132

3233
testCases := []struct {
3334
name string
@@ -45,7 +46,7 @@ func TestCommitHasTree(t *testing.T) {
4546
for _, tt := range testCases {
4647
t.Run(tt.name, func(t *testing.T) {
4748
require := require.New(t)
48-
val, err := f.Eval(session, tt.row)
49+
val, err := f.Eval(ctx, tt.row)
4950
if tt.err {
5051
require.Error(err)
5152
} else {

0 commit comments

Comments
 (0)