@@ -14,7 +14,6 @@ import (
1414
1515 "github.com/dolthub/go-mysql-server/sql"
1616 "github.com/marcboeker/go-duckdb"
17- _ "github.com/marcboeker/go-duckdb"
1817
1918 "github.com/apecloud/myduckserver/adapter"
2019 "github.com/apecloud/myduckserver/configuration"
@@ -27,7 +26,7 @@ type DatabaseProvider struct {
2726 connector * duckdb.Connector
2827 storage * stdsql.DB
2928 pool * ConnectionPool
30- catalogName string // database name in postgres
29+ defaultCatalogName string // default database name in postgres
3130 dataDir string
3231 dbFile string
3332 dsn string
@@ -60,11 +59,11 @@ func NewDBProvider(defaultTimeZone, dataDir, defaultDB string) (prov *DatabasePr
6059
6160 shouldInit := true
6261 if defaultDB == "" || defaultDB == "memory" {
63- prov .catalogName = "memory"
62+ prov .defaultCatalogName = "memory"
6463 prov .dbFile = ""
6564 prov .dsn = ""
6665 } else {
67- prov .catalogName = defaultDB
66+ prov .defaultCatalogName = defaultDB
6867 prov .dbFile = defaultDB + ".db"
6968 prov .dsn = filepath .Join (prov .dataDir , prov .dbFile )
7069 _ , err = os .Stat (prov .dsn )
@@ -76,7 +75,7 @@ func NewDBProvider(defaultTimeZone, dataDir, defaultDB string) (prov *DatabasePr
7675 return nil , err
7776 }
7877 prov .storage = stdsql .OpenDB (prov .connector )
79- prov .pool = NewConnectionPool (prov .catalogName , prov . connector , prov .storage )
78+ prov .pool = NewConnectionPool (prov .connector , prov .storage )
8079
8180 bootQueries := []string {
8281 "INSTALL arrow" ,
@@ -353,8 +352,8 @@ func (prov *DatabaseProvider) Pool() *ConnectionPool {
353352 return prov .pool
354353}
355354
356- func (prov * DatabaseProvider ) CatalogName () string {
357- return prov .catalogName
355+ func (prov * DatabaseProvider ) DefaultCatalogName () string {
356+ return prov .defaultCatalogName
358357}
359358
360359func (prov * DatabaseProvider ) DataDir () string {
@@ -380,7 +379,8 @@ func (prov *DatabaseProvider) AllDatabases(ctx *sql.Context) []sql.Database {
380379 prov .mu .RLock ()
381380 defer prov .mu .RUnlock ()
382381
383- rows , err := adapter .QueryCatalog (ctx , "SELECT DISTINCT schema_name FROM information_schema.schemata WHERE catalog_name = ?" , prov .catalogName )
382+ catalogName := adapter .GetCurrentCatalog (ctx )
383+ rows , err := adapter .QueryCatalog (ctx , "SELECT DISTINCT schema_name FROM information_schema.schemata WHERE catalog_name = ?" , catalogName )
384384 if err != nil {
385385 panic (ErrDuckDB .New (err ))
386386 }
@@ -398,7 +398,7 @@ func (prov *DatabaseProvider) AllDatabases(ctx *sql.Context) []sql.Database {
398398 continue
399399 }
400400
401- all = append (all , NewDatabase (schemaName , prov . catalogName ))
401+ all = append (all , NewDatabase (schemaName , catalogName ))
402402 }
403403
404404 sort .Slice (all , func (i , j int ) bool {
@@ -413,13 +413,14 @@ func (prov *DatabaseProvider) Database(ctx *sql.Context, name string) (sql.Datab
413413 prov .mu .RLock ()
414414 defer prov .mu .RUnlock ()
415415
416- ok , err := hasDatabase (ctx , prov .catalogName , name )
416+ catalogName := adapter .GetCurrentCatalog (ctx )
417+ ok , err := hasDatabase (ctx , catalogName , name )
417418 if err != nil {
418419 return nil , err
419420 }
420421
421422 if ok {
422- return NewDatabase (name , prov . catalogName ), nil
423+ return NewDatabase (name , catalogName ), nil
423424 }
424425 return nil , sql .ErrDatabaseNotFound .New (name )
425426}
@@ -429,7 +430,7 @@ func (prov *DatabaseProvider) HasDatabase(ctx *sql.Context, name string) bool {
429430 prov .mu .RLock ()
430431 defer prov .mu .RUnlock ()
431432
432- ok , err := hasDatabase (ctx , prov . catalogName , name )
433+ ok , err := hasDatabase (ctx , adapter . GetCurrentCatalog ( ctx ) , name )
433434 if err != nil {
434435 panic (err )
435436 }
@@ -451,7 +452,8 @@ func (prov *DatabaseProvider) CreateDatabase(ctx *sql.Context, name string) erro
451452 prov .mu .Lock ()
452453 defer prov .mu .Unlock ()
453454
454- _ , err := adapter .ExecCatalog (ctx , fmt .Sprintf (`CREATE SCHEMA %s` , FullSchemaName (prov .catalogName , name )))
455+ _ , err := adapter .ExecCatalog (ctx , fmt .Sprintf (`CREATE SCHEMA %s` ,
456+ FullSchemaName (adapter .GetCurrentCatalog (ctx ), name )))
455457 if err != nil {
456458 return ErrDuckDB .New (err )
457459 }
@@ -464,7 +466,8 @@ func (prov *DatabaseProvider) DropDatabase(ctx *sql.Context, name string) error
464466 prov .mu .Lock ()
465467 defer prov .mu .Unlock ()
466468
467- _ , err := adapter .Exec (ctx , fmt .Sprintf (`DROP SCHEMA %s CASCADE` , FullSchemaName (prov .catalogName , name )))
469+ _ , err := adapter .Exec (ctx , fmt .Sprintf (`DROP SCHEMA %s CASCADE` ,
470+ FullSchemaName (adapter .GetCurrentCatalog (ctx ), name )))
468471 if err != nil {
469472 return ErrDuckDB .New (err )
470473 }
@@ -494,5 +497,5 @@ func (prov *DatabaseProvider) Restart(readOnly bool) error {
494497 prov .connector = connector
495498 prov .storage = storage
496499
497- return nil
500+ return prov . pool . Reset ( connector , storage )
498501}
0 commit comments