More refactoring

This commit is contained in:
Zach Musgrave
2021-11-04 08:56:34 -07:00
parent 7857966984
commit dd120d83a1

View File

@@ -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
}