Added filesys to DB provider, CREATE DATABASE now fully working

This commit is contained in:
Zach Musgrave
2021-11-02 11:19:25 -07:00
parent 92f175a37a
commit 9322c5a607
9 changed files with 13 additions and 12 deletions

View File

@@ -252,7 +252,7 @@ func rebaseSqlEngine(ctx context.Context, dEnv *env.DoltEnv, cm *doltdb.Commit)
opts := editor.Options{Deaf: dEnv.DbEaFactory()}
db := dsqle.NewDatabase(dbName, dEnv.DbData(), opts)
pro := dsqle.NewDoltDatabaseProvider(dEnv.Config, db)
pro := dsqle.NewDoltDatabaseProvider(dEnv.Config, dEnv.FS, db)
if err != nil {
return nil, nil, err
}

View File

@@ -1482,7 +1482,7 @@ func newSqlEngine(
infoDB := information_schema.NewInformationSchemaDatabase()
all := append(dsqleDBsAsSqlDBs(dbs), infoDB)
pro := dsqle.NewDoltDatabaseProvider(dEnv.Config, all...)
pro := dsqle.NewDoltDatabaseProvider(dEnv.Config, dEnv.FS, all...)
engine := sqle.New(analyzer.NewBuilder(pro).WithParallelism(parallelism).Build(), &sqle.Config{Auth: au})

View File

@@ -116,7 +116,7 @@ func Serve(ctx context.Context, version string, serverConfig ServerConfig, serve
return err, nil
}
all := append(dsqleDBsAsSqlDBs(dbs), information_schema.NewInformationSchemaDatabase())
pro := dsqle.NewDoltDatabaseProvider(dEnv.Config, all...)
pro := dsqle.NewDoltDatabaseProvider(dEnv.Config, dEnv.FS, all...)
a := analyzer.NewBuilder(pro).WithParallelism(serverConfig.QueryParallelism()).Build()
sqlEngine := sqle.New(a, nil)

View File

@@ -55,7 +55,7 @@ var _ dsess.RevisionDatabaseProvider = DoltDatabaseProvider{}
const createDbWC = 1105 // 1105 represents an unknown error.
// NewDoltDatabaseProvider returns a provider for the databases given
func NewDoltDatabaseProvider(config config.ReadableConfig, databases ...sql.Database) DoltDatabaseProvider {
func NewDoltDatabaseProvider(config config.ReadableConfig, fs filesys.Filesys, databases ...sql.Database) DoltDatabaseProvider {
dbs := make(map[string]sql.Database, len(databases))
for _, db := range databases {
dbs[strings.ToLower(db.Name())] = db
@@ -70,6 +70,7 @@ func NewDoltDatabaseProvider(config config.ReadableConfig, databases ...sql.Data
databases: dbs,
functions: funcs,
mu: &sync.RWMutex{},
fs: fs,
cfg: config,
}
}
@@ -154,7 +155,8 @@ func (p DoltDatabaseProvider) CreateDatabase(ctx *sql.Context, name string) erro
// TODO: unbreak this
newEnv := env.Load(ctx, env.GetCurrentUserHomeDir, newFs, doltdb.LocalDirDoltDB, "TODO")
err = newEnv.InitRepo(ctx, types.Format_Default, "test", "test@test.com", "main")
dsess := dsess.DSessFromSess(ctx.Session)
err = newEnv.InitRepo(ctx, types.Format_Default, dsess.Username(), dsess.Email(), "main")
if err != nil {
return err
}
@@ -173,7 +175,6 @@ func (p DoltDatabaseProvider) CreateDatabase(ctx *sql.Context, name string) erro
db := NewDatabase(name, newEnv.DbData(), opts)
p.databases[strings.ToLower(db.Name())] = db
dsess := dsess.DSessFromSess(ctx.Session)
dbstate, err := GetInitialDBState(ctx, db)
if err != nil {
return err

View File

@@ -57,7 +57,7 @@ var _ enginetest.ReadOnlyDatabaseHarness = (*DoltHarness)(nil)
func newDoltHarness(t *testing.T) *DoltHarness {
dEnv := dtestutils.CreateTestEnv()
pro := sqle.NewDoltDatabaseProvider(dEnv.Config)
pro := sqle.NewDoltDatabaseProvider(dEnv.Config, dEnv.FS)
session, err := dsess.NewDoltSession(sql.NewEmptyContext(), enginetest.NewBaseSession(), pro, dEnv.Config)
require.NoError(t, err)
return &DoltHarness{
@@ -193,7 +193,7 @@ func (d *DoltHarness) NewReadOnlyDatabases(names ...string) (dbs []sql.ReadOnlyD
}
func (d *DoltHarness) NewDatabaseProvider(dbs ...sql.Database) sql.MutableDatabaseProvider {
return sqle.NewDoltDatabaseProvider(d.env.Config, dbs...)
return sqle.NewDoltDatabaseProvider(d.env.Config, d.env.FS, dbs...)
}
func getDbState(t *testing.T, db sqle.Database, dEnv *env.DoltEnv) dsess.InitialDbState {

View File

@@ -342,7 +342,7 @@ func schemaToSchemaString(sch sql.Schema) (string, error) {
func sqlNewEngine(dEnv *env.DoltEnv) (*sqle.Engine, error) {
opts := editor.Options{Deaf: dEnv.DbEaFactory()}
db := dsql.NewDatabase("dolt", dEnv.DbData(), opts)
pro := dsql.NewDoltDatabaseProvider(dEnv.Config, db)
pro := dsql.NewDoltDatabaseProvider(dEnv.Config, dEnv.FS, db)
engine := sqle.NewDefault(pro)
return engine, nil

View File

@@ -99,7 +99,7 @@ func setupIndexes(t *testing.T, tableName, insertQuery string) (*sqle.Engine, *e
tbl: tbl,
editOpts: opts,
}
pro := NewDoltDatabaseProvider(dEnv.Config, tiDb)
pro := NewDoltDatabaseProvider(dEnv.Config, dEnv.FS, tiDb)
engine = sqle.NewDefault(pro)
// Get an updated root to use for the rest of the test

View File

@@ -35,7 +35,7 @@ func PrepareCreateTableStmt(ctx context.Context, sqlDb sql.Database) (*sql.Conte
sql.WithTracer(tracing.Tracer(ctx)))
var cfg config.ReadableConfig = nil
pro := NewDoltDatabaseProvider(cfg, sqlDb)
pro := NewDoltDatabaseProvider(cfg, nil, sqlDb)
engine := sqle.NewDefault(pro)
sqlCtx.SetCurrentDatabase(sqlDb.Name())
return sqlCtx, engine, sess

View File

@@ -109,7 +109,7 @@ func NewTestSQLCtx(ctx context.Context) *sql.Context {
// NewTestEngine creates a new default engine, and a *sql.Context and initializes indexes and schema fragments.
func NewTestEngine(t *testing.T, dEnv *env.DoltEnv, ctx context.Context, db Database, root *doltdb.RootValue) (*sqle.Engine, *sql.Context, error) {
engine := sqle.NewDefault(NewDoltDatabaseProvider(dEnv.Config, db))
engine := sqle.NewDefault(NewDoltDatabaseProvider(dEnv.Config, dEnv.FS, db))
sqlCtx := NewTestSQLCtx(ctx)