diff --git a/go/cmd/dolt/commands/sql.go b/go/cmd/dolt/commands/sql.go index aaa6cc8a2c..3ee89e3960 100644 --- a/go/cmd/dolt/commands/sql.go +++ b/go/cmd/dolt/commands/sql.go @@ -27,6 +27,7 @@ import ( "syscall" "github.com/abiosoft/readline" + "github.com/dolthub/dolt/go/libraries/utils/filesys" sqle "github.com/dolthub/go-mysql-server" "github.com/dolthub/go-mysql-server/auth" "github.com/dolthub/go-mysql-server/sql" @@ -257,17 +258,17 @@ func (cmd SqlCmd) Exec(ctx context.Context, commandStr string, args []string, dE } if multiStatementMode { - verr := execMultiStatements(ctx, dEnv, continueOnError, mrEnv, os.Stdin, format) + verr := execMultiStatements(ctx, dEnv.Config, dEnv.FS, continueOnError, mrEnv, os.Stdin, format) if verr != nil { return HandleVErrAndExitCode(verr, usage) } } else if runInBatchMode { - verr := execBatch(ctx, dEnv, continueOnError, mrEnv, os.Stdin, format) + verr := execBatch(ctx, dEnv.Config, dEnv.FS, continueOnError, mrEnv, os.Stdin, format) if verr != nil { return HandleVErrAndExitCode(verr, usage) } } else { - verr := execShell(ctx, dEnv, mrEnv, format) + verr := execShell(ctx, dEnv.Config, dEnv.FS, mrEnv, format) if verr != nil { return HandleVErrAndExitCode(verr, usage) } @@ -290,11 +291,7 @@ func listSavedQueriesMode(ctx context.Context, initialRoots map[string]*doltdb.R } query := "SELECT * FROM " + doltdb.DoltQueryCatalogTableName - verr := execQuery(ctx, dEnv, mrEnv, query, format) - if verr != nil { - return HandleVErrAndExitCode(verr, usage) - } - return 0 + return HandleVErrAndExitCode(execQuery(ctx, dEnv.Config, dEnv.FS, mrEnv, query, format), usage) } func savedQueryMode(ctx context.Context, initialRoots map[string]*doltdb.RootValue, currentDb string, savedQueryName string, usage cli.UsagePrinter, dEnv *env.DoltEnv, mrEnv *env.MultiRepoEnv, format resultFormat) int { @@ -305,12 +302,7 @@ func savedQueryMode(ctx context.Context, initialRoots map[string]*doltdb.RootVal } cli.PrintErrf("Executing saved query '%s':\n%s\n", savedQueryName, sq.Query) - verr := execQuery(ctx, dEnv, mrEnv, sq.Query, format) - if verr != nil { - return HandleVErrAndExitCode(verr, usage) - } - - return 0 + return HandleVErrAndExitCode(execQuery(ctx, dEnv.Config, dEnv.FS, mrEnv, sq.Query, format), usage) } func queryMode(ctx context.Context, dEnv *env.DoltEnv, apr *argparser.ArgParseResults, query string, continueOnError bool, mrEnv *env.MultiRepoEnv, format resultFormat, usage cli.UsagePrinter, initialRoots map[string]*doltdb.RootValue, currentDb string) int { @@ -319,18 +311,18 @@ func queryMode(ctx context.Context, dEnv *env.DoltEnv, apr *argparser.ArgParseRe if multiStatementMode { batchInput := strings.NewReader(query) - verr := execMultiStatements(ctx, dEnv, continueOnError, mrEnv, batchInput, format) + verr := execMultiStatements(ctx, dEnv.Config, dEnv.FS, continueOnError, mrEnv, batchInput, format) if verr != nil { return HandleVErrAndExitCode(verr, usage) } } else if batchMode { batchInput := strings.NewReader(query) - verr := execBatch(ctx, dEnv, continueOnError, mrEnv, batchInput, format) + verr := execBatch(ctx, dEnv.Config, dEnv.FS, continueOnError, mrEnv, batchInput, format) if verr != nil { return HandleVErrAndExitCode(verr, usage) } } else { - verr := execQuery(ctx, dEnv, mrEnv, query, format) + verr := execQuery(ctx, dEnv.Config, dEnv.FS, mrEnv, query, format) if verr != nil { return HandleVErrAndExitCode(verr, usage) } @@ -379,7 +371,8 @@ func getMultiRepoEnv(ctx context.Context, apr *argparser.ArgParseResults, dEnv * func execShell( ctx context.Context, - dEnv *env.DoltEnv, + config *env.DoltCliConfig, + fs filesys.Filesys, mrEnv *env.MultiRepoEnv, format resultFormat, ) errhand.VerboseError { @@ -387,7 +380,7 @@ func execShell( if err != nil { return errhand.VerboseErrorFromError(err) } - se, err := newSqlEngine(ctx, dEnv, format, dbs...) + se, err := newSqlEngine(ctx, config, fs, format, dbs...) if err != nil { return errhand.VerboseErrorFromError(err) } @@ -401,7 +394,8 @@ func execShell( func execBatch( ctx context.Context, - dEnv *env.DoltEnv, + config *env.DoltCliConfig, + fs filesys.Filesys, continueOnErr bool, mrEnv *env.MultiRepoEnv, batchInput io.Reader, @@ -412,7 +406,7 @@ func execBatch( return errhand.VerboseErrorFromError(err) } - se, err := newSqlEngine(ctx, dEnv, format, dbs...) + se, err := newSqlEngine(ctx, config, fs, format, dbs...) if err != nil { return errhand.VerboseErrorFromError(err) } @@ -445,7 +439,8 @@ func execBatch( func execMultiStatements( ctx context.Context, - dEnv *env.DoltEnv, + config *env.DoltCliConfig, + fs filesys.Filesys, continueOnErr bool, mrEnv *env.MultiRepoEnv, batchInput io.Reader, @@ -455,7 +450,7 @@ func execMultiStatements( if err != nil { return errhand.VerboseErrorFromError(err) } - se, err := newSqlEngine(ctx, dEnv, format, dbs...) + se, err := newSqlEngine(ctx, config, fs, format, dbs...) if err != nil { return errhand.VerboseErrorFromError(err) } @@ -483,7 +478,8 @@ func newDatabase(name string, dEnv *env.DoltEnv) dsqle.Database { func execQuery( ctx context.Context, - dEnv *env.DoltEnv, + config *env.DoltCliConfig, + fs filesys.Filesys, mrEnv *env.MultiRepoEnv, query string, format resultFormat, @@ -492,7 +488,7 @@ func execQuery( if err != nil { return errhand.VerboseErrorFromError(err) } - se, err := newSqlEngine(ctx, dEnv, format, dbs...) + se, err := newSqlEngine(ctx, config, fs, format, dbs...) if err != nil { return errhand.VerboseErrorFromError(err) } @@ -1443,7 +1439,8 @@ var ErrDBNotFoundKind = errors.NewKind("database '%s' not found") // sqlEngine packages up the context necessary to run sql queries against sqle. func newSqlEngine( ctx context.Context, - dEnv *env.DoltEnv, + config *env.DoltCliConfig, + fs filesys.Filesys, format resultFormat, dbs ...dsqle.SqlDatabase, ) (*sqlEngine, error) { @@ -1454,7 +1451,7 @@ func newSqlEngine( infoDB := information_schema.NewInformationSchemaDatabase() all := append(dsqleDBsAsSqlDBs(dbs), infoDB) - pro := dsqle.NewDoltDatabaseProvider(dEnv.Config, dEnv.FS, all...) + pro := dsqle.NewDoltDatabaseProvider(config, fs, all...) engine := sqle.New(analyzer.NewBuilder(pro).WithParallelism(parallelism).Build(), &sqle.Config{Auth: au}) @@ -1479,7 +1476,7 @@ func newSqlEngine( } // TODO: not having user and email for this command should probably be an error or warning, it disables certain functionality - sess, err := dsess.NewDoltSession(sql.NewEmptyContext(), sql.NewBaseSession(), pro, dEnv.Config, dbStates...) + sess, err := dsess.NewDoltSession(sql.NewEmptyContext(), sql.NewBaseSession(), pro, config, dbStates...) if err != nil { return nil, err }