Skip to content

Commit 5c2e73d

Browse files
committed
*: make tables use the new partitionable interfaces
Signed-off-by: Miguel Molina <[email protected]>
1 parent 3e719f6 commit 5c2e73d

40 files changed

+2563
-2965
lines changed

blobs.go

Lines changed: 221 additions & 227 deletions
Large diffs are not rendered by default.

blobs_test.go

Lines changed: 12 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -8,33 +8,14 @@ import (
88
"gopkg.in/src-d/go-mysql-server.v0/sql/expression"
99
)
1010

11-
func TestBlobsTable_Name(t *testing.T) {
12-
require := require.New(t)
13-
14-
table := getTable(require, BlobsTableName)
15-
require.Equal(BlobsTableName, table.Name())
16-
17-
// Check that each column source is the same as table name
18-
for _, c := range table.Schema() {
19-
require.Equal(BlobsTableName, c.Source)
20-
}
21-
}
22-
23-
func TestBlobsTable_Children(t *testing.T) {
24-
require := require.New(t)
25-
26-
table := getTable(require, BlobsTableName)
27-
require.Equal(0, len(table.Children()))
28-
}
29-
30-
func TestBlobsTable_RowIter(t *testing.T) {
11+
func TestBlobsTable(t *testing.T) {
3112
require := require.New(t)
3213
ctx, _, cleanup := setup(t)
3314
defer cleanup()
3415

3516
table := getTable(require, BlobsTableName)
3617

37-
rows, err := sql.NodeToRows(ctx, table)
18+
rows, err := tableToRows(ctx, table)
3819
require.NoError(err)
3920
require.Len(rows, 10)
4021

@@ -56,11 +37,8 @@ func TestBlobsLimit(t *testing.T) {
5637
blobsMaxSize = prev
5738
}()
5839

59-
table := newBlobsTable()
60-
iter, err := table.RowIter(session)
61-
require.NoError(err)
62-
63-
rows, err := sql.RowIterToRows(iter)
40+
table := newBlobsTable().WithProjection([]string{"blob_content"})
41+
rows, err := tableToRows(session, table)
6442
require.NoError(err)
6543

6644
expected := []struct {
@@ -91,47 +69,34 @@ func TestBlobsLimit(t *testing.T) {
9169

9270
func TestBlobsPushdown(t *testing.T) {
9371
require := require.New(t)
94-
session, _, cleanup := setup(t)
72+
ctx, _, cleanup := setup(t)
9573
defer cleanup()
9674

97-
table := newBlobsTable().(sql.PushdownProjectionAndFiltersTable)
98-
99-
iter, err := table.WithProjectAndFilters(session, nil, nil)
100-
require.NoError(err)
75+
table := newBlobsTable()
10176

102-
rows, err := sql.RowIterToRows(iter)
77+
rows, err := tableToRows(ctx, table)
10378
require.NoError(err)
10479
require.Len(rows, 10)
10580

106-
iter, err = table.WithProjectAndFilters(session, nil, []sql.Expression{
81+
t2 := table.WithFilters([]sql.Expression{
10782
expression.NewEquals(
10883
expression.NewGetFieldWithTable(1, sql.Text, BlobsTableName, "blob_hash", false),
10984
expression.NewLiteral("32858aad3c383ed1ff0a0f9bdf231d54a00c9e88", sql.Text),
11085
),
11186
})
112-
require.NoError(err)
11387

114-
rows, err = sql.RowIterToRows(iter)
88+
rows, err = tableToRows(ctx, t2)
11589
require.NoError(err)
11690
require.Len(rows, 1)
11791

118-
iter, err = table.WithProjectAndFilters(session, nil, []sql.Expression{
119-
expression.NewLessThan(
120-
expression.NewGetFieldWithTable(2, sql.Int64, BlobsTableName, "blob_size", false),
121-
expression.NewLiteral(int64(10), sql.Int64),
122-
),
123-
})
124-
require.NoError(err)
125-
126-
iter, err = table.WithProjectAndFilters(session, nil, []sql.Expression{
92+
t3 := table.WithFilters([]sql.Expression{
12793
expression.NewEquals(
12894
expression.NewGetFieldWithTable(1, sql.Text, BlobsTableName, "blob_hash", false),
12995
expression.NewLiteral("not exists", sql.Text),
13096
),
13197
})
132-
require.NoError(err)
13398

134-
rows, err = sql.RowIterToRows(iter)
99+
rows, err = tableToRows(ctx, t3)
135100
require.NoError(err)
136101
require.Len(rows, 0)
137102
}
@@ -142,7 +107,7 @@ func TestBlobsIndexKeyValueIter(t *testing.T) {
142107
defer cleanup()
143108

144109
table := new(blobsTable)
145-
iter, err := table.IndexKeyValueIter(ctx, []string{"blob_hash", "blob_size"})
110+
iter, err := table.IndexKeyValues(ctx, []string{"blob_hash", "blob_size"})
146111
require.NoError(err)
147112

148113
var expected = []keyValue{

cmd/gitbase/command/server.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ type Server struct {
5151
DisableSquash bool `long:"no-squash" description:"Disables the table squashing."`
5252
TraceEnabled bool `long:"trace" env:"GITBASE_TRACE" description:"Enables jaeger tracing"`
5353
ReadOnly bool `short:"r" long:"readonly" description:"Only allow read queries. This disables creating and deleting indexes as well." env:"GITBASE_READONLY"`
54+
Parallelism uint `long:"parallelism" default:"4" description:"Maximum number of parallel threads per table."`
5455

5556
SkipGitErrors bool // SkipGitErrors disables failing when Git errors are found.
5657
DisableGit bool `long:"no-git" description:"disable the load of git standard repositories."`
@@ -73,6 +74,11 @@ func NewDatabaseEngine(readonly bool, version string) *sqle.Engine {
7374
if readonly {
7475
ab = ab.ReadOnly()
7576
}
77+
78+
if c.Parallelism > 1 {
79+
ab = ab.WithParallelism(int(c.Parallelism))
80+
}
81+
7682
a := ab.Build()
7783
engine := sqle.New(catalog, a, &sqle.Config{
7884
VersionPostfix: version,

0 commit comments

Comments
 (0)