Skip to content

Commit ed485b4

Browse files
committed
Use session to pass the pool to row iterators
Signed-off-by: Javi Fontan <[email protected]>
1 parent 0584509 commit ed485b4

20 files changed

+126
-154
lines changed

blobs.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@ var (
2525
blobsMaxSize = getIntEnv(blobsMaxSizeKey, 5) * mib
2626
)
2727

28-
type blobsTable struct {
29-
pool *RepositoryPool
30-
}
28+
type blobsTable struct{}
3129

3230
var blobsSchema = sql.Schema{
3331
{Name: "hash", Type: sql.Text, Nullable: false, Source: blobsTableName},
@@ -37,8 +35,8 @@ var blobsSchema = sql.Schema{
3735

3836
var _ sql.PushdownProjectionAndFiltersTable = (*blobsTable)(nil)
3937

40-
func newBlobsTable(pool *RepositoryPool) sql.Table {
41-
return &blobsTable{pool: pool}
38+
func newBlobsTable() sql.Table {
39+
return new(blobsTable)
4240
}
4341

4442
func (blobsTable) String() string {
@@ -65,10 +63,10 @@ func (r *blobsTable) TransformExpressionsUp(f sql.TransformExprFunc) (sql.Node,
6563
return r, nil
6664
}
6765

68-
func (r blobsTable) RowIter(_ sql.Session) (sql.RowIter, error) {
66+
func (r blobsTable) RowIter(session sql.Session) (sql.RowIter, error) {
6967
iter := new(blobIter)
7068

71-
repoIter, err := NewRowRepoIter(r.pool, iter)
69+
repoIter, err := NewRowRepoIter(session, iter)
7270
if err != nil {
7371
return nil, err
7472
}
@@ -89,7 +87,7 @@ func (r *blobsTable) WithProjectAndFilters(
8987
_, filters []sql.Expression,
9088
) (sql.RowIter, error) {
9189
return rowIterWithSelectors(
92-
session, r.pool, blobsSchema, blobsTableName, filters,
90+
session, blobsSchema, blobsTableName, filters,
9391
[]string{"hash"},
9492
func(selectors selectors) (RowRepoIter, error) {
9593
if len(selectors["hash"]) == 0 {

blobs_test.go

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
11
package gitquery
22

33
import (
4-
"context"
54
"testing"
65

76
"github.com/stretchr/testify/require"
87
"gopkg.in/src-d/go-mysql-server.v0/sql"
98
"gopkg.in/src-d/go-mysql-server.v0/sql/expression"
10-
11-
"gopkg.in/src-d/go-git-fixtures.v3"
129
)
1310

1411
func TestBlobsTable_Name(t *testing.T) {
1512
require := require.New(t)
1613

17-
f := fixtures.ByTag("worktree").One()
18-
table := getTable(require, f, blobsTableName)
14+
table := getTable(require, blobsTableName)
1915
require.Equal(blobsTableName, table.Name())
2016

2117
// Check that each column source is the same as table name
@@ -27,18 +23,18 @@ func TestBlobsTable_Name(t *testing.T) {
2723
func TestBlobsTable_Children(t *testing.T) {
2824
require := require.New(t)
2925

30-
f := fixtures.ByTag("worktree").One()
31-
table := getTable(require, f, blobsTableName)
26+
table := getTable(require, blobsTableName)
3227
require.Equal(0, len(table.Children()))
3328
}
3429

3530
func TestBlobsTable_RowIter(t *testing.T) {
3631
require := require.New(t)
32+
session, _, cleanup := setup(t)
33+
defer cleanup()
3734

38-
f := fixtures.ByTag("worktree").One()
39-
table := getTable(require, f, blobsTableName)
35+
table := getTable(require, blobsTableName)
4036

41-
rows, err := sql.NodeToRows(sql.NewBaseSession(context.TODO()), table)
37+
rows, err := sql.NodeToRows(session, table)
4238
require.NoError(err)
4339
require.Len(rows, 10)
4440

@@ -60,7 +56,7 @@ func TestBlobsLimit(t *testing.T) {
6056
blobsMaxSize = prev
6157
}()
6258

63-
table := newBlobsTable(session.Pool)
59+
table := newBlobsTable()
6460
iter, err := table.RowIter(session)
6561
require.NoError(err)
6662

@@ -98,7 +94,7 @@ func TestBlobsPushdown(t *testing.T) {
9894
session, _, cleanup := setup(t)
9995
defer cleanup()
10096

101-
table := newBlobsTable(session.Pool).(sql.PushdownProjectionAndFiltersTable)
97+
table := newBlobsTable().(sql.PushdownProjectionAndFiltersTable)
10298

10399
iter, err := table.WithProjectAndFilters(session, nil, nil)
104100
require.NoError(err)

cmd/gitquery/server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func (c *CmdServer) buildDatabase() error {
4242
return err
4343
}
4444

45-
c.engine.AddDatabase(gitquery.NewDatabase(c.name, c.pool))
45+
c.engine.AddDatabase(gitquery.NewDatabase(c.name))
4646
c.engine.Catalog.RegisterFunctions(function.Functions)
4747
return nil
4848
}

commits.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
)
1111

1212
type commitsTable struct {
13-
pool *RepositoryPool
1413
}
1514

1615
var commitsSchema = sql.Schema{
@@ -27,8 +26,8 @@ var commitsSchema = sql.Schema{
2726

2827
var _ sql.PushdownProjectionAndFiltersTable = (*commitsTable)(nil)
2928

30-
func newCommitsTable(pool *RepositoryPool) sql.Table {
31-
return &commitsTable{pool: pool}
29+
func newCommitsTable() sql.Table {
30+
return new(commitsTable)
3231
}
3332

3433
func (commitsTable) String() string {
@@ -55,10 +54,10 @@ func (r *commitsTable) TransformExpressionsUp(f sql.TransformExprFunc) (sql.Node
5554
return r, nil
5655
}
5756

58-
func (r commitsTable) RowIter(_ sql.Session) (sql.RowIter, error) {
57+
func (r commitsTable) RowIter(session sql.Session) (sql.RowIter, error) {
5958
iter := new(commitIter)
6059

61-
repoIter, err := NewRowRepoIter(r.pool, iter)
60+
repoIter, err := NewRowRepoIter(session, iter)
6261
if err != nil {
6362
return nil, err
6463
}
@@ -79,7 +78,7 @@ func (r *commitsTable) WithProjectAndFilters(
7978
_, filters []sql.Expression,
8079
) (sql.RowIter, error) {
8180
return rowIterWithSelectors(
82-
session, r.pool, commitsSchema, commitsTableName, filters,
81+
session, commitsSchema, commitsTableName, filters,
8382
[]string{"hash"},
8483
func(selectors selectors) (RowRepoIter, error) {
8584
if len(selectors["hash"]) == 0 {

commits_test.go

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
11
package gitquery
22

33
import (
4-
"context"
54
"testing"
65

76
"github.com/stretchr/testify/require"
87
"gopkg.in/src-d/go-mysql-server.v0/sql"
98
"gopkg.in/src-d/go-mysql-server.v0/sql/expression"
10-
11-
"gopkg.in/src-d/go-git-fixtures.v3"
129
)
1310

1411
func TestCommitsTable_Name(t *testing.T) {
1512
require := require.New(t)
1613

17-
f := fixtures.ByTag("worktree").One()
18-
table := getTable(require, f, commitsTableName)
14+
table := getTable(require, commitsTableName)
1915
require.Equal(commitsTableName, table.Name())
2016

2117
// Check that each column source is the same as table name
@@ -27,18 +23,18 @@ func TestCommitsTable_Name(t *testing.T) {
2723
func TestCommitsTable_Children(t *testing.T) {
2824
require := require.New(t)
2925

30-
f := fixtures.ByTag("worktree").One()
31-
table := getTable(require, f, commitsTableName)
26+
table := getTable(require, commitsTableName)
3227
require.Equal(0, len(table.Children()))
3328
}
3429

3530
func TestCommitsTable_RowIter(t *testing.T) {
3631
require := require.New(t)
32+
session, _, cleanup := setup(t)
33+
defer cleanup()
3734

38-
f := fixtures.ByTag("worktree").One()
39-
table := getTable(require, f, commitsTableName)
35+
table := getTable(require, commitsTableName)
4036

41-
rows, err := sql.NodeToRows(sql.NewBaseSession(context.TODO()), table)
37+
rows, err := sql.NodeToRows(session, table)
4238
require.Nil(err)
4339
require.Len(rows, 9)
4440

@@ -54,7 +50,7 @@ func TestCommitsPushdown(t *testing.T) {
5450
session, _, cleanup := setup(t)
5551
defer cleanup()
5652

57-
table := newCommitsTable(session.Pool).(sql.PushdownProjectionAndFiltersTable)
53+
table := newCommitsTable().(sql.PushdownProjectionAndFiltersTable)
5854

5955
iter, err := table.WithProjectAndFilters(session, nil, nil)
6056
require.NoError(err)

common_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func setup(t *testing.T) (sess *Session, path string, cleanup CleanupFunc) {
2222
pool.AddGit(path)
2323

2424
engine := sqle.New()
25-
engine.AddDatabase(NewDatabase("db", &pool))
25+
engine.AddDatabase(NewDatabase("db"))
2626

2727
cleanup = func() {
2828
t.Helper()

database.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ type Database struct {
2727

2828
// NewDatabase creates a new Database structure and initializes its
2929
// tables with the given pool
30-
func NewDatabase(name string, pool *RepositoryPool) sql.Database {
30+
func NewDatabase(name string) sql.Database {
3131
return &Database{
3232
name: name,
33-
commits: newCommitsTable(pool),
34-
references: newReferencesTable(pool),
35-
blobs: newBlobsTable(pool),
36-
treeEntries: newTreeEntriesTable(pool),
37-
repositories: newRepositoriesTable(pool),
38-
remotes: newRemotesTable(pool),
33+
commits: newCommitsTable(),
34+
references: newReferencesTable(),
35+
blobs: newBlobsTable(),
36+
treeEntries: newTreeEntriesTable(),
37+
repositories: newRepositoriesTable(),
38+
remotes: newRemotesTable(),
3939
}
4040
}
4141

database_test.go

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ const (
2121
func TestDatabase_Tables(t *testing.T) {
2222
require := require.New(t)
2323

24-
f := fixtures.ByTag("worktree").One()
25-
db := getDB(require, f, testDBName)
24+
db := getDB(require, testDBName)
2625

2726
tables := db.Tables()
2827
var tableNames []string
@@ -47,32 +46,19 @@ func TestDatabase_Tables(t *testing.T) {
4746
func TestDatabase_Name(t *testing.T) {
4847
require := require.New(t)
4948

50-
f := fixtures.ByTag("worktree").One()
51-
db := getDB(require, f, testDBName)
49+
db := getDB(require, testDBName)
5250
require.Equal(testDBName, db.Name())
5351
}
5452

55-
func getDB(
56-
require *require.Assertions,
57-
fixture *fixtures.Fixture,
58-
name string,
59-
) sql.Database {
60-
61-
fixtures.Init()
62-
63-
pool := NewRepositoryPool()
64-
pool.Add("repo", fixture.Worktree().Root())
65-
66-
db := NewDatabase(name, &pool)
53+
func getDB(require *require.Assertions, name string) sql.Database {
54+
db := NewDatabase(name)
6755
require.NotNil(db)
6856

6957
return db
7058
}
7159

72-
func getTable(require *require.Assertions, fixture *fixtures.Fixture,
73-
name string) sql.Table {
74-
75-
db := getDB(require, fixture, "foo")
60+
func getTable(require *require.Assertions, name string) sql.Table {
61+
db := getDB(require, "foo")
7662
require.NotNil(db)
7763
require.Equal(db.Name(), "foo")
7864

filters.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,6 @@ func unfoldOrs(or *expression.Or) []sql.Expression {
322322
// )
323323
func rowIterWithSelectors(
324324
session sql.Session,
325-
pool *RepositoryPool,
326325
schema sql.Schema,
327326
tableName string,
328327
filters []sql.Expression,
@@ -339,7 +338,12 @@ func rowIterWithSelectors(
339338
return nil, err
340339
}
341340

342-
iter, err := NewRowRepoIter(pool, rowRepoIter)
341+
s, ok := session.(*Session)
342+
if !ok {
343+
return nil, ErrInvalidGitQuerySession.New(session)
344+
}
345+
346+
iter, err := NewRowRepoIter(s, rowRepoIter)
343347
if err != nil {
344348
return nil, err
345349
}

integration_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func TestIntegration(t *testing.T) {
2525
_, err := pool.AddGit(path)
2626
require.NoError(t, err)
2727

28-
engine.AddDatabase(gitquery.NewDatabase("foo", &pool))
28+
engine.AddDatabase(gitquery.NewDatabase("foo"))
2929
engine.Catalog.RegisterFunctions(function.Functions)
3030

3131
testCases := []struct {

0 commit comments

Comments
 (0)