Skip to content

Commit 7a8d094

Browse files
committed
Progress on schemas table
1 parent cc081c4 commit 7a8d094

File tree

24 files changed

+220
-130
lines changed

24 files changed

+220
-130
lines changed

go/cmd/dolt/commands/commit.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -713,7 +713,8 @@ func printStagedDiffs(wr io.Writer, stagedRows []sql.Row, printHelp bool) int {
713713

714714
lines := make([]string, 0, len(stagedRows))
715715
for _, row := range stagedRows {
716-
if !doltdb.IsReadOnlySystemTable(row[0].(string)) {
716+
tblName := row[0].(string)
717+
if !doltdb.IsReadOnlySystemTable(tblName, doltdb.HasDoltPrefix(tblName)) {
717718
switch row[1].(string) {
718719
case "new table":
719720
lines = append(lines, fmt.Sprintf(statusFmt, tblDiffTypeToLabel[diff.AddedTable], row[0].(string)))

go/cmd/dolt/commands/diff.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -780,7 +780,8 @@ func diffUserTables(queryist cli.Queryist, sqlCtx *sql.Context, dArgs *diffArgs)
780780

781781
doltSchemasChanged := false
782782
for _, delta := range deltas {
783-
if doltdb.IsFullTextTable(delta.TableName.Name) {
783+
tableName := delta.TableName.Name
784+
if doltdb.IsFullTextTable(tableName, doltdb.HasDoltPrefix(tableName)) {
784785
continue
785786
}
786787

@@ -852,7 +853,7 @@ func shouldPrintTableDelta(tablesToPrint *set.StrSet, toTableName, fromTableName
852853
}
853854

854855
func isDoltSchemasTable(toTableName, fromTableName string) bool {
855-
return fromTableName == doltdb.SchemasTableName || toTableName == doltdb.SchemasTableName
856+
return fromTableName == doltdb.GetSchemasTableName() || toTableName == doltdb.GetSchemasTableName()
856857
}
857858

858859
func getTableInfoAtRef(queryist cli.Queryist, sqlCtx *sql.Context, tableName string, ref string) (diff.TableInfo, error) {
@@ -1204,7 +1205,7 @@ func diffDoltSchemasTable(
12041205
query, err := dbr.InterpolateForDialect("select from_name,to_name,from_type,to_type,from_fragment,to_fragment "+
12051206
"from dolt_diff(?, ?, ?) "+
12061207
"order by coalesce(from_type, to_type), coalesce(from_name, to_name)",
1207-
[]interface{}{dArgs.fromRef, dArgs.toRef, doltdb.SchemasTableName}, dialect.MySQL)
1208+
[]interface{}{dArgs.fromRef, dArgs.toRef, doltdb.GetSchemasTableName()}, dialect.MySQL)
12081209
if err != nil {
12091210
return errhand.BuildDError("Error building diff query").AddCause(err).Build()
12101211
}

go/cmd/dolt/commands/dump.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ func (cmd DumpCmd) Exec(ctx context.Context, commandStr string, args []string, d
123123
return HandleVErrAndExitCode(verr, usage)
124124
}
125125

126-
tblNames, err := doltdb.GetNonSystemTableNames(ctx, root)
126+
tblNames, err := doltdb.GetNonSystemTableNames(ctx, root, doltdb.HasDoltPrefix)
127127
if err != nil {
128128
return HandleVErrAndExitCode(errhand.BuildDError("error: failed to get tables").AddCause(err).Build(), usage)
129129
}
@@ -325,7 +325,7 @@ func dumpProcedures(sqlCtx *sql.Context, engine *engine.SqlEngine, root doltdb.R
325325
}
326326

327327
func dumpTriggers(sqlCtx *sql.Context, engine *engine.SqlEngine, root doltdb.RootValue, writer io.WriteCloser) (rerr error) {
328-
_, _, ok, err := doltdb.GetTableInsensitive(sqlCtx, root, doltdb.TableName{Name: doltdb.SchemasTableName})
328+
_, _, ok, err := doltdb.GetTableInsensitive(sqlCtx, root, doltdb.TableName{Name: doltdb.GetSchemasTableName()})
329329
if err != nil {
330330
return err
331331
}
@@ -334,7 +334,7 @@ func dumpTriggers(sqlCtx *sql.Context, engine *engine.SqlEngine, root doltdb.Roo
334334
return nil
335335
}
336336

337-
sch, iter, _, err := engine.Query(sqlCtx, "select * from "+doltdb.SchemasTableName)
337+
sch, iter, _, err := engine.Query(sqlCtx, "select * from "+doltdb.GetSchemasTableName())
338338
if err != nil {
339339
return err
340340
}
@@ -391,7 +391,7 @@ func dumpTriggers(sqlCtx *sql.Context, engine *engine.SqlEngine, root doltdb.Roo
391391
}
392392

393393
func dumpViews(ctx *sql.Context, engine *engine.SqlEngine, root doltdb.RootValue, writer io.WriteCloser) (rerr error) {
394-
_, _, ok, err := doltdb.GetTableInsensitive(ctx, root, doltdb.TableName{Name: doltdb.SchemasTableName})
394+
_, _, ok, err := doltdb.GetTableInsensitive(ctx, root, doltdb.TableName{Name: doltdb.GetSchemasTableName()})
395395
if err != nil {
396396
return err
397397
}
@@ -400,7 +400,7 @@ func dumpViews(ctx *sql.Context, engine *engine.SqlEngine, root doltdb.RootValue
400400
return nil
401401
}
402402

403-
sch, iter, _, err := engine.Query(ctx, "select * from "+doltdb.SchemasTableName)
403+
sch, iter, _, err := engine.Query(ctx, "select * from "+doltdb.GetSchemasTableName())
404404
if err != nil {
405405
return err
406406
}

go/cmd/dolt/commands/merge.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -478,37 +478,38 @@ func calculateMergeStats(queryist cli.Queryist, sqlCtx *sql.Context, mergeStats
478478
// get table operations
479479
for _, summary := range diffSummaries {
480480
// We want to ignore all statistics for Full-Text tables
481-
if doltdb.IsFullTextTable(summary.TableName.Name) {
481+
tableName := summary.TableName.Name
482+
if doltdb.IsFullTextTable(tableName, doltdb.HasDoltPrefix(tableName)) {
482483
continue
483484
}
484485
// Ignore stats for database collation changes
485-
if strings.HasPrefix(summary.TableName.Name, diff.DBPrefix) {
486+
if strings.HasPrefix(tableName, diff.DBPrefix) {
486487
continue
487488
}
488489
if summary.DiffType == "added" {
489490
allUnmodified = false
490-
mergeStats[summary.TableName.Name] = &merge.MergeStats{
491+
mergeStats[tableName] = &merge.MergeStats{
491492
Operation: merge.TableAdded,
492493
}
493494
} else if summary.DiffType == "dropped" {
494495
allUnmodified = false
495-
mergeStats[summary.TableName.Name] = &merge.MergeStats{
496+
mergeStats[tableName] = &merge.MergeStats{
496497
Operation: merge.TableRemoved,
497498
}
498499
} else if summary.DiffType == "modified" || summary.DiffType == "renamed" {
499500
allUnmodified = false
500-
mergeStats[summary.TableName.Name] = &merge.MergeStats{
501+
mergeStats[tableName] = &merge.MergeStats{
501502
Operation: merge.TableModified,
502503
}
503-
tableStats, err := getTableDiffStats(queryist, sqlCtx, summary.TableName.Name, fromRef, toRef)
504+
tableStats, err := getTableDiffStats(queryist, sqlCtx, tableName, fromRef, toRef)
504505
if err != nil {
505506
return nil, false, err
506507
}
507508
if tableStats != nil && len(tableStats) > 0 {
508509
diffStats[tableStats[0].TableName] = tableStats[0]
509510
}
510511
} else {
511-
mergeStats[summary.TableName.Name] = &merge.MergeStats{
512+
mergeStats[tableName] = &merge.MergeStats{
512513
Operation: merge.TableUnmodified,
513514
}
514515
}

go/cmd/dolt/commands/schcmds/export.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ func exportSchemas(ctx context.Context, apr *argparser.ArgParseResults, root dol
127127
}
128128
tablesToExport = []string{tblName}
129129
} else {
130-
tablesToExport, err = doltdb.GetNonSystemTableNames(ctx, root)
130+
tablesToExport, err = doltdb.GetNonSystemTableNames(ctx, root, doltdb.HasDoltPrefix)
131131
if err != nil {
132132
return errhand.BuildDError("error retrieving table names").AddCause(err).Build()
133133
}

go/cmd/dolt/commands/schcmds/show.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ func printSchemas(ctx context.Context, apr *argparser.ArgParseResults, dEnv *env
142142

143143
var notFound []string
144144
for _, tblName := range tables {
145-
if doltdb.IsFullTextTable(tblName) {
145+
if doltdb.IsFullTextTable(tblName, doltdb.HasDoltPrefix(tblName)) {
146146
continue
147147
}
148148
ok, err := root.HasTable(ctx, doltdb.TableName{Name: tblName})

go/cmd/dolt/commands/status.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ func createPrintData(err error, queryist cli.Queryist, sqlCtx *sql.Context, show
217217
}
218218
shouldIgnoreTable = ignored == doltdb.Ignore
219219
}
220-
shouldIgnoreTable = shouldIgnoreTable || doltdb.IsFullTextTable(tableName)
220+
shouldIgnoreTable = shouldIgnoreTable || doltdb.IsFullTextTable(tableName, doltdb.HasDoltPrefix(tableName))
221221

222222
switch status {
223223
case "renamed":
@@ -536,7 +536,7 @@ and have %v and %v different commits each, respectively.
536536
cli.Println(stagedHeader)
537537
cli.Println(stagedHeaderHelp)
538538
for tableName, status := range data.stagedTables {
539-
if !doltdb.IsReadOnlySystemTable(tableName) {
539+
if !doltdb.IsReadOnlySystemTable(tableName, doltdb.HasDoltPrefix(tableName)) {
540540
text := fmt.Sprintf(statusFmt, status+":", tableName)
541541
greenText := color.GreenString(text)
542542
cli.Println(greenText)

go/cmd/dolt/commands/tblcmds/rm.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func (cmd RmCmd) Exec(ctx context.Context, commandStr string, args []string, dEn
7777
}
7878

7979
for _, tableName := range apr.Args {
80-
if doltdb.IsReadOnlySystemTable(tableName) {
80+
if doltdb.IsReadOnlySystemTable(tableName, doltdb.HasDoltPrefix(tableName)) {
8181
return commands.HandleVErrAndExitCode(
8282
errhand.BuildDError("error removing table %s", tableName).AddCause(doltdb.ErrSystemTableCannotBeModified).Build(), usage)
8383
}

go/libraries/doltcore/diff/table_deltas.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,14 @@ func (td TableDelta) CurName() string {
449449
return td.FromName.String()
450450
}
451451

452+
// CurTableName returns the most recent TableName of the table.
453+
func (td TableDelta) CurTableName() doltdb.TableName {
454+
if td.ToName.Name != "" {
455+
return td.ToName
456+
}
457+
return td.FromName
458+
}
459+
452460
func (td TableDelta) HasFKChanges() bool {
453461
if len(td.FromFks) != len(td.ToFks) {
454462
return true

go/libraries/doltcore/doltdb/system_table.go

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -93,48 +93,47 @@ func HasDoltCIPrefix(s string) bool {
9393

9494
// IsFullTextTable returns a boolean stating whether the given table is one of the pseudo-index tables used by Full-Text
9595
// indexes.
96-
// TODO: Schema name
97-
func IsFullTextTable(name string) bool {
98-
return HasDoltPrefix(name) && (strings.HasSuffix(name, "_fts_config") ||
96+
func IsFullTextTable(name string, isSystemTable bool) bool {
97+
return isSystemTable && (strings.HasSuffix(name, "_fts_config") ||
9998
strings.HasSuffix(name, "_fts_position") ||
10099
strings.HasSuffix(name, "_fts_doc_count") ||
101100
strings.HasSuffix(name, "_fts_global_count") ||
102101
strings.HasSuffix(name, "_fts_row_count"))
103102
}
104103

105104
// IsDoltCITable returns whether the table name given is a dolt-ci table
106-
func IsDoltCITable(name string) bool {
107-
return HasDoltCIPrefix(name) && set.NewStrSet(getWriteableSystemTables()).Contains(name) && !IsFullTextTable(name)
105+
func IsDoltCITable(name string, isSystemTable bool) bool {
106+
return HasDoltCIPrefix(name) && set.NewStrSet(getWriteableSystemTables()).Contains(name) && !IsFullTextTable(name, isSystemTable)
108107
}
109108

110109
// IsReadOnlySystemTable returns whether the table name given is a system table that should not be included in command line
111110
// output (e.g. dolt status) by default.
112-
func IsReadOnlySystemTable(name string) bool {
113-
return HasDoltPrefix(name) && !set.NewStrSet(getWriteableSystemTables()).Contains(name) && !IsFullTextTable(name)
111+
func IsReadOnlySystemTable(name string, isSystemTable bool) bool {
112+
return isSystemTable && !set.NewStrSet(getWriteableSystemTables()).Contains(name) && !IsFullTextTable(name, isSystemTable)
114113
}
115114

116115
// IsNonAlterableSystemTable returns whether the table name given is a system table that cannot be dropped or altered
117116
// by the user.
118-
func IsNonAlterableSystemTable(name string) bool {
119-
return (IsReadOnlySystemTable(name) && !IsFullTextTable(name)) || strings.EqualFold(name, SchemasTableName)
117+
func IsNonAlterableSystemTable(name string, isSystemTable bool) bool {
118+
return (IsReadOnlySystemTable(name, isSystemTable) && !IsFullTextTable(name, isSystemTable)) || strings.EqualFold(name, GetSchemasTableName())
120119
}
121120

122121
// GetNonSystemTableNames gets non-system table names
123-
func GetNonSystemTableNames(ctx context.Context, root RootValue) ([]string, error) {
122+
func GetNonSystemTableNames(ctx context.Context, root RootValue, isSystemTableFn func(n string) bool) ([]string, error) {
124123
tn, err := root.GetTableNames(ctx, DefaultSchemaName)
125124
if err != nil {
126125
return nil, err
127126
}
128127
tn = funcitr.FilterStrings(tn, func(n string) bool {
129-
return !HasDoltPrefix(n) && !HasDoltCIPrefix(n)
128+
return !isSystemTableFn(n) && !HasDoltCIPrefix(n)
130129
})
131130
sort.Strings(tn)
132131
return tn, nil
133132
}
134133

135134
// GetSystemTableNames gets system table names
136-
func GetSystemTableNames(ctx context.Context, root RootValue) ([]string, error) {
137-
p, err := GetPersistedSystemTables(ctx, root)
135+
func GetSystemTableNames(ctx context.Context, root RootValue, isSystemTableFn func(n string) bool) ([]string, error) {
136+
p, err := GetPersistedSystemTables(ctx, root, isSystemTableFn)
138137
if err != nil {
139138
return nil, err
140139
}
@@ -151,13 +150,13 @@ func GetSystemTableNames(ctx context.Context, root RootValue) ([]string, error)
151150
}
152151

153152
// GetPersistedSystemTables returns table names of all persisted system tables.
154-
func GetPersistedSystemTables(ctx context.Context, root RootValue) ([]string, error) {
153+
func GetPersistedSystemTables(ctx context.Context, root RootValue, isSystemTableFn func(n string) bool) ([]string, error) {
155154
tn, err := root.GetTableNames(ctx, DefaultSchemaName)
156155
if err != nil {
157156
return nil, err
158157
}
159158
sort.Strings(tn)
160-
return funcitr.FilterStrings(tn, HasDoltPrefix), nil
159+
return funcitr.FilterStrings(tn, isSystemTableFn), nil
161160
}
162161

163162
// GetGeneratedSystemTables returns table names of all generated system tables.
@@ -183,7 +182,7 @@ var getWriteableSystemTables = func() []string {
183182
return []string{
184183
GetDocTableName(),
185184
DoltQueryCatalogTableName,
186-
SchemasTableName,
185+
GetSchemasTableName(),
187186
GetProceduresTableName(),
188187
IgnoreTableName,
189188
RebaseTableName,

0 commit comments

Comments
 (0)