Skip to content

Commit bb703b6

Browse files
author
James Cor
committed
test caching
1 parent ee9c82c commit bb703b6

File tree

3 files changed

+37
-23
lines changed

3 files changed

+37
-23
lines changed

go/libraries/doltcore/doltdb/table.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ func IsValidIdentifier(name string) bool {
5757
// Table is a struct which holds row data, as well as a reference to its schema.
5858
type Table struct {
5959
table durable.Table
60+
tableData durable.Index
6061
overriddenSchema schema.Schema
6162
}
6263

@@ -442,7 +443,14 @@ func (t *Table) GetNomsRowData(ctx context.Context) (types.Map, error) {
442443

443444
// GetRowData retrieves the underlying map which is a map from a primary key to a list of field values.
444445
func (t *Table) GetRowData(ctx context.Context) (durable.Index, error) {
445-
return t.table.GetTableRows(ctx)
446+
if t.tableData == nil {
447+
var err error
448+
t.tableData, err = t.table.GetTableRows(ctx)
449+
if err != nil {
450+
return nil, err
451+
}
452+
}
453+
return t.tableData, nil
446454
}
447455

448456
func (t *Table) GetRowDataWithDescriptors(ctx context.Context, kd, vd val.TupleDesc) (durable.Index, error) {

go/libraries/doltcore/sqle/tables.go

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ var _ dtables.VersionableTable = (*DoltTable)(nil)
8585
type DoltTable struct {
8686
db dsess.SqlDatabase
8787
lockedToRoot doltdb.RootValue
88+
cachedRoot doltdb.RootValue
89+
cachedTable *doltdb.Table
8890

8991
// overriddenSchema is set when the @@dolt_override_schema system var is in use
9092
overriddenSchema schema.Schema
@@ -315,19 +317,22 @@ func (t *DoltTable) DoltTable(ctx *sql.Context) (*doltdb.Table, error) {
315317
return nil, err
316318
}
317319

318-
table, ok, err := root.GetTable(ctx, t.TableName())
319-
if err != nil {
320-
return nil, err
321-
}
322-
if !ok {
323-
return nil, sql.ErrTableNotFound.New(t.tableName)
324-
}
325-
326-
if t.overriddenSchema != nil {
327-
table.OverrideSchema(t.overriddenSchema)
320+
if root != t.cachedRoot {
321+
table, ok, err := root.GetTable(ctx, t.TableName())
322+
if err != nil {
323+
return nil, err
324+
}
325+
if !ok {
326+
return nil, sql.ErrTableNotFound.New(t.tableName)
327+
}
328+
if t.overriddenSchema != nil {
329+
table.OverrideSchema(t.overriddenSchema)
330+
}
331+
t.cachedRoot = root
332+
t.cachedTable = table
328333
}
329334

330-
return table, nil
335+
return t.cachedTable, nil
331336
}
332337

333338
// DataCacheKey returns an opaque key that can be compared for equality to see if this

go/performance/microsysbench/sysbench_test.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"sync"
2626
"testing"
2727

28-
"github.com/dolthub/go-mysql-server/server"
2928
"github.com/dolthub/go-mysql-server/sql"
3029
"github.com/stretchr/testify/require"
3130

@@ -124,21 +123,23 @@ func benchmarkSysbenchQuery(b *testing.B, getQuery func(int) string) {
124123
})
125124
ctx, eng := setupBenchmark(b, dEnv)
126125
for i := 0; i < b.N; i++ {
127-
schema, iter, _, err := eng.Query(ctx, getQuery(i))
126+
_, iter, _, err := eng.Query(ctx, getQuery(i))
128127
require.NoError(b, err)
129-
i := 0
130-
buf := sql.NewByteBuffer(16000)
128+
//schema, iter, _, err := eng.Query(ctx, getQuery(i))
129+
//i := 0
130+
//buf := sql.NewByteBuffer(16000)
131131
for {
132-
i++
133-
row, err := iter.Next(ctx)
132+
//i++
133+
//row, err := iter.Next(ctx)
134+
_, err = iter.Next(ctx)
134135
if err != nil {
135136
break
136137
}
137-
outputRow, err := server.RowToSQL(ctx, schema, row, nil, buf)
138-
_ = outputRow
139-
if i%128 == 0 {
140-
buf.Reset()
141-
}
138+
//outputRow, err := server.RowToSQL(ctx, schema, row, nil, buf)
139+
//_ = outputRow
140+
//if i%128 == 0 {
141+
// buf.Reset()
142+
//}
142143
}
143144
require.Error(b, io.EOF)
144145
err = iter.Close(ctx)

0 commit comments

Comments
 (0)