Skip to content

Commit 6513ca1

Browse files
authored
Merge pull request #177 from jfontan/fix/cancel-queries
Use session and support query cancelation
2 parents 0584509 + 75e9a62 commit 6513ca1

File tree

127 files changed

+1590
-782
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

127 files changed

+1590
-782
lines changed

Gopkg.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Gopkg.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[[constraint]]
22
name = "gopkg.in/src-d/go-mysql-server.v0"
3-
revision = "6a563e1a2bcdd038830ed6039fb770025fb325c8"
3+
revision = "d48a5ee361f27bb4ad3e135b7435e02e8e5baaa2"
44

55
[[constraint]]
66
name = "github.com/jessevdk/go-flags"

blobs.go

Lines changed: 7 additions & 9 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(ctx *sql.Context) (sql.RowIter, error) {
6967
iter := new(blobIter)
7068

71-
repoIter, err := NewRowRepoIter(r.pool, iter)
69+
repoIter, err := NewRowRepoIter(ctx, iter)
7270
if err != nil {
7371
return nil, err
7472
}
@@ -85,11 +83,11 @@ func (blobsTable) HandledFilters(filters []sql.Expression) []sql.Expression {
8583
}
8684

8785
func (r *blobsTable) WithProjectAndFilters(
88-
session sql.Session,
86+
ctx *sql.Context,
8987
_, filters []sql.Expression,
9088
) (sql.RowIter, error) {
9189
return rowIterWithSelectors(
92-
session, r.pool, blobsSchema, blobsTableName, filters,
90+
ctx, 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+
ctx, _, 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(ctx, 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: 6 additions & 7 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(ctx *sql.Context) (sql.RowIter, error) {
5958
iter := new(commitIter)
6059

61-
repoIter, err := NewRowRepoIter(r.pool, iter)
60+
repoIter, err := NewRowRepoIter(ctx, iter)
6261
if err != nil {
6362
return nil, err
6463
}
@@ -75,11 +74,11 @@ func (commitsTable) HandledFilters(filters []sql.Expression) []sql.Expression {
7574
}
7675

7776
func (r *commitsTable) WithProjectAndFilters(
78-
session sql.Session,
77+
ctx *sql.Context,
7978
_, filters []sql.Expression,
8079
) (sql.RowIter, error) {
8180
return rowIterWithSelectors(
82-
session, r.pool, commitsSchema, commitsTableName, filters,
81+
ctx, 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: 7 additions & 3 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

@@ -22,12 +23,15 @@ func setup(t *testing.T) (sess *Session, path string, cleanup CleanupFunc) {
2223
pool.AddGit(path)
2324

2425
engine := sqle.New()
25-
engine.AddDatabase(NewDatabase("db", &pool))
26+
engine.AddDatabase(NewDatabase("db"))
2627

2728
cleanup = func() {
2829
t.Helper()
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
}

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

0 commit comments

Comments
 (0)