Skip to content

Commit 24c4a55

Browse files
committed
fix generated system table name set to use adapter names conditionally
1 parent 921d8a8 commit 24c4a55

File tree

5 files changed

+29
-26
lines changed

5 files changed

+29
-26
lines changed

go/libraries/doltcore/doltdb/system_table.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,8 @@ func GeneratedSystemTableNames() []string {
160160
GetBackupsTableName(),
161161
GetStashesTableName(),
162162
GetBranchActivityTableName(),
163+
// [dtables.StatusTable] now uses [adapters.TableAdapter] to overwrite this name.
164+
StatusTableName,
163165
}
164166
}
165167

go/libraries/doltcore/sqle/adapters/table_adapter.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@ type TableAdapter interface {
2323

2424
var DoltTableAdapterRegistry = newDoltTableAdapterRegistry()
2525

26-
// doltTableAdapterRegistry is a TableAdapter registry for Dolt tables, keyed by the table's original name. It is
27-
// populated during package initialization by integrators and intended to be read-only thereafter.
26+
// doltTableAdapterRegistry is a Dolt table name to TableAdapter map. Integrators populate this registry during package
27+
// initialization, and it's intended to be read-only thereafter. The registry links with existing Dolt system tables to
28+
// allow them to be resolved and evaluated to integrator's version and internal aliases (integrators' Dolt table name
29+
// keys).
2830
type doltTableAdapterRegistry struct {
2931
Adapters map[string]TableAdapter
3032
internalAliases map[string]string
@@ -38,13 +40,12 @@ func newDoltTableAdapterRegistry() *doltTableAdapterRegistry {
3840
}
3941
}
4042

41-
// AddAdapter adds a TableAdapter to the Dolt table adapter registry with optional |internalAliases| (integrators'
42-
// alternative Dolt table name keys).
43-
func (as *doltTableAdapterRegistry) AddAdapter(doltTable string, adapter TableAdapter, internalAliases ...string) {
43+
// AddAdapter maps |doltTableName| to an |adapter| in the Dolt table adapter registry, with optional |internalAliases|.
44+
func (as *doltTableAdapterRegistry) AddAdapter(doltTableName string, adapter TableAdapter, internalAliases ...string) {
4445
for _, alias := range internalAliases {
45-
as.internalAliases[alias] = doltTable
46+
as.internalAliases[alias] = doltTableName
4647
}
47-
as.Adapters[doltTable] = adapter
48+
as.Adapters[doltTableName] = adapter
4849
}
4950

5051
// GetAdapter gets a Dolt TableAdapter mapped to |name|, which can be the dolt table name or internal alias.
@@ -58,8 +59,8 @@ func (as *doltTableAdapterRegistry) GetAdapter(name string) (TableAdapter, bool)
5859
return adapter, ok
5960
}
6061

61-
// NormalizeName normalizes |name| if it's an internal alias to the correct Dolt table name, if no match is found the
62-
// |name| is returned as is.
62+
// NormalizeName normalizes |name| if it's an internal alias of the underlying Dolt table name. If no match is found,
63+
// |name| is returned as-is.
6364
func (as *doltTableAdapterRegistry) NormalizeName(name string) string {
6465
doltTableName, ok := as.internalAliases[name]
6566
if !ok {

go/libraries/doltcore/sqle/database.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -805,7 +805,7 @@ func (db Database) getTableInsensitiveWithRoot(ctx *sql.Context, head *doltdb.Co
805805
}
806806
}
807807

808-
dt, found = dtables.NewStatusTableWithAdapter(ctx, lwrName, db.ddb, ws, rootsProvider), true
808+
dt, found = dtables.NewStatusTable(ctx, lwrName, db.ddb, ws, rootsProvider), true
809809
}
810810
case doltdb.MergeStatusTableName, doltdb.GetMergeStatusTableName():
811811
isDoltgresSystemTable, err := resolve.IsDoltgresSystemTable(ctx, tname, root)

go/libraries/doltcore/sqle/dtables/status_table.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,19 +82,19 @@ func (st StatusTable) PartitionRows(context *sql.Context, _ sql.Partition) (sql.
8282
return newStatusItr(context, &st)
8383
}
8484

85-
// NewStatusTableWithAdapter creates a new StatusTable using either an integrators' [adapters.TableAdapter] or the
86-
// default [NewStatusTable] constructor.
87-
func NewStatusTableWithAdapter(ctx *sql.Context, tableName string, ddb *doltdb.DoltDB, ws *doltdb.WorkingSet, rp env.RootsProvider[*sql.Context]) sql.Table {
85+
// NewStatusTable creates a new StatusTable using either an integrators' [adapters.TableAdapter] or the default
86+
// [NewStatusTableWithNoAdapter] constructor (Dolt table default implementation).
87+
func NewStatusTable(ctx *sql.Context, tableName string, ddb *doltdb.DoltDB, ws *doltdb.WorkingSet, rp env.RootsProvider[*sql.Context]) sql.Table {
8888
adapter, ok := adapters.DoltTableAdapterRegistry.GetAdapter(tableName)
8989
if ok {
9090
return adapter.NewTable(ctx, tableName, ddb, ws, rp)
9191
}
9292

93-
return NewStatusTable(ctx, tableName, ddb, ws, rp)
93+
return NewStatusTableWithNoAdapter(ctx, tableName, ddb, ws, rp)
9494
}
9595

96-
// NewStatusTable returns a new StatusTable.
97-
func NewStatusTable(_ *sql.Context, tableName string, ddb *doltdb.DoltDB, ws *doltdb.WorkingSet, rp env.RootsProvider[*sql.Context]) sql.Table {
96+
// NewStatusTableWithNoAdapter returns a new StatusTable.
97+
func NewStatusTableWithNoAdapter(_ *sql.Context, tableName string, ddb *doltdb.DoltDB, ws *doltdb.WorkingSet, rp env.RootsProvider[*sql.Context]) sql.Table {
9898
return &StatusTable{
9999
tableName: tableName,
100100
ddb: ddb,

go/libraries/doltcore/sqle/resolve/system_tables.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,19 @@ func GetGeneratedSystemTables(ctx context.Context, root doltdb.RootValue) ([]dol
2727
s := doltdb.NewTableNameSet(nil)
2828

2929
// Depending on whether the search path is used, the generated system tables will either be in the dolt namespace
30-
// or the empty (default) namespace
31-
if !UseSearchPath {
32-
for _, t := range doltdb.GeneratedSystemTableNames() {
33-
s.Add(doltdb.TableName{Name: t})
30+
// or the empty (default) namespace.
31+
for _, tableName := range doltdb.GeneratedSystemTableNames() {
32+
adapter, ok := adapters.DoltTableAdapterRegistry.Adapters[tableName]
33+
if ok {
34+
tableName = adapter.TableName()
3435
}
35-
} else {
36-
for _, t := range doltdb.GeneratedSystemTableNames() {
37-
s.Add(doltdb.TableName{Name: t, Schema: doltdb.DoltNamespace})
36+
37+
tableUnique := doltdb.TableName{Name: tableName}
38+
if UseSearchPath {
39+
tableUnique.Schema = doltdb.DoltNamespace
3840
}
39-
}
4041

41-
for _, adapter := range adapters.DoltTableAdapterRegistry.Adapters {
42-
s.Add(doltdb.TableName{Name: adapter.TableName(), Schema: doltdb.DoltNamespace})
42+
s.Add(tableUnique)
4343
}
4444

4545
schemas, err := root.GetDatabaseSchemas(ctx)

0 commit comments

Comments
 (0)