mirror of
https://github.com/dolthub/dolt.git
synced 2026-02-11 10:33:08 -06:00
added DoltDatabaseProvider
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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=
|
||||
|
||||
@@ -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{}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user