mirror of
https://github.com/dolthub/dolt.git
synced 2026-05-12 11:29:01 -05:00
Make num_data_conflicts nil when schema conflicts
This commit is contained in:
@@ -77,7 +77,7 @@ jobs:
|
||||
TMPDIR=$gw/tmp
|
||||
./${{ env.SCRIPT_DIR}}/setup.sh $TMPDIR $DATADIR
|
||||
|
||||
# small python script times merge, we suppres errcodes but print error messages
|
||||
# small python script times merge, we suppress errcodes but print error messages
|
||||
cd $TMPDIR
|
||||
python3 -c "import time, subprocess, sys; start = time.time(); res=subprocess.run(['dolt', 'merge', '--squash', 'main'], capture_output=True); err = res.stdout + res.stderr if res.returncode != 0 else ''; latency = time.time() -start; print(latency); sys.stderr.write(str(err))" 1> lat.log 2>err.log
|
||||
latency=$(cat lat.log)
|
||||
|
||||
+22
-12
@@ -44,8 +44,8 @@ type PreviewMergeConflictsSummaryTableFunction struct {
|
||||
|
||||
var previewMergeConflictsSummarySchema = sql.Schema{
|
||||
&sql.Column{Name: "table", Type: types.Text, Nullable: false},
|
||||
&sql.Column{Name: "num_data_conflicts", Type: types.Uint64, Nullable: false},
|
||||
&sql.Column{Name: "num_schema_conflicts", Type: types.Uint64, Nullable: false},
|
||||
&sql.Column{Name: "num_data_conflicts", Type: types.Uint64, Nullable: true},
|
||||
&sql.Column{Name: "num_schema_conflicts", Type: types.Uint64, Nullable: true},
|
||||
}
|
||||
|
||||
// NewInstance creates a new instance of TableFunction interface
|
||||
@@ -198,7 +198,7 @@ func (pm *PreviewMergeConflictsSummaryTableFunction) RowIter(ctx *sql.Context, r
|
||||
return nil, fmt.Errorf("unexpected database type: %T", pm.database)
|
||||
}
|
||||
|
||||
tables, err := findTablesWithConflicts(ctx, sqledb, leftBranch, rightBranch)
|
||||
tables, err := getTablesWithConflicts(ctx, sqledb, leftBranch, rightBranch)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -267,11 +267,20 @@ func (d *previewMergeConflictsSummaryTableFunctionRowIter) Close(context *sql.Co
|
||||
}
|
||||
|
||||
func getRowFromConflict(conflict tableConflict) sql.Row {
|
||||
return sql.Row{
|
||||
row := sql.Row{
|
||||
conflict.tableName.String(), // table
|
||||
conflict.numDataConflicts, // num_conflicts
|
||||
conflict.numSchemaConflicts, // num_schema_conflicts
|
||||
}
|
||||
if conflict.numDataConflicts != nil {
|
||||
row = append(row, *conflict.numDataConflicts) // num_data_conflicts
|
||||
} else {
|
||||
row = append(row, nil)
|
||||
}
|
||||
if conflict.numSchemaConflicts != nil {
|
||||
row = append(row, *conflict.numSchemaConflicts) // num_schema_conflicts
|
||||
} else {
|
||||
row = append(row, nil)
|
||||
}
|
||||
return row
|
||||
}
|
||||
|
||||
func resolveBranchesToRoots(ctx *sql.Context, db dsess.SqlDatabase, leftBranch, rightBranch string) (doltdb.RootValue, doltdb.RootValue, doltdb.RootValue, error) {
|
||||
@@ -320,11 +329,11 @@ func resolveBranchesToRoots(ctx *sql.Context, db dsess.SqlDatabase, leftBranch,
|
||||
|
||||
type tableConflict struct {
|
||||
tableName doltdb.TableName
|
||||
numDataConflicts uint64
|
||||
numSchemaConflicts uint64
|
||||
numDataConflicts *uint64
|
||||
numSchemaConflicts *uint64
|
||||
}
|
||||
|
||||
func findTablesWithConflicts(ctx *sql.Context, db dsess.SqlDatabase, baseBranch, mergeBranch string) ([]tableConflict, error) {
|
||||
func getTablesWithConflicts(ctx *sql.Context, db dsess.SqlDatabase, baseBranch, mergeBranch string) ([]tableConflict, error) {
|
||||
leftRoot, rightRoot, baseRoot, err := resolveBranchesToRoots(ctx, db, baseBranch, mergeBranch)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -368,8 +377,9 @@ func findTablesWithConflicts(ctx *sql.Context, db dsess.SqlDatabase, baseBranch,
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if schConflicts.Count() > 0 {
|
||||
conflicted = append(conflicted, tableConflict{tblName, 0, uint64(schConflicts.Count())})
|
||||
numSchemaConflicts := uint64(schConflicts.Count())
|
||||
if numSchemaConflicts > 0 {
|
||||
conflicted = append(conflicted, tableConflict{tableName: tblName, numSchemaConflicts: &numSchemaConflicts})
|
||||
// Cannot calculate data conflicts if there are schema conflicts
|
||||
continue
|
||||
}
|
||||
@@ -427,7 +437,7 @@ func findTablesWithConflicts(ctx *sql.Context, db dsess.SqlDatabase, baseBranch,
|
||||
}
|
||||
|
||||
if numDataConflicts > 0 {
|
||||
conflicted = append(conflicted, tableConflict{tblName, numDataConflicts, 0})
|
||||
conflicted = append(conflicted, tableConflict{tableName: tblName, numSchemaConflicts: &numSchemaConflicts, numDataConflicts: &numDataConflicts})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4030,7 +4030,7 @@ var SchemaConflictScripts = []queries.ScriptTest{
|
||||
Assertions: []queries.ScriptTestAssertion{
|
||||
{
|
||||
Query: "SELECT * FROM dolt_preview_merge_conflicts_summary('main', 'other')",
|
||||
Expected: []sql.Row{{"t", uint64(0), uint64(1)}},
|
||||
Expected: []sql.Row{{"t", nil, uint64(1)}},
|
||||
},
|
||||
{
|
||||
Query: "call dolt_merge('other')",
|
||||
@@ -4062,7 +4062,7 @@ var SchemaConflictScripts = []queries.ScriptTest{
|
||||
Assertions: []queries.ScriptTestAssertion{
|
||||
{
|
||||
Query: "SELECT * FROM dolt_preview_merge_conflicts_summary('main', 'other')",
|
||||
Expected: []sql.Row{{"t", uint64(0), uint64(1)}},
|
||||
Expected: []sql.Row{{"t", nil, uint64(1)}},
|
||||
},
|
||||
{
|
||||
Query: "call dolt_merge('other')",
|
||||
|
||||
@@ -1669,7 +1669,7 @@ var SchemaChangeTestsTypeChanges = []MergeScriptTest{
|
||||
Assertions: []queries.ScriptTestAssertion{
|
||||
{
|
||||
Query: "select * from dolt_preview_merge_conflicts_summary('main', 'right');",
|
||||
Expected: []sql.Row{{"t", uint64(0), uint64(1)}},
|
||||
Expected: []sql.Row{{"t", nil, uint64(1)}},
|
||||
},
|
||||
{
|
||||
Query: "call dolt_merge('right');",
|
||||
@@ -1703,7 +1703,7 @@ var SchemaChangeTestsTypeChanges = []MergeScriptTest{
|
||||
Assertions: []queries.ScriptTestAssertion{
|
||||
{
|
||||
Query: "select * from dolt_preview_merge_conflicts_summary('main', 'right');",
|
||||
Expected: []sql.Row{{"t", uint64(0), uint64(1)}},
|
||||
Expected: []sql.Row{{"t", nil, uint64(1)}},
|
||||
},
|
||||
{
|
||||
Query: "call dolt_merge('right');",
|
||||
@@ -1771,7 +1771,7 @@ var SchemaChangeTestsTypeChanges = []MergeScriptTest{
|
||||
Assertions: []queries.ScriptTestAssertion{
|
||||
{
|
||||
Query: "select * from dolt_preview_merge_conflicts_summary('main', 'right');",
|
||||
Expected: []sql.Row{{"t", uint64(0), uint64(1)}},
|
||||
Expected: []sql.Row{{"t", nil, uint64(1)}},
|
||||
},
|
||||
{
|
||||
Query: "call dolt_merge('right');",
|
||||
@@ -1801,7 +1801,7 @@ var SchemaChangeTestsTypeChanges = []MergeScriptTest{
|
||||
Assertions: []queries.ScriptTestAssertion{
|
||||
{
|
||||
Query: "select * from dolt_preview_merge_conflicts_summary('main', 'right');",
|
||||
Expected: []sql.Row{{"t", uint64(0), uint64(1)}},
|
||||
Expected: []sql.Row{{"t", nil, uint64(1)}},
|
||||
},
|
||||
{
|
||||
Query: "call dolt_merge('right');",
|
||||
@@ -1831,7 +1831,7 @@ var SchemaChangeTestsTypeChanges = []MergeScriptTest{
|
||||
Assertions: []queries.ScriptTestAssertion{
|
||||
{
|
||||
Query: "select * from dolt_preview_merge_conflicts_summary('main', 'right');",
|
||||
Expected: []sql.Row{{"t", uint64(0), uint64(1)}},
|
||||
Expected: []sql.Row{{"t", nil, uint64(1)}},
|
||||
},
|
||||
{
|
||||
Query: "call dolt_merge('right');",
|
||||
@@ -2048,7 +2048,7 @@ var SchemaChangeTestsSchemaConflicts = []MergeScriptTest{
|
||||
Assertions: []queries.ScriptTestAssertion{
|
||||
{
|
||||
Query: "select * from dolt_preview_merge_conflicts_summary('main', 'right');",
|
||||
Expected: []sql.Row{{"t", uint64(0), uint64(4)}},
|
||||
Expected: []sql.Row{{"t", nil, uint64(4)}},
|
||||
},
|
||||
{
|
||||
Query: "call dolt_merge('right');",
|
||||
@@ -2093,7 +2093,7 @@ var SchemaChangeTestsSchemaConflicts = []MergeScriptTest{
|
||||
Assertions: []queries.ScriptTestAssertion{
|
||||
{
|
||||
Query: "select * from dolt_preview_merge_conflicts_summary('main', 'right');",
|
||||
Expected: []sql.Row{{"t", uint64(0), uint64(7)}},
|
||||
Expected: []sql.Row{{"t", nil, uint64(7)}},
|
||||
},
|
||||
{
|
||||
Query: "call dolt_merge('right');",
|
||||
@@ -2129,7 +2129,7 @@ var SchemaChangeTestsSchemaConflicts = []MergeScriptTest{
|
||||
Assertions: []queries.ScriptTestAssertion{
|
||||
{
|
||||
Query: "select * from dolt_preview_merge_conflicts_summary('main', 'right');",
|
||||
Expected: []sql.Row{{"t", uint64(0), uint64(1)}},
|
||||
Expected: []sql.Row{{"t", nil, uint64(1)}},
|
||||
},
|
||||
{
|
||||
Query: "call dolt_merge('right');",
|
||||
@@ -2162,7 +2162,7 @@ var SchemaChangeTestsSchemaConflicts = []MergeScriptTest{
|
||||
Assertions: []queries.ScriptTestAssertion{
|
||||
{
|
||||
Query: "select * from dolt_preview_merge_conflicts_summary('main', 'right');",
|
||||
Expected: []sql.Row{{"t", uint64(0), uint64(2)}},
|
||||
Expected: []sql.Row{{"t", nil, uint64(2)}},
|
||||
},
|
||||
{
|
||||
Query: "call dolt_merge('right');",
|
||||
@@ -2194,7 +2194,7 @@ var SchemaChangeTestsSchemaConflicts = []MergeScriptTest{
|
||||
Assertions: []queries.ScriptTestAssertion{
|
||||
{
|
||||
Query: "select * from dolt_preview_merge_conflicts_summary('main', 'right');",
|
||||
Expected: []sql.Row{{"t", uint64(0), uint64(1)}},
|
||||
Expected: []sql.Row{{"t", nil, uint64(1)}},
|
||||
},
|
||||
{
|
||||
Query: "call dolt_merge('right');",
|
||||
@@ -2221,7 +2221,7 @@ var SchemaChangeTestsSchemaConflicts = []MergeScriptTest{
|
||||
Assertions: []queries.ScriptTestAssertion{
|
||||
{
|
||||
Query: "select * from dolt_preview_merge_conflicts_summary('main', 'right');",
|
||||
Expected: []sql.Row{{"t", uint64(0), uint64(1)}},
|
||||
Expected: []sql.Row{{"t", nil, uint64(1)}},
|
||||
},
|
||||
{
|
||||
Query: "call dolt_merge('right');",
|
||||
@@ -2250,7 +2250,7 @@ var SchemaChangeTestsSchemaConflicts = []MergeScriptTest{
|
||||
Assertions: []queries.ScriptTestAssertion{
|
||||
{
|
||||
Query: "select * from dolt_preview_merge_conflicts_summary('main', 'right');",
|
||||
Expected: []sql.Row{{"t", uint64(0), uint64(1)}},
|
||||
Expected: []sql.Row{{"t", nil, uint64(1)}},
|
||||
},
|
||||
{
|
||||
Query: "call dolt_merge('right');",
|
||||
@@ -2282,7 +2282,7 @@ var SchemaChangeTestsSchemaConflicts = []MergeScriptTest{
|
||||
Assertions: []queries.ScriptTestAssertion{
|
||||
{
|
||||
Query: "select * from dolt_preview_merge_conflicts_summary('main', 'right');",
|
||||
Expected: []sql.Row{{"t", uint64(0), uint64(1)}},
|
||||
Expected: []sql.Row{{"t", nil, uint64(1)}},
|
||||
},
|
||||
{
|
||||
Query: "call dolt_merge('right');",
|
||||
|
||||
@@ -1046,6 +1046,10 @@ var DoltConflictHandlingTests = []queries.TransactionTest{
|
||||
Query: "/* client b */ call dolt_commit('-am', 'commit on new-branch')",
|
||||
SkipResultsCheck: true,
|
||||
},
|
||||
{
|
||||
Query: "/* client b */ select * from dolt_preview_merge_conflicts_summary('new-branch', 'main')",
|
||||
Expected: []sql.Row{{"test", uint64(1), uint64(0)}},
|
||||
},
|
||||
{
|
||||
Query: "/* client b */ call dolt_merge('main')",
|
||||
Expected: []sql.Row{{"", 0, 1, "conflicts found"}},
|
||||
@@ -1137,6 +1141,10 @@ var DoltConflictHandlingTests = []queries.TransactionTest{
|
||||
Query: "/* client b */ call dolt_commit('-am', 'commit on new-branch')",
|
||||
SkipResultsCheck: true,
|
||||
},
|
||||
{
|
||||
Query: "/* client b */ select * from dolt_preview_merge_conflicts_summary('new-branch', 'main')",
|
||||
Expected: []sql.Row{{"test", uint64(1), uint64(0)}},
|
||||
},
|
||||
{
|
||||
Query: "/* client b */ call dolt_merge('main')",
|
||||
Expected: []sql.Row{{"", 0, 1, "conflicts found"}},
|
||||
@@ -1226,6 +1234,10 @@ var DoltConflictHandlingTests = []queries.TransactionTest{
|
||||
Query: "/* client b */ call dolt_commit('-am', 'commit on new-branch')",
|
||||
SkipResultsCheck: true,
|
||||
},
|
||||
{
|
||||
Query: "/* client b */ select * from dolt_preview_merge_conflicts_summary('new-branch', 'main')",
|
||||
Expected: []sql.Row{{"test", uint64(1), uint64(0)}},
|
||||
},
|
||||
{
|
||||
Query: "/* client b */ call dolt_merge('main')",
|
||||
Expected: []sql.Row{{"", 0, 1, "conflicts found"}},
|
||||
@@ -1459,6 +1471,14 @@ var DoltStoredProcedureTransactionTests = []queries.TransactionTest{
|
||||
Query: "/* client b */ start transaction",
|
||||
Expected: []sql.Row{},
|
||||
},
|
||||
{
|
||||
Query: "/* client b */ select * from dolt_preview_merge_conflicts_summary('main', 'feature-branch')",
|
||||
Expected: []sql.Row{{"test", uint64(1), uint64(0)}},
|
||||
},
|
||||
{
|
||||
Query: "/* client a */ select * from dolt_preview_merge_conflicts_summary('main', 'feature-branch')",
|
||||
Expected: []sql.Row{{"test", uint64(1), uint64(0)}},
|
||||
},
|
||||
{
|
||||
Query: "/* client a */ CALL DOLT_MERGE('feature-branch')",
|
||||
Expected: []sql.Row{{"", 0, 1, "conflicts found"}},
|
||||
@@ -1507,6 +1527,10 @@ var DoltStoredProcedureTransactionTests = []queries.TransactionTest{
|
||||
Query: "/* client a */ SET @@dolt_allow_commit_conflicts = 0",
|
||||
Expected: []sql.Row{{}},
|
||||
},
|
||||
{
|
||||
Query: "/* client a */ select * from dolt_preview_merge_conflicts_summary('main', 'feature-branch')",
|
||||
Expected: []sql.Row{{"test", uint64(1), uint64(0)}},
|
||||
},
|
||||
{
|
||||
Query: "/* client a */ CALL DOLT_MERGE('feature-branch')",
|
||||
ExpectedErrStr: dsess.ErrUnresolvedConflictsAutoCommit.Error(),
|
||||
|
||||
Reference in New Issue
Block a user