added DoltDatabaseProvider

This commit is contained in:
Andy Arthur
2021-06-28 14:17:20 -07:00
parent c956a900f6
commit ee47bbc8ad
6 changed files with 65 additions and 22 deletions

View File

@@ -84,16 +84,6 @@ func Serve(ctx context.Context, version string, serverConfig ServerConfig, serve
userAuth := auth.NewAudit(auth.NewNativeSingle(serverConfig.User(), serverConfig.Password(), permissions), auth.NewAuditLog(logrus.StandardLogger()))
c := sql.NewCatalog()
a := analyzer.NewBuilder(c).WithParallelism(serverConfig.QueryParallelism()).Build()
sqlEngine := sqle.New(c, a, nil)
err := sqlEngine.Catalog.Register(dfunctions.DoltFunctions...)
if err != nil {
return nil, err
}
var username string
var email string
var mrEnv env.MultiRepoEnv
@@ -117,13 +107,16 @@ func Serve(ctx context.Context, version string, serverConfig ServerConfig, serve
}
dbs := commands.CollectDBs(mrEnv)
cat := sql.NewCatalogWithDbProvider(dsqle.NewDoltDatabaseProvider(dbs...))
cat.AddDatabase(information_schema.NewInformationSchemaDatabase(cat))
for _, db := range dbs {
sqlEngine.AddDatabase(db)
a := analyzer.NewBuilder(cat).WithParallelism(serverConfig.QueryParallelism()).Build()
sqlEngine := sqle.New(cat, a, nil)
if err := sqlEngine.Catalog.Register(dfunctions.DoltFunctions...); err != nil {
return nil, err
}
sqlEngine.AddDatabase(information_schema.NewInformationSchemaDatabase(sqlEngine.Catalog))
portAsString := strconv.Itoa(serverConfig.Port())
hostPort := net.JoinHostPort(serverConfig.Host(), portAsString)

View File

@@ -233,7 +233,7 @@ func runMain() int {
restoreIO := cli.InitIO()
defer restoreIO()
warnIfMaxFilesTooLow()
//warnIfMaxFilesTooLow()
ctx := context.Background()
dEnv := env.Load(ctx, env.GetCurrentUserHomeDir, filesys.LocalFS, doltdb.LocalDirDoltDB, Version)
@@ -282,7 +282,7 @@ func runMain() int {
return 1
}
err = reconfigIfTempFileMoveFails(dEnv)
//err = reconfigIfTempFileMoveFails(dEnv)
if err != nil {
cli.PrintErrln(color.RedString("Failed to setup the temporary directory. %v`", err))

View File

@@ -18,7 +18,7 @@ require (
github.com/denisbrodbeck/machineid v1.0.1
github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi v0.0.0-20201005193433-3ee972b1d078
github.com/dolthub/fslock v0.0.2
github.com/dolthub/go-mysql-server v0.10.1-0.20210623170540-c0b4e3e5599a
github.com/dolthub/go-mysql-server v0.10.1-0.20210624230211-b26209b377c5
github.com/dolthub/ishell v0.0.0-20210205014355-16a4ce758446
github.com/dolthub/mmap-go v1.0.4-0.20201107010347-f9f2a9588a66
github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81
@@ -82,4 +82,6 @@ require (
replace github.com/dolthub/dolt/go/gen/proto/dolt/services/eventsapi => ./gen/proto/dolt/services/eventsapi
replace github.com/dolthub/go-mysql-server => ../../go-mysql-server
go 1.15

View File

@@ -144,6 +144,8 @@ github.com/dolthub/fslock v0.0.2 h1:8vUh47iKovgrtXNrXVIzsIoWLlspoXg+3nslhUzgKSw=
github.com/dolthub/fslock v0.0.2/go.mod h1:0i7bsNkK+XHwFL3dIsSWeXSV7sykVzzVr6+jq8oeEo0=
github.com/dolthub/go-mysql-server v0.10.1-0.20210623170540-c0b4e3e5599a h1:ZJNcle93VqzlmKqUcmrB7gxoIS/XBQdjx0+1GhCHiEM=
github.com/dolthub/go-mysql-server v0.10.1-0.20210623170540-c0b4e3e5599a/go.mod h1:51T7rtmujJjMfwvST6BxqQC4my/IpVbP7oLFGPO2x74=
github.com/dolthub/go-mysql-server v0.10.1-0.20210624230211-b26209b377c5 h1:zjQ8mWPAM/j2LWPV4IFEB/uAamfUJA2ahZSo1sEiOdQ=
github.com/dolthub/go-mysql-server v0.10.1-0.20210624230211-b26209b377c5/go.mod h1:51T7rtmujJjMfwvST6BxqQC4my/IpVbP7oLFGPO2x74=
github.com/dolthub/ishell v0.0.0-20210205014355-16a4ce758446 h1:0ol5pj+QlKUKAtqs1LiPM3ZJKs+rHPgLSsMXmhTrCAM=
github.com/dolthub/ishell v0.0.0-20210205014355-16a4ce758446/go.mod h1:dhGBqcCEfK5kuFmeO5+WOx3hqc1k3M29c1oS/R7N4ms=
github.com/dolthub/mmap-go v1.0.4-0.20201107010347-f9f2a9588a66 h1:WRPDbpJWEnPxPmiuOTndT+lUWUeGjx6eoNOK9O4tQQQ=

View File

@@ -60,10 +60,10 @@ type Database struct {
drw env.DocsReadWriter
}
var _ sql.Database = (*Database)(nil)
var _ sql.TableCreator = (*Database)(nil)
var _ sql.TemporaryTableCreator = (*Database)(nil)
var _ sql.TemporaryTableDatabase = (*Database)(nil)
var _ sql.Database = Database{}
var _ sql.TableCreator = Database{}
var _ sql.TemporaryTableCreator = Database{}
var _ sql.TemporaryTableDatabase = Database{}
// DisabledTransaction is a no-op transaction type that lets us feature-gate transaction logic changes
type DisabledTransaction struct{}

View File

@@ -2,8 +2,54 @@
package sqle
import (
"github.com/dolthub/go-mysql-server/sql"
)
type DoltDatabaseProvider struct {
databases map[string]sql.Database
}
}
var _ sql.DatabaseProvider = DoltDatabaseProvider{}
func NewDoltDatabaseProvider(databases ...Database) sql.DatabaseProvider {
dbs := make(map[string]sql.Database, len(databases))
for _, db := range databases {
dbs[db.Name()] = db
}
return DoltDatabaseProvider{databases: dbs}
}
func (p DoltDatabaseProvider) Database(name string) (db sql.Database, err error) {
var ok bool
if db, ok = p.databases[name]; ok {
return db, nil
}
return nil, sql.ErrDatabaseNotFound.New(name)
}
func (p DoltDatabaseProvider) HasDatabase(name string) bool {
_, err := p.Database(name)
return err == nil
}
func (p DoltDatabaseProvider) AllDatabases() (all []sql.Database) {
all = make([]sql.Database, len(p.databases))
i := 0
for _, db := range p.databases {
all[i] = db
i++
}
return
}
func (p DoltDatabaseProvider) AddDatabase(db sql.Database) {
p.databases[db.Name()] = db
}
func (p DoltDatabaseProvider) DropDatabase(name string) {
delete(p.databases, name)
}