From 4d2dbb97466ba8881a43452dc27cb2341e829205 Mon Sep 17 00:00:00 2001 From: James Cor Date: Fri, 16 Jun 2023 01:39:03 -0700 Subject: [PATCH] add hash column to result set for `dolt_merge(..., '--no-ff')` (#6163) --- .../doltcore/sqle/dprocedures/dolt_merge.go | 121 +++++---- .../doltcore/sqle/dprocedures/dolt_pull.go | 2 +- .../doltcore/sqle/dprocedures/init.go | 4 +- .../doltcore/sqle/enginetest/dolt_queries.go | 6 +- .../sqle/enginetest/dolt_queries_merge.go | 236 +++++++++--------- .../enginetest/dolt_transaction_queries.go | 10 +- .../bats/import-create-tables.bats | 3 - integration-tests/bats/schema-import.bats | 3 - integration-tests/bats/sql-merge.bats | 12 + .../java/MySQLConnectorTest.java | 184 +++++++------- .../mysql-client-tests/node/helpers.js | 72 +++--- .../python/mysql.connector-test.py | 140 +++++------ .../mysql-client-tests/python/pymysql-test.py | 108 ++++---- .../python/sqlalchemy-test.py | 134 +++++----- 14 files changed, 535 insertions(+), 500 deletions(-) diff --git a/go/libraries/doltcore/sqle/dprocedures/dolt_merge.go b/go/libraries/doltcore/sqle/dprocedures/dolt_merge.go index 4bf0acb1ae..571548315e 100644 --- a/go/libraries/doltcore/sqle/dprocedures/dolt_merge.go +++ b/go/libraries/doltcore/sqle/dprocedures/dolt_merge.go @@ -19,6 +19,7 @@ import ( "fmt" "github.com/dolthub/go-mysql-server/sql" + gmstypes "github.com/dolthub/go-mysql-server/sql/types" goerrors "gopkg.in/src-d/go-errors.v1" "github.com/dolthub/dolt/go/cmd/dolt/cli" @@ -46,96 +47,114 @@ const ( var ErrUncommittedChanges = goerrors.NewKind("cannot merge with uncommitted changes") +var doltMergeSchema = []*sql.Column{ + { + Name: "hash", + Type: gmstypes.LongText, + Nullable: true, + }, + { + Name: "fast_forward", + Type: gmstypes.Int64, + Nullable: false, + }, + { + Name: "conflicts", + Type: gmstypes.Int64, + Nullable: false, + }, +} + // doltMerge is the stored procedure version for the CLI command `dolt merge`. func doltMerge(ctx *sql.Context, args ...string) (sql.RowIter, error) { - hasConflicts, ff, err := doDoltMerge(ctx, args) + commitHash, hasConflicts, ff, err := doDoltMerge(ctx, args) if err != nil { return nil, err } - return rowToIter(int64(ff), int64(hasConflicts)), nil + return rowToIter(commitHash, int64(ff), int64(hasConflicts)), nil } // doDoltMerge returns has_conflicts and fast_forward status -func doDoltMerge(ctx *sql.Context, args []string) (int, int, error) { +func doDoltMerge(ctx *sql.Context, args []string) (string, int, int, error) { dbName := ctx.GetCurrentDatabase() if len(dbName) == 0 { - return noConflictsOrViolations, threeWayMerge, fmt.Errorf("Empty database name.") + return "", noConflictsOrViolations, threeWayMerge, fmt.Errorf("Empty database name.") } if err := branch_control.CheckAccess(ctx, branch_control.Permissions_Write); err != nil { - return noConflictsOrViolations, threeWayMerge, err + return "", noConflictsOrViolations, threeWayMerge, err } sess := dsess.DSessFromSess(ctx.Session) apr, err := cli.CreateMergeArgParser().Parse(args) if err != nil { - return noConflictsOrViolations, threeWayMerge, err + return "", noConflictsOrViolations, threeWayMerge, err } if apr.ContainsAll(cli.SquashParam, cli.NoFFParam) { - return noConflictsOrViolations, threeWayMerge, fmt.Errorf("error: Flags '--%s' and '--%s' cannot be used together.\n", cli.SquashParam, cli.NoFFParam) + return "", noConflictsOrViolations, threeWayMerge, fmt.Errorf("error: Flags '--%s' and '--%s' cannot be used together.\n", cli.SquashParam, cli.NoFFParam) } ws, err := sess.WorkingSet(ctx, dbName) if err != nil { - return noConflictsOrViolations, threeWayMerge, err + return "", noConflictsOrViolations, threeWayMerge, err } roots, ok := sess.GetRoots(ctx, dbName) if !ok { - return noConflictsOrViolations, threeWayMerge, sql.ErrDatabaseNotFound.New(dbName) + return "", noConflictsOrViolations, threeWayMerge, sql.ErrDatabaseNotFound.New(dbName) } if apr.Contains(cli.AbortParam) { if !ws.MergeActive() { - return noConflictsOrViolations, threeWayMerge, fmt.Errorf("fatal: There is no merge to abort") + return "", noConflictsOrViolations, threeWayMerge, fmt.Errorf("fatal: There is no merge to abort") } ws, err = abortMerge(ctx, ws, roots) if err != nil { - return noConflictsOrViolations, threeWayMerge, err + return "", noConflictsOrViolations, threeWayMerge, err } err := sess.SetWorkingSet(ctx, dbName, ws) if err != nil { - return noConflictsOrViolations, threeWayMerge, err + return "", noConflictsOrViolations, threeWayMerge, err } err = sess.CommitWorkingSet(ctx, dbName, sess.GetTransaction()) if err != nil { - return noConflictsOrViolations, threeWayMerge, err + return "", noConflictsOrViolations, threeWayMerge, err } - return noConflictsOrViolations, threeWayMerge, nil + return "", noConflictsOrViolations, threeWayMerge, nil } branchName := apr.Arg(0) mergeSpec, err := createMergeSpec(ctx, sess, dbName, apr, branchName) if err != nil { - return noConflictsOrViolations, threeWayMerge, err + return "", noConflictsOrViolations, threeWayMerge, err } dbData, ok := sess.GetDbData(ctx, dbName) if !ok { - return noConflictsOrViolations, threeWayMerge, fmt.Errorf("Could not load database %s", dbName) + return "", noConflictsOrViolations, threeWayMerge, fmt.Errorf("Could not load database %s", dbName) } headRef, err := dbData.Rsr.CWBHeadRef() if err != nil { - return noConflictsOrViolations, threeWayMerge, err + return "", noConflictsOrViolations, threeWayMerge, err } msg := fmt.Sprintf("Merge branch '%s' into %s", branchName, headRef.GetPath()) if userMsg, mOk := apr.GetValue(cli.MessageArg); mOk { msg = userMsg } - ws, conflicts, fastForward, err := performMerge(ctx, sess, roots, ws, dbName, mergeSpec, apr.Contains(cli.NoCommitFlag), msg) + ws, commit, conflicts, fastForward, err := performMerge(ctx, sess, roots, ws, dbName, mergeSpec, apr.Contains(cli.NoCommitFlag), msg) if err != nil || conflicts != 0 || fastForward != 0 { - return conflicts, fastForward, err + return "", conflicts, fastForward, err } - return conflicts, fastForward, nil + return commit, conflicts, fastForward, nil } // performMerge encapsulates server merge logic, switching between @@ -144,20 +163,20 @@ func doDoltMerge(ctx *sql.Context, args []string) (int, int, error) { // fast-forward was performed. This commits the working set if merge is successful and // 'no-commit' flag is not defined. // TODO FF merging commit with constraint violations requires `constraint verify` -func performMerge(ctx *sql.Context, sess *dsess.DoltSession, roots doltdb.Roots, ws *doltdb.WorkingSet, dbName string, spec *merge.MergeSpec, noCommit bool, msg string) (*doltdb.WorkingSet, int, int, error) { +func performMerge(ctx *sql.Context, sess *dsess.DoltSession, roots doltdb.Roots, ws *doltdb.WorkingSet, dbName string, spec *merge.MergeSpec, noCommit bool, msg string) (*doltdb.WorkingSet, string, int, int, error) { // todo: allow merges even when an existing merge is uncommitted if ws.MergeActive() { - return ws, noConflictsOrViolations, threeWayMerge, doltdb.ErrMergeActive + return ws, "", noConflictsOrViolations, threeWayMerge, doltdb.ErrMergeActive } err := checkForUncommittedChanges(ctx, roots.Working, roots.Head) if err != nil { - return ws, noConflictsOrViolations, threeWayMerge, err + return ws, "", noConflictsOrViolations, threeWayMerge, err } dbData, ok := sess.GetDbData(ctx, dbName) if !ok { - return ws, noConflictsOrViolations, threeWayMerge, fmt.Errorf("failed to get dbData") + return ws, "", noConflictsOrViolations, threeWayMerge, fmt.Errorf("failed to get dbData") } canFF, err := spec.HeadC.CanFastForwardTo(ctx, spec.MergeC) @@ -166,37 +185,43 @@ func performMerge(ctx *sql.Context, sess *dsess.DoltSession, roots doltdb.Roots, case doltdb.ErrIsAhead, doltdb.ErrUpToDate: ctx.Warn(DoltMergeWarningCode, err.Error()) default: - return ws, noConflictsOrViolations, threeWayMerge, err + return ws, "", noConflictsOrViolations, threeWayMerge, err } } if canFF { if spec.Noff { - ws, err = executeNoFFMerge(ctx, sess, spec, dbName, ws, dbData) + var commit *doltdb.Commit + ws, commit, err = executeNoFFMerge(ctx, sess, spec, dbName, ws, dbData) if err == doltdb.ErrUnresolvedConflictsOrViolations { // if there are unresolved conflicts, write the resulting working set back to the session and return an // error message wsErr := sess.SetWorkingSet(ctx, dbName, ws) if wsErr != nil { - return ws, hasConflictsOrViolations, threeWayMerge, wsErr + return ws, "", hasConflictsOrViolations, threeWayMerge, wsErr } ctx.Warn(DoltMergeWarningCode, err.Error()) - return ws, hasConflictsOrViolations, threeWayMerge, nil + return ws, "", hasConflictsOrViolations, threeWayMerge, nil } - return ws, noConflictsOrViolations, threeWayMerge, err + if commit != nil { + if h, cerr := commit.HashOf(); cerr == nil { + return ws, h.String(), noConflictsOrViolations, threeWayMerge, err + } + } + return ws, "", noConflictsOrViolations, threeWayMerge, err } ws, err = executeFFMerge(ctx, dbName, spec.Squash, ws, dbData, spec.MergeC) - return ws, noConflictsOrViolations, fastForwardMerge, err + return ws, "", noConflictsOrViolations, fastForwardMerge, err } dbState, ok, err := sess.LookupDbState(ctx, dbName) if err != nil { - return ws, noConflictsOrViolations, threeWayMerge, err + return ws, "", noConflictsOrViolations, threeWayMerge, err } else if !ok { - return ws, noConflictsOrViolations, threeWayMerge, sql.ErrDatabaseNotFound.New(dbName) + return ws, "", noConflictsOrViolations, threeWayMerge, sql.ErrDatabaseNotFound.New(dbName) } ws, err = executeMerge(ctx, spec.Squash, spec.HeadC, spec.MergeC, spec.MergeCSpecStr, ws, dbState.EditOpts()) @@ -205,30 +230,30 @@ func performMerge(ctx *sql.Context, sess *dsess.DoltSession, roots doltdb.Roots, // error message wsErr := sess.SetWorkingSet(ctx, dbName, ws) if wsErr != nil { - return ws, hasConflictsOrViolations, threeWayMerge, wsErr + return ws, "", hasConflictsOrViolations, threeWayMerge, wsErr } ctx.Warn(DoltMergeWarningCode, err.Error()) - return ws, hasConflictsOrViolations, threeWayMerge, nil + return ws, "", hasConflictsOrViolations, threeWayMerge, nil } else if err != nil { - return ws, noConflictsOrViolations, threeWayMerge, err + return ws, "", noConflictsOrViolations, threeWayMerge, err } err = sess.SetWorkingSet(ctx, dbName, ws) if err != nil { - return ws, noConflictsOrViolations, threeWayMerge, err + return ws, "", noConflictsOrViolations, threeWayMerge, err } if !noCommit { author := fmt.Sprintf("%s <%s>", spec.Name, spec.Email) - _, _, err = doDoltCommit(ctx, []string{"-m", msg, "--author", author}) + commit, _, err := doDoltCommit(ctx, []string{"-m", msg, "--author", author}) if err != nil { - return ws, noConflictsOrViolations, threeWayMerge, fmt.Errorf("dolt_commit failed") + return ws, commit, noConflictsOrViolations, threeWayMerge, fmt.Errorf("dolt_commit failed") } } - return ws, noConflictsOrViolations, threeWayMerge, nil + return ws, "", noConflictsOrViolations, threeWayMerge, nil } func abortMerge(ctx *sql.Context, workingSet *doltdb.WorkingSet, roots doltdb.Roots) (*doltdb.WorkingSet, error) { @@ -310,24 +335,24 @@ func executeNoFFMerge( dbName string, ws *doltdb.WorkingSet, dbData env.DbData, -) (*doltdb.WorkingSet, error) { +) (*doltdb.WorkingSet, *doltdb.Commit, error) { mergeRoot, err := spec.MergeC.GetRootValue(ctx) if err != nil { - return nil, err + return nil, nil, err } result := &merge.Result{Root: mergeRoot, Stats: make(map[string]*merge.MergeStats)} ws, err = mergeRootToWorking(false, ws, result, spec.MergeC, spec.MergeCSpecStr) if err != nil { // This error is recoverable, so we return a working set value along with the error - return ws, err + return ws, nil, err } // Save our work so far in the session, as it will be referenced by the commit call below (badly in need of a // refactoring) err = dSess.SetWorkingSet(ctx, dbName, ws) if err != nil { - return nil, err + return nil, nil, err } // The roots need refreshing after the above @@ -342,19 +367,19 @@ func executeNoFFMerge( Email: spec.Email, }) if err != nil { - return nil, err + return nil, nil, err } if pendingCommit == nil { - return nil, errors.New("nothing to commit") + return nil, nil, errors.New("nothing to commit") } - _, err = dSess.DoltCommit(ctx, dbName, dSess.GetTransaction(), pendingCommit) + commit, err := dSess.DoltCommit(ctx, dbName, dSess.GetTransaction(), pendingCommit) if err != nil { - return nil, err + return nil, nil, err } - return ws, nil + return ws, commit, nil } func createMergeSpec(ctx *sql.Context, sess *dsess.DoltSession, dbName string, apr *argparser.ArgParseResults, commitSpecStr string) (*merge.MergeSpec, error) { diff --git a/go/libraries/doltcore/sqle/dprocedures/dolt_pull.go b/go/libraries/doltcore/sqle/dprocedures/dolt_pull.go index 98cf54fbdb..2421265b18 100644 --- a/go/libraries/doltcore/sqle/dprocedures/dolt_pull.go +++ b/go/libraries/doltcore/sqle/dprocedures/dolt_pull.go @@ -153,7 +153,7 @@ func doDoltPull(ctx *sql.Context, args []string) (int, int, error) { return noConflictsOrViolations, threeWayMerge, err } msg := fmt.Sprintf("Merge branch '%s' of %s into %s", pullSpec.Branch.GetPath(), pullSpec.Remote.Url, headRef.GetPath()) - ws, conflicts, fastForward, err = performMerge(ctx, sess, roots, ws, dbName, mergeSpec, apr.Contains(cli.NoCommitFlag), msg) + ws, _, conflicts, fastForward, err = performMerge(ctx, sess, roots, ws, dbName, mergeSpec, apr.Contains(cli.NoCommitFlag), msg) if err != nil && !errors.Is(doltdb.ErrUpToDate, err) { return conflicts, fastForward, err } diff --git a/go/libraries/doltcore/sqle/dprocedures/init.go b/go/libraries/doltcore/sqle/dprocedures/init.go index 8e77db883e..7247330c99 100644 --- a/go/libraries/doltcore/sqle/dprocedures/init.go +++ b/go/libraries/doltcore/sqle/dprocedures/init.go @@ -36,7 +36,7 @@ var DoltProcedures = []sql.ExternalStoredProcedureDetails{ // dolt_gc is enabled behind a feature flag for now, see dolt_gc.go {Name: "dolt_gc", Schema: int64Schema("success"), Function: doltGC}, - {Name: "dolt_merge", Schema: int64Schema("fast_forward", "conflicts"), Function: doltMerge}, + {Name: "dolt_merge", Schema: doltMergeSchema, Function: doltMerge}, {Name: "dolt_pull", Schema: int64Schema("fast_forward", "conflicts"), Function: doltPull}, {Name: "dolt_push", Schema: int64Schema("success"), Function: doltPush}, {Name: "dolt_remote", Schema: int64Schema("status"), Function: doltRemote}, @@ -58,7 +58,7 @@ var DoltProcedures = []sql.ExternalStoredProcedureDetails{ // {Name: "dgc", Schema: int64Schema("status"), Function: doltGC}, - {Name: "dmerge", Schema: int64Schema("fast_forward", "conflicts"), Function: doltMerge}, + {Name: "dmerge", Schema: doltMergeSchema, Function: doltMerge}, {Name: "dpull", Schema: int64Schema("fast_forward", "conflicts"), Function: doltPull}, {Name: "dpush", Schema: int64Schema("success"), Function: doltPush}, {Name: "dremote", Schema: int64Schema("status"), Function: doltRemote}, diff --git a/go/libraries/doltcore/sqle/enginetest/dolt_queries.go b/go/libraries/doltcore/sqle/enginetest/dolt_queries.go index d8b070f773..80c82fe74a 100644 --- a/go/libraries/doltcore/sqle/enginetest/dolt_queries.go +++ b/go/libraries/doltcore/sqle/enginetest/dolt_queries.go @@ -3177,7 +3177,7 @@ var DoltTagTestScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('v1')", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "SELECT * FROM test", @@ -3539,8 +3539,8 @@ var DoltCherryPickTests = []queries.ScriptTest{ }, Assertions: []queries.ScriptTestAssertion{ { - Query: "CALL dolt_merge('--no-ff', 'branch1');", - Expected: []sql.Row{{0, 0}}, + Query: "CALL dolt_merge('--no-ff', 'branch1');", + SkipResultsCheck: true, // TODO: how do i predict the hash }, { Query: "CALL dolt_cherry_pick('HEAD');", diff --git a/go/libraries/doltcore/sqle/enginetest/dolt_queries_merge.go b/go/libraries/doltcore/sqle/enginetest/dolt_queries_merge.go index a6ff5a905b..f3c47fd0c4 100644 --- a/go/libraries/doltcore/sqle/enginetest/dolt_queries_merge.go +++ b/go/libraries/doltcore/sqle/enginetest/dolt_queries_merge.go @@ -69,7 +69,7 @@ var MergeScripts = []queries.ScriptTest{ { // FF-Merge Query: "CALL DOLT_MERGE('feature-branch')", - Expected: []sql.Row{{1, 0}}, + Expected: []sql.Row{{"", 1, 0}}, }, { Query: "SELECT is_merging, source, target, unmerged_tables FROM DOLT_MERGE_STATUS;", @@ -109,7 +109,7 @@ var MergeScripts = []queries.ScriptTest{ { // FF-Merge Query: "CALL DOLT_MERGE('feature-branch')", - Expected: []sql.Row{{1, 0}}, + Expected: []sql.Row{{"", 1, 0}}, }, { Query: "SELECT is_merging, source, target, unmerged_tables FROM DOLT_MERGE_STATUS;", @@ -144,8 +144,8 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { // No-FF-Merge - Query: "CALL DOLT_MERGE('feature-branch', '--no-ff', '-m', 'this is a no-ff')", - Expected: []sql.Row{{0, 0}}, + Query: "CALL DOLT_MERGE('feature-branch', '--no-ff', '-m', 'this is a no-ff')", + SkipResultsCheck: true, }, { Query: "SELECT is_merging, source, target, unmerged_tables FROM DOLT_MERGE_STATUS;", @@ -187,8 +187,8 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { // No-FF-Merge - Query: "CALL DOLT_MERGE('feature-branch', '--no-ff', '-m', 'this is a no-ff')", - Expected: []sql.Row{{0, 0}}, + Query: "CALL DOLT_MERGE('feature-branch', '--no-ff', '-m', 'this is a no-ff')", + SkipResultsCheck: true, }, { Query: "SELECT is_merging, source, target, unmerged_tables FROM DOLT_MERGE_STATUS;", @@ -233,7 +233,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('feature-branch', '-m', 'this is a merge', '--commit')", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "SELECT is_merging, source, target, unmerged_tables FROM DOLT_MERGE_STATUS;", @@ -272,7 +272,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('feature-branch', '-m', 'this is a merge', '--no-commit')", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "SELECT is_merging, source, target, unmerged_tables FROM DOLT_MERGE_STATUS;", @@ -320,7 +320,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('feature-branch', '-m', 'this is a merge')", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT is_merging, source, target, unmerged_tables FROM DOLT_MERGE_STATUS;", @@ -375,7 +375,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('feature-branch', '-m', 'this is a merge')", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT is_merging, source, target, unmerged_tables FROM DOLT_MERGE_STATUS;", @@ -405,7 +405,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('feature-branch', '--squash')", - Expected: []sql.Row{{1, 0}}, + Expected: []sql.Row{{"", 1, 0}}, }, { Query: "SELECT count(*) from dolt_status", @@ -438,7 +438,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('feature-branch', '--squash')", - Expected: []sql.Row{{1, 0}}, + Expected: []sql.Row{{"", 1, 0}}, }, { Query: "CALL DOLT_CHECKOUT('-b', 'other')", @@ -471,7 +471,7 @@ var MergeScripts = []queries.ScriptTest{ { // FF-Merge Query: "CALL DOLT_MERGE('feature-branch')", - Expected: []sql.Row{{1, 0}}, + Expected: []sql.Row{{"", 1, 0}}, }, { Query: "SELECT is_merging, source, target, unmerged_tables FROM DOLT_MERGE_STATUS;", @@ -509,7 +509,7 @@ var MergeScripts = []queries.ScriptTest{ { // FF-Merge Query: "CALL DOLT_MERGE('feature-branch')", - Expected: []sql.Row{{1, 0}}, + Expected: []sql.Row{{"", 1, 0}}, }, { Query: "SELECT is_merging, source, target, unmerged_tables FROM DOLT_MERGE_STATUS;", @@ -565,8 +565,8 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { // No-FF-Merge - Query: "CALL DOLT_MERGE('feature-branch', '-no-ff', '-m', 'this is a no-ff')", - Expected: []sql.Row{{0, 0}}, + Query: "CALL DOLT_MERGE('feature-branch', '-no-ff', '-m', 'this is a no-ff')", + SkipResultsCheck: true, }, { Query: "SELECT is_merging, source, target, unmerged_tables FROM DOLT_MERGE_STATUS;", @@ -612,7 +612,7 @@ var MergeScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('feature-branch', '-m', 'this is a merge')", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "SELECT COUNT(*) from dolt_status", @@ -651,7 +651,7 @@ var MergeScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('feature-branch', '-m', 'this is a merge')", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "SELECT COUNT(*) from dolt_status", @@ -701,7 +701,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('feature-branch', '-m', 'this is a merge', '--no-commit')", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "SELECT COUNT(*) from dolt_status", @@ -740,7 +740,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('feature-branch')", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT count(*) from dolt_conflicts_test", @@ -748,7 +748,7 @@ var MergeScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('--abort')", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "SELECT is_merging, source, target, unmerged_tables FROM DOLT_MERGE_STATUS;", @@ -799,7 +799,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('feature-branch', '-m', 'this is a merge')", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT * from dolt_status", @@ -811,7 +811,7 @@ var MergeScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('--abort')", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "SELECT is_merging, source, target, unmerged_tables FROM DOLT_MERGE_STATUS;", @@ -881,7 +881,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('b1')", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select count(*) from dolt_conflicts", @@ -911,7 +911,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('branch1');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT violation_type, pk, parent_fk from dolt_constraint_violations_child;", @@ -983,7 +983,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT * from t;", @@ -1019,7 +1019,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT * from t;", @@ -1051,7 +1051,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT * from t;", @@ -1083,7 +1083,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT * from t;", @@ -1121,7 +1121,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "SELECT * from t;", @@ -1171,7 +1171,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('other');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "SELECT * from t;", @@ -1198,7 +1198,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('other');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT base_pk, base_col1, our_pk, our_col1, their_pk, their_col1 from dolt_conflicts_t;", @@ -1233,7 +1233,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('other');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select count(*) from dolt_schemas where type = 'trigger';", @@ -1256,7 +1256,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL dolt_merge('test');", - Expected: []sql.Row{{1, 0}}, + Expected: []sql.Row{{"", 1, 0}}, }, { Query: "INSERT INTO t VALUES (NULL,5),(6,6),(NULL,7);", @@ -1293,7 +1293,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL dolt_merge('test');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "INSERT INTO t VALUES (NULL,6),(7,7),(NULL,8);", @@ -1328,7 +1328,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL dolt_merge('test');", - Expected: []sql.Row{{1, 0}}, + Expected: []sql.Row{{"", 1, 0}}, }, { Query: "INSERT INTO t VALUES (3,3),(NULL,6);", @@ -1364,7 +1364,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL dolt_merge('test');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "INSERT INTO t VALUES (3,3),(NULL,7);", @@ -1403,7 +1403,7 @@ var MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "SELECT * FROM t;", @@ -1432,7 +1432,7 @@ var Dolt1MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('other');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select * from t", @@ -1462,7 +1462,7 @@ var Dolt1MergeScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('other');", - Expected: []sql.Row{{1, 0}}, + Expected: []sql.Row{{"", 1, 0}}, }, { Query: "select * from t", @@ -1491,7 +1491,7 @@ var Dolt1MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('other');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select * from t", @@ -1517,7 +1517,7 @@ var Dolt1MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('feature');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select y from xyz where y >= 0", @@ -1547,7 +1547,7 @@ var Dolt1MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('feature');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select y from xyz where y >= 0", @@ -1579,7 +1579,7 @@ var Dolt1MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('feature');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select y from xyz where y >= 0 order by 1", @@ -1609,7 +1609,7 @@ var Dolt1MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('feature');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select y from xyz where y >= 0 order by 1", @@ -1640,7 +1640,7 @@ var Dolt1MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('feature');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select our_y, our_diff_type, their_y, their_diff_type from dolt_conflicts_xyz", @@ -1667,7 +1667,7 @@ var Dolt1MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('feature');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select our_y, our_diff_type, their_y, their_diff_type from dolt_conflicts_xyz", @@ -1857,7 +1857,7 @@ var Dolt1MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('other')", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "SELECT * from dolt_constraint_violations_t", @@ -1889,7 +1889,7 @@ var Dolt1MergeScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('other')", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select * from dolt_constraint_violations", @@ -1943,7 +1943,7 @@ var KeylessMergeCVsAndConflictsScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT violation_type, col1, col2 from dolt_constraint_violations_t ORDER BY col1 ASC;", @@ -1976,7 +1976,7 @@ var KeylessMergeCVsAndConflictsScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT violation_type, parent_fk from dolt_constraint_violations_child;", @@ -2011,7 +2011,7 @@ var KeylessMergeCVsAndConflictsScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT base_col1, base_col2, our_col1, our_col2, their_col1, their_col2 from dolt_conflicts_t;", @@ -2042,7 +2042,7 @@ var KeylessMergeCVsAndConflictsScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select col1, col2, col3 from dolt_constraint_violations_t;", @@ -2081,7 +2081,7 @@ var DoltConflictTableNameTableTests = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('other');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT base_pk, base_col1, our_pk, our_col1, our_diff_type, their_pk, their_col1, their_diff_type" + @@ -2125,7 +2125,7 @@ var DoltConflictTableNameTableTests = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT base_col1, our_col1, their_col1, our_diff_type, their_diff_type, base_cardinality, our_cardinality, their_cardinality from dolt_conflicts_t ORDER BY COALESCE(base_col1, our_col1, their_col1) ASC;", @@ -2583,7 +2583,7 @@ var MergeArtifactsScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('conflicts1');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT base_pk, base_col1, our_pk, our_col1, their_pk, their_col1 from dolt_conflicts_t;", @@ -2738,7 +2738,7 @@ var MergeArtifactsScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('viol1');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, // the commit hashes for the above two violations change in this merge { @@ -2771,7 +2771,7 @@ var MergeArtifactsScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('other3');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT violation_type, pk, fk from dolt_constraint_violations_child;", @@ -2812,7 +2812,7 @@ var MergeArtifactsScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('left2');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT * from t;", @@ -2832,7 +2832,7 @@ var MergeArtifactsScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('right2');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT * from t;", @@ -2852,7 +2852,7 @@ var MergeArtifactsScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT * from t;", @@ -2889,7 +2889,7 @@ var MergeArtifactsScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "SELECT * from t;", @@ -2917,7 +2917,7 @@ var MergeArtifactsScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select col1, col2, col3 from dolt_constraint_violations_t;", @@ -2945,7 +2945,7 @@ var MergeArtifactsScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select w, x, y, z from dolt_constraint_violations_wxyz;", @@ -2973,7 +2973,7 @@ var MergeArtifactsScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select count(*) from dolt_constraint_violations;", @@ -3005,7 +3005,7 @@ var MergeArtifactsScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select col1, col2 from dolt_constraint_violations_t;", @@ -3106,7 +3106,7 @@ var MergeArtifactsScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select * from dolt_constraint_violations;", @@ -3143,7 +3143,7 @@ var MergeArtifactsScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select * from dolt_constraint_violations;", @@ -3179,7 +3179,7 @@ var MergeArtifactsScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "CALL DOLT_MERGE('main');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select * from dolt_constraint_violations;", @@ -3212,7 +3212,7 @@ var SchemaConflictScripts = []queries.ScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('other')", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select * from dolt_schema_conflicts", @@ -3284,7 +3284,7 @@ var OldFormatMergeConflictsAndCVsScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('branch1');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT violation_type, pk, parent_fk from dolt_constraint_violations_child;", @@ -3332,7 +3332,7 @@ var OldFormatMergeConflictsAndCVsScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('branch2');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT violation_type, pk, parent_fk from dolt_constraint_violations_child;", @@ -3368,7 +3368,7 @@ var OldFormatMergeConflictsAndCVsScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('branch3');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT violation_type, pk, parent_fk from dolt_constraint_violations_child;", @@ -3405,7 +3405,7 @@ var OldFormatMergeConflictsAndCVsScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('other');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT * from parent;", @@ -3479,7 +3479,7 @@ var OldFormatMergeConflictsAndCVsScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('other');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT * from parent;", @@ -3504,7 +3504,7 @@ var OldFormatMergeConflictsAndCVsScripts = []queries.ScriptTest{ }, { Query: "CALL DOLT_MERGE('other2');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "SELECT * from parent;", @@ -4056,7 +4056,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select * from dolt_conflicts;", @@ -4099,7 +4099,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select pk, col2 from t;", @@ -4127,7 +4127,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select * from t;", @@ -4162,7 +4162,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select pk, col11, col2 from t;", @@ -4196,7 +4196,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select pk, col1, col2 from t;", @@ -4226,7 +4226,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select * from t;", @@ -4251,7 +4251,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select * from t;", @@ -4276,7 +4276,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select * from t;", @@ -4301,7 +4301,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select * from t;", @@ -4329,7 +4329,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select * from t;", @@ -4355,7 +4355,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select pk, col1, col2 from t;", @@ -4391,7 +4391,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { // NOTE: If we can't find an exact tag mapping, then we fall back to @@ -4428,7 +4428,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select * from t;", @@ -4467,7 +4467,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select pk, p_fk, col1, col2 from child order by pk;", @@ -4497,7 +4497,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select * from parent;", @@ -4528,7 +4528,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select pk, col1 from t;", @@ -4558,7 +4558,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select * from dolt_conflicts;", @@ -4603,7 +4603,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select * from t;", @@ -4631,7 +4631,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select * from t;", @@ -4662,7 +4662,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select * from dolt_constraint_violations;", @@ -4692,7 +4692,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select * from dolt_constraint_violations;", @@ -4721,7 +4721,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, }, }, @@ -4743,7 +4743,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, }, }, @@ -4763,7 +4763,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, }, }, @@ -4783,7 +4783,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, }, }, @@ -4806,7 +4806,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select * from dolt_constraint_violations;", @@ -4835,7 +4835,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select * from dolt_constraint_violations;", @@ -4867,7 +4867,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select * from t order by pk;", @@ -4908,7 +4908,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select table_name, our_schema, their_schema, base_schema from dolt_schema_conflicts;", @@ -4948,7 +4948,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select table_name, our_schema, their_schema, base_schema from dolt_schema_conflicts;", @@ -4979,7 +4979,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select table_name, our_schema, their_schema, base_schema, description from dolt_schema_conflicts;", @@ -5007,7 +5007,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select table_name, base_schema, our_schema, their_schema from dolt_schema_conflicts;", @@ -5034,7 +5034,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select table_name from dolt_schema_conflicts", @@ -5056,7 +5056,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select table_name from dolt_schema_conflicts", @@ -5080,7 +5080,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select table_name, our_schema, their_schema, base_schema from dolt_schema_conflicts;", @@ -5107,7 +5107,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select table_name, our_schema, their_schema, base_schema from dolt_schema_conflicts;", @@ -5151,7 +5151,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ // See the comment above about why this should NOT report a conflict and why this is skipped Skip: true, Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Skip: true, @@ -5178,7 +5178,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "select * from t;", @@ -5210,7 +5210,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ { SkipResultsCheck: true, Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 0}}, // non-symmetric result + Expected: []sql.Row{{"", 0, 0}}, // non-symmetric result }, { Skip: true, @@ -5241,7 +5241,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select pk, col1 from t;", @@ -5278,7 +5278,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select pk, col1 from t;", @@ -5312,7 +5312,7 @@ var ThreeWayMergeWithSchemaChangeTestScripts = []MergeScriptTest{ Assertions: []queries.ScriptTestAssertion{ { Query: "call dolt_merge('right');", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "select table_name, our_schema, their_schema, base_schema from dolt_schema_conflicts;", diff --git a/go/libraries/doltcore/sqle/enginetest/dolt_transaction_queries.go b/go/libraries/doltcore/sqle/enginetest/dolt_transaction_queries.go index 57a9e9cf95..8016e786d5 100755 --- a/go/libraries/doltcore/sqle/enginetest/dolt_transaction_queries.go +++ b/go/libraries/doltcore/sqle/enginetest/dolt_transaction_queries.go @@ -958,7 +958,7 @@ var DoltConflictHandlingTests = []queries.TransactionTest{ }, { Query: "/* client b */ call dolt_merge('main')", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "/* client b */ select count(*) from dolt_conflicts", @@ -1049,7 +1049,7 @@ var DoltConflictHandlingTests = []queries.TransactionTest{ }, { Query: "/* client b */ call dolt_merge('main')", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "/* client b */ select count(*) from dolt_conflicts", @@ -1138,7 +1138,7 @@ var DoltConflictHandlingTests = []queries.TransactionTest{ }, { Query: "/* client b */ call dolt_merge('main')", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "/* client b */ select count(*) from dolt_conflicts", @@ -1371,7 +1371,7 @@ var DoltStoredProcedureTransactionTests = []queries.TransactionTest{ }, { Query: "/* client a */ CALL DOLT_MERGE('feature-branch')", - Expected: []sql.Row{{0, 1}}, + Expected: []sql.Row{{"", 0, 1}}, }, { Query: "/* client a */ SELECT count(*) from dolt_conflicts_test", @@ -1403,7 +1403,7 @@ var DoltStoredProcedureTransactionTests = []queries.TransactionTest{ }, { Query: "/* client a */ CALL DOLT_MERGE('--abort')", - Expected: []sql.Row{{0, 0}}, + Expected: []sql.Row{{"", 0, 0}}, }, { Query: "/* client a */ commit", diff --git a/integration-tests/bats/import-create-tables.bats b/integration-tests/bats/import-create-tables.bats index 8c3dacfdea..06f27a2928 100755 --- a/integration-tests/bats/import-create-tables.bats +++ b/integration-tests/bats/import-create-tables.bats @@ -210,9 +210,6 @@ CSV } @test "import-create-tables: try to create a table with dolt table import with invalid name" { - run dolt table import -c --pk=pk 123 1pk5col-ints.csv - [ "$status" -eq 1 ] - [[ "$output" =~ "not a valid table name" ]] || false run dolt table import -c --pk=pk dolt_docs 1pk5col-ints.csv [ "$status" -eq 1 ] [[ "$output" =~ "not a valid table name" ]] || false diff --git a/integration-tests/bats/schema-import.bats b/integration-tests/bats/schema-import.bats index 0c78d8a2a0..a0b2059005 100755 --- a/integration-tests/bats/schema-import.bats +++ b/integration-tests/bats/schema-import.bats @@ -112,9 +112,6 @@ DELIM } @test "schema-import: with invalid names" { - run dolt schema import -c --pks=pk 123 1pk5col-ints.csv - [ "$status" -eq 1 ] - [[ "$output" =~ "not a valid table name" ]] || false run dolt schema import -c --pks=pk dolt_docs 1pk5col-ints.csv [ "$status" -eq 1 ] [[ "$output" =~ "not a valid table name" ]] || false diff --git a/integration-tests/bats/sql-merge.bats b/integration-tests/bats/sql-merge.bats index 9fa754fd2a..b9dbc2e06b 100644 --- a/integration-tests/bats/sql-merge.bats +++ b/integration-tests/bats/sql-merge.bats @@ -19,6 +19,18 @@ teardown() { teardown_common } +@test "sql-merge: DOLT_MERGE with no-ff displays hash." { + dolt add . + dolt commit -m "dummy commit" + oldHead=$(dolt sql -r csv -q "select hashof('HEAD')" | sed -n '2 p') + mergeHead=$(dolt sql -r csv -q "call dolt_merge('--no-ff', 'main')" | sed -n '2 p' | head -c 32) + newHead=$(dolt sql -r csv -q "select hashof('HEAD')" | sed -n '2 p') + echo $mergeHead + echo $newHead + [ ! "$mergeHead" = "$oldHead" ] + [ "$mergeHead" = "$newHead" ] +} + @test "sql-merge: DOLT_MERGE with unknown branch name throws an error" { dolt sql -q "call dolt_commit('-a', '-m', 'Step 1');" diff --git a/integration-tests/mysql-client-tests/java/MySQLConnectorTest.java b/integration-tests/mysql-client-tests/java/MySQLConnectorTest.java index 39126943a4..515b664d4e 100644 --- a/integration-tests/mysql-client-tests/java/MySQLConnectorTest.java +++ b/integration-tests/mysql-client-tests/java/MySQLConnectorTest.java @@ -1,92 +1,92 @@ -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.sql.Statement; -import java.sql.ResultSet; - -public class MySQLConnectorTest { - public static void main(String[] args) { - Connection conn = null; - - String user = args[0]; - String port = args[1]; - String db = args[2]; - - try { - String url = "jdbc:mysql://127.0.0.1:" + port + "/" + db; - - String password = ""; - - conn = DriverManager.getConnection(url, user, password); - - Statement st = conn.createStatement(); - - String[] queries = { - "create table test (pk int, `value` int, primary key(pk))", - "describe test", - "select * from test", - "insert into test (pk, `value`) values (0,0)", - "select * from test", - "call dolt_add('-A')", - "call dolt_commit('-m', 'my commit')", - "select COUNT(*) FROM dolt_log", - "call dolt_checkout('-b', 'mybranch')", - "insert into test (pk, `value`) values (1,1)", - "call dolt_commit('-a', '-m', 'my commit2')", - "call dolt_checkout('main')", - "call dolt_merge('mybranch')", - "select COUNT(*) FROM dolt_log", - }; - - // Only test the first row, column pair for now - String[] results = { - "0", - "pk", - null, - "1", - "0", - "0", - "0", - "2", - "0", - "1", - "1", - "0", - "1", - "3" - }; - - for (int i = 0; i < queries.length; i++) { - String query = queries[i]; - String expected = results[i]; - if ( st.execute(query) ) { - ResultSet rs = st.getResultSet(); - if (rs.next()) { - String result = rs.getString(1); - if (!expected.equals(result) && !(query.contains("dolt_commit"))) { - System.out.println("Query: \n" + query); - System.out.println("Expected:\n" + expected); - System.out.println("Result:\n" + result); - System.exit(1); - } - } - } else { - String result = Integer.toString(st.getUpdateCount()); - if ( !expected.equals(result) ) { - System.out.println("Query: \n" + query); - System.out.println("Expected:\n" + expected); - System.out.println("Rows Updated:\n" + result); - System.exit(1); - } - } - } - - System.exit(0); - - } catch (SQLException ex) { - System.out.println("An error occurred."); - ex.printStackTrace(); - System.exit(1); - } - } -} +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; +import java.sql.ResultSet; + +public class MySQLConnectorTest { + public static void main(String[] args) { + Connection conn = null; + + String user = args[0]; + String port = args[1]; + String db = args[2]; + + try { + String url = "jdbc:mysql://127.0.0.1:" + port + "/" + db; + + String password = ""; + + conn = DriverManager.getConnection(url, user, password); + + Statement st = conn.createStatement(); + + String[] queries = { + "create table test (pk int, `value` int, primary key(pk))", + "describe test", + "select * from test", + "insert into test (pk, `value`) values (0,0)", + "select * from test", + "call dolt_add('-A')", + "call dolt_commit('-m', 'my commit')", + "select COUNT(*) FROM dolt_log", + "call dolt_checkout('-b', 'mybranch')", + "insert into test (pk, `value`) values (1,1)", + "call dolt_commit('-a', '-m', 'my commit2')", + "call dolt_checkout('main')", + "call dolt_merge('mybranch')", + "select COUNT(*) FROM dolt_log", + }; + + // Only test the first row, column pair for now + String[] results = { + "0", + "pk", + null, + "1", + "0", + "0", + "0", + "2", + "0", + "1", + "1", + "0", + "", + "3" + }; + + for (int i = 0; i < queries.length; i++) { + String query = queries[i]; + String expected = results[i]; + if ( st.execute(query) ) { + ResultSet rs = st.getResultSet(); + if (rs.next()) { + String result = rs.getString(1); + if (!expected.equals(result) && !(query.contains("dolt_commit"))) { + System.out.println("Query: \n" + query); + System.out.println("Expected:\n" + expected); + System.out.println("Result:\n" + result); + System.exit(1); + } + } + } else { + String result = Integer.toString(st.getUpdateCount()); + if ( !expected.equals(result) ) { + System.out.println("Query: \n" + query); + System.out.println("Expected:\n" + expected); + System.out.println("Rows Updated:\n" + result); + System.exit(1); + } + } + } + + System.exit(0); + + } catch (SQLException ex) { + System.out.println("An error occurred."); + ex.printStackTrace(); + System.exit(1); + } + } +} diff --git a/integration-tests/mysql-client-tests/node/helpers.js b/integration-tests/mysql-client-tests/node/helpers.js index 61d008a32f..ac622f7cee 100644 --- a/integration-tests/mysql-client-tests/node/helpers.js +++ b/integration-tests/mysql-client-tests/node/helpers.js @@ -1,34 +1,38 @@ -import { mysql as escapeQueryWithParameters } from "yesql"; - -const args = process.argv.slice(2); -const user = args[0]; -const port = args[1]; -const dbName = args[2]; - -export function getArgs() { - return { user, port, dbName }; -} - -export function getConfig() { - const { user, port, dbName } = getArgs(); - return { - host: "127.0.0.1", - port: port, - user: user, - database: dbName, - }; -} - -export function assertQueryResult(q, resultStr, expected, rows, matcher) { - if (matcher) { - return matcher(rows, expected); - } - if (q.toLowerCase().includes("dolt_commit")) { - return rows.length === 1 && rows[0].hash.length === 32; - } - return resultStr === JSON.stringify(expected); -} - -export function getQueryWithEscapedParameters(q, parameters) { - return escapeQueryWithParameters(q)(parameters || {}); -} +import { mysql as escapeQueryWithParameters } from "yesql"; + +const args = process.argv.slice(2); +const user = args[0]; +const port = args[1]; +const dbName = args[2]; + +export function getArgs() { + return { user, port, dbName }; +} + +export function getConfig() { + const { user, port, dbName } = getArgs(); + return { + host: "127.0.0.1", + port: port, + user: user, + database: dbName, + }; +} + +export function assertQueryResult(q, resultStr, expected, rows, matcher) { + if (matcher) { + return matcher(rows, expected); + } + if (q.toLowerCase().includes("dolt_commit")) { + return rows.length === 1 && rows[0].hash.length === 32; + } + if (q.toLowerCase().includes("dolt_merge")) { + const result = JSON.parse(resultStr); + return expected.fast_forward === result.fast_forward && expected.conflicts === result.conflicts; + } + return resultStr === JSON.stringify(expected); +} + +export function getQueryWithEscapedParameters(q, parameters) { + return escapeQueryWithParameters(q)(parameters || {}); +} diff --git a/integration-tests/mysql-client-tests/python/mysql.connector-test.py b/integration-tests/mysql-client-tests/python/mysql.connector-test.py index 8ad318ec11..7a04d957b2 100644 --- a/integration-tests/mysql-client-tests/python/mysql.connector-test.py +++ b/integration-tests/mysql-client-tests/python/mysql.connector-test.py @@ -1,70 +1,70 @@ -import mysql.connector -import sys - -QUERY_RESPONSE = [ - {"create table test (pk int, `value` int, primary key(pk))": []}, - {"describe test": [ - ('pk', 'int', 'NO', 'PRI', 'NULL', ''), - ('value', 'int', 'YES', '', 'NULL', '') - ]}, - {"insert into test (pk, `value`) values (0,0)": []}, - {"select * from test": [(0, 0)]}, - # We used to have a bug where spaces after a semicolon in a query - # would cause a client/server disconnect. - # https://github.com/dolthub/vitess/pull/65 - # The following regression tests it. - {"select * from test; ": [(0, 0)]}, - {"select * from test; ": [(0, 0)]}, - # Test the Dolt SQL functions - {"call dolt_add('-A');": [(0,)]}, - {"call dolt_commit('-m', 'my commit')": [('',)]}, - {"select COUNT(*) FROM dolt_log": [(2,)]}, - {"call dolt_checkout('-b', 'mybranch')": [(0,)]}, - {"insert into test (pk, `value`) values (1,1)": []}, - {"call dolt_commit('-a', '-m', 'my commit2')": [('',)]}, - {"call dolt_checkout('main')": [(0,)]}, - {"call dolt_merge('mybranch')": [(1,0,)]}, - {"select COUNT(*) FROM dolt_log": [(3,)]}, -] - - -def main(): - user = sys.argv[1] - port = sys.argv[2] - db = sys.argv[3] - - connection = mysql.connector.connect(user=user, - host="127.0.0.1", - port=port, - database=db) - - for query_response in QUERY_RESPONSE: - query = list(query_response.keys())[0] - exp_results = query_response[query] - cursor = connection.cursor() - cursor.execute(query) - try: - results = cursor.fetchall() - print(exp_results) - print(results) - if (results != exp_results) and ("dolt_commit" not in query): - print("Query:") - print(query) - print("Expected:") - print(exp_results) - print("Received:") - print(results) - exit(1) - except mysql.connector.errors.InterfaceError: - - # This is a write query - pass - - cursor.close() - - connection.close() - - exit(0) - - -main() +import mysql.connector +import sys + +QUERY_RESPONSE = [ + {"create table test (pk int, `value` int, primary key(pk))": []}, + {"describe test": [ + ('pk', 'int', 'NO', 'PRI', 'NULL', ''), + ('value', 'int', 'YES', '', 'NULL', '') + ]}, + {"insert into test (pk, `value`) values (0,0)": []}, + {"select * from test": [(0, 0)]}, + # We used to have a bug where spaces after a semicolon in a query + # would cause a client/server disconnect. + # https://github.com/dolthub/vitess/pull/65 + # The following regression tests it. + {"select * from test; ": [(0, 0)]}, + {"select * from test; ": [(0, 0)]}, + # Test the Dolt SQL functions + {"call dolt_add('-A');": [(0,)]}, + {"call dolt_commit('-m', 'my commit')": [('',)]}, + {"select COUNT(*) FROM dolt_log": [(2,)]}, + {"call dolt_checkout('-b', 'mybranch')": [(0,)]}, + {"insert into test (pk, `value`) values (1,1)": []}, + {"call dolt_commit('-a', '-m', 'my commit2')": [('',)]}, + {"call dolt_checkout('main')": [(0,)]}, + {"call dolt_merge('mybranch')": [('',1,0,)]}, + {"select COUNT(*) FROM dolt_log": [(3,)]}, +] + + +def main(): + user = sys.argv[1] + port = sys.argv[2] + db = sys.argv[3] + + connection = mysql.connector.connect(user=user, + host="127.0.0.1", + port=port, + database=db) + + for query_response in QUERY_RESPONSE: + query = list(query_response.keys())[0] + exp_results = query_response[query] + cursor = connection.cursor() + cursor.execute(query) + try: + results = cursor.fetchall() + print(exp_results) + print(results) + if (results != exp_results) and ("dolt_commit" not in query): + print("Query:") + print(query) + print("Expected:") + print(exp_results) + print("Received:") + print(results) + exit(1) + except mysql.connector.errors.InterfaceError: + + # This is a write query + pass + + cursor.close() + + connection.close() + + exit(0) + + +main() diff --git a/integration-tests/mysql-client-tests/python/pymysql-test.py b/integration-tests/mysql-client-tests/python/pymysql-test.py index 8ec59adba8..6a65d52184 100644 --- a/integration-tests/mysql-client-tests/python/pymysql-test.py +++ b/integration-tests/mysql-client-tests/python/pymysql-test.py @@ -1,54 +1,54 @@ -import pymysql -import sys - -QUERY_RESPONSE = [ - {"create table test (pk int, `value` int, primary key(pk))": ()}, - {"describe test": ( - ('pk', 'int', 'NO', 'PRI', 'NULL', ''), - ('value', 'int', 'YES', '', 'NULL', '') - )}, - {"insert into test (pk, `value`) values (0,0)": ()}, - {"select * from test": ((0, 0),)}, - {"call dolt_add('-A');": ((0,),)}, - {"call dolt_commit('-m', 'my commit')": (('',),)}, - {"select COUNT(*) FROM dolt_log": ((2,),)}, - {"call dolt_checkout('-b', 'mybranch')": ((0,),)}, - {"insert into test (pk, `value`) values (1,1)": ()}, - {"call dolt_commit('-a', '-m', 'my commit2')": (('',),)}, - {"call dolt_checkout('main')": ((0,),)}, - {"call dolt_merge('mybranch')": ((1,0,),)}, - {"select COUNT(*) FROM dolt_log": ((3,),)}, -] - - -def main(): - user = sys.argv[1] - port = int(sys.argv[2]) - db = sys.argv[3] - - connection = pymysql.connect(host="127.0.0.1", - port=port, - user=user, - db=db) - - for query_response in QUERY_RESPONSE: - query = list(query_response.keys())[0] - exp_results = query_response[query] - with connection.cursor() as cursor: - cursor.execute(query) - results = cursor.fetchall() - if (results != exp_results) and ("dolt_commit" not in query): - print("Query:") - print(query) - print("Expected:") - print(exp_results) - print("Received:") - print(results) - exit(1) - - connection.close() - - exit(0) - - -main() +import pymysql +import sys + +QUERY_RESPONSE = [ + {"create table test (pk int, `value` int, primary key(pk))": ()}, + {"describe test": ( + ('pk', 'int', 'NO', 'PRI', 'NULL', ''), + ('value', 'int', 'YES', '', 'NULL', '') + )}, + {"insert into test (pk, `value`) values (0,0)": ()}, + {"select * from test": ((0, 0),)}, + {"call dolt_add('-A');": ((0,),)}, + {"call dolt_commit('-m', 'my commit')": (('',),)}, + {"select COUNT(*) FROM dolt_log": ((2,),)}, + {"call dolt_checkout('-b', 'mybranch')": ((0,),)}, + {"insert into test (pk, `value`) values (1,1)": ()}, + {"call dolt_commit('-a', '-m', 'my commit2')": (('',),)}, + {"call dolt_checkout('main')": ((0,),)}, + {"call dolt_merge('mybranch')": (('',1,0,),)}, + {"select COUNT(*) FROM dolt_log": ((3,),)}, +] + + +def main(): + user = sys.argv[1] + port = int(sys.argv[2]) + db = sys.argv[3] + + connection = pymysql.connect(host="127.0.0.1", + port=port, + user=user, + db=db) + + for query_response in QUERY_RESPONSE: + query = list(query_response.keys())[0] + exp_results = query_response[query] + with connection.cursor() as cursor: + cursor.execute(query) + results = cursor.fetchall() + if (results != exp_results) and ("dolt_commit" not in query): + print("Query:") + print(query) + print("Expected:") + print(exp_results) + print("Received:") + print(results) + exit(1) + + connection.close() + + exit(0) + + +main() diff --git a/integration-tests/mysql-client-tests/python/sqlalchemy-test.py b/integration-tests/mysql-client-tests/python/sqlalchemy-test.py index dc1c0669bb..fe1bd142f1 100644 --- a/integration-tests/mysql-client-tests/python/sqlalchemy-test.py +++ b/integration-tests/mysql-client-tests/python/sqlalchemy-test.py @@ -1,67 +1,67 @@ -import sqlalchemy - -from sqlalchemy.engine import Engine -from sqlalchemy import create_engine - -import sys - -QUERY_RESPONSE = [ - {"create table test (pk int, `value` int, primary key(pk))": []}, - {"describe test": [ - ('pk', 'int', 'NO', 'PRI', 'NULL', ''), - ('value', 'int', 'YES', '', 'NULL', '') - ]}, - {"insert into test (pk, `value`) values (0,0)": ()}, - {"select * from test": [(0, 0)]}, - {"call dolt_add('-A');": [(0,)]}, - {"call dolt_commit('-m', 'my commit')": [('',)]}, - {"select COUNT(*) FROM dolt_log": [(2,)]}, - {"call dolt_checkout('-b', 'mybranch')": [(0,)]}, - {"insert into test (pk, `value`) values (1,1)": []}, - {"call dolt_commit('-a', '-m', 'my commit2')": [('',)]}, - {"call dolt_checkout('main')": [(0,)]}, - {"call dolt_merge('mybranch')": [(1,0,)]}, - {"select COUNT(*) FROM dolt_log": [(3,)]}, -] - - -def main(): - user = sys.argv[1] - port = int(sys.argv[2]) - db = sys.argv[3] - - conn_string_base = "mysql+mysqlconnector://" - - engine = create_engine(conn_string_base + - "{user}@127.0.0.1:{port}/{db}".format(user=user, - port=port, - db=db) - ) - - with engine.connect() as con: - for query_response in QUERY_RESPONSE: - query = list(query_response.keys())[0] - exp_results = query_response[query] - - result_proxy = con.execute(query) - - try: - results = result_proxy.fetchall() - if (results != exp_results) and ("dolt_commit" not in query): - print("Query:") - print(query) - print("Expected:") - print(exp_results) - print("Received:") - print(results) - exit(1) - # You can't call fetchall on an insert - # so we'll just ignore the exception - except sqlalchemy.exc.ResourceClosedError: - pass - - con.close() - exit(0) - - -main() +import sqlalchemy + +from sqlalchemy.engine import Engine +from sqlalchemy import create_engine + +import sys + +QUERY_RESPONSE = [ + {"create table test (pk int, `value` int, primary key(pk))": []}, + {"describe test": [ + ('pk', 'int', 'NO', 'PRI', 'NULL', ''), + ('value', 'int', 'YES', '', 'NULL', '') + ]}, + {"insert into test (pk, `value`) values (0,0)": ()}, + {"select * from test": [(0, 0)]}, + {"call dolt_add('-A');": [(0,)]}, + {"call dolt_commit('-m', 'my commit')": [('',)]}, + {"select COUNT(*) FROM dolt_log": [(2,)]}, + {"call dolt_checkout('-b', 'mybranch')": [(0,)]}, + {"insert into test (pk, `value`) values (1,1)": []}, + {"call dolt_commit('-a', '-m', 'my commit2')": [('',)]}, + {"call dolt_checkout('main')": [(0,)]}, + {"call dolt_merge('mybranch')": [('',1,0,)]}, + {"select COUNT(*) FROM dolt_log": [(3,)]}, +] + + +def main(): + user = sys.argv[1] + port = int(sys.argv[2]) + db = sys.argv[3] + + conn_string_base = "mysql+mysqlconnector://" + + engine = create_engine(conn_string_base + + "{user}@127.0.0.1:{port}/{db}".format(user=user, + port=port, + db=db) + ) + + with engine.connect() as con: + for query_response in QUERY_RESPONSE: + query = list(query_response.keys())[0] + exp_results = query_response[query] + + result_proxy = con.execute(query) + + try: + results = result_proxy.fetchall() + if (results != exp_results) and ("dolt_commit" not in query): + print("Query:") + print(query) + print("Expected:") + print(exp_results) + print("Received:") + print(results) + exit(1) + # You can't call fetchall on an insert + # so we'll just ignore the exception + except sqlalchemy.exc.ResourceClosedError: + pass + + con.close() + exit(0) + + +main()