Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion go/libraries/doltcore/doltdb/table.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ func IsValidIdentifier(name string) bool {
// Table is a struct which holds row data, as well as a reference to its schema.
type Table struct {
table durable.Table
tableData durable.Index
overriddenSchema schema.Schema
}

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

// GetRowData retrieves the underlying map which is a map from a primary key to a list of field values.
func (t *Table) GetRowData(ctx context.Context) (durable.Index, error) {
return t.table.GetTableRows(ctx)
if t.tableData == nil {
var err error
t.tableData, err = t.table.GetTableRows(ctx)
if err != nil {
return nil, err
}
}
return t.tableData, nil
}

func (t *Table) GetRowDataWithDescriptors(ctx context.Context, kd, vd val.TupleDesc) (durable.Index, error) {
Expand Down
27 changes: 16 additions & 11 deletions go/libraries/doltcore/sqle/tables.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@ var _ dtables.VersionableTable = (*DoltTable)(nil)
type DoltTable struct {
db dsess.SqlDatabase
lockedToRoot doltdb.RootValue
cachedRoot doltdb.RootValue
cachedTable *doltdb.Table

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

table, ok, err := root.GetTable(ctx, t.TableName())
if err != nil {
return nil, err
}
if !ok {
return nil, sql.ErrTableNotFound.New(t.tableName)
}

if t.overriddenSchema != nil {
table.OverrideSchema(t.overriddenSchema)
if root != t.cachedRoot {
table, ok, err := root.GetTable(ctx, t.TableName())
if err != nil {
return nil, err
}
if !ok {
return nil, sql.ErrTableNotFound.New(t.tableName)
}
if t.overriddenSchema != nil {
table.OverrideSchema(t.overriddenSchema)
}
t.cachedRoot = root
t.cachedTable = table
}

return table, nil
return t.cachedTable, nil
}

// DataCacheKey returns an opaque key that can be compared for equality to see if this
Expand Down
23 changes: 12 additions & 11 deletions go/performance/microsysbench/sysbench_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import (
"sync"
"testing"

"github.com/dolthub/go-mysql-server/server"
"github.com/dolthub/go-mysql-server/sql"
"github.com/stretchr/testify/require"

Expand Down Expand Up @@ -124,21 +123,23 @@ func benchmarkSysbenchQuery(b *testing.B, getQuery func(int) string) {
})
ctx, eng := setupBenchmark(b, dEnv)
for i := 0; i < b.N; i++ {
schema, iter, _, err := eng.Query(ctx, getQuery(i))
_, iter, _, err := eng.Query(ctx, getQuery(i))
require.NoError(b, err)
i := 0
buf := sql.NewByteBuffer(16000)
//schema, iter, _, err := eng.Query(ctx, getQuery(i))
//i := 0
//buf := sql.NewByteBuffer(16000)
for {
i++
row, err := iter.Next(ctx)
//i++
//row, err := iter.Next(ctx)
_, err = iter.Next(ctx)
if err != nil {
break
}
outputRow, err := server.RowToSQL(ctx, schema, row, nil, buf)
_ = outputRow
if i%128 == 0 {
buf.Reset()
}
//outputRow, err := server.RowToSQL(ctx, schema, row, nil, buf)
//_ = outputRow
//if i%128 == 0 {
// buf.Reset()
//}
}
require.Error(b, io.EOF)
err = iter.Close(ctx)
Expand Down
Loading