diff --git a/go/libraries/doltcore/sqle/database_provider.go b/go/libraries/doltcore/sqle/database_provider.go index 6686eb709e..ade8a836d5 100644 --- a/go/libraries/doltcore/sqle/database_provider.go +++ b/go/libraries/doltcore/sqle/database_provider.go @@ -726,7 +726,9 @@ func (p DoltDatabaseProvider) databaseForRevision(ctx *sql.Context, revisionQual dbCache, ok := sess.DatabaseCache(ctx, baseName) if ok { db, ok := dbCache.GetCachedRevisionDb(revisionQualifiedName) - if ok { + // The db cache is keyed by the revision qualified name, but the request name must also match for it to be a + // cache hit + if ok && db.RequestedName() == requestedName { return db, true, nil } } diff --git a/go/libraries/doltcore/sqle/dsess/session.go b/go/libraries/doltcore/sqle/dsess/session.go index ef5d821266..21da5ef5a6 100644 --- a/go/libraries/doltcore/sqle/dsess/session.go +++ b/go/libraries/doltcore/sqle/dsess/session.go @@ -174,24 +174,14 @@ func (d *DoltSession) lookupDbState(ctx *sql.Context, dbName string) (*branchSta revisionQualifiedName = revisionDbName(baseName, rev) } - // Try to get the session from the cache before going to the provider - var database SqlDatabase - if dbStateFound { - database, _ = dbState.databaseCache.GetCachedRevisionDb(revisionQualifiedName) + database, ok, err := d.provider.SessionDatabase(ctx, revisionQualifiedName) + if err != nil { + return nil, false, err + } + if !ok { + return nil, false, nil } - if database == nil { - var err error - var ok bool - database, ok, err = d.provider.SessionDatabase(ctx, revisionQualifiedName) - if err != nil { - return nil, false, err - } - if !ok { - return nil, false, nil - } - } - // Add the initial state to the session for future reuse if err := d.addDB(ctx, database); err != nil { return nil, false, err