Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions go/cmd/dolt/commands/sql.go
Original file line number Diff line number Diff line change
Expand Up @@ -841,7 +841,9 @@ func execShell(sqlCtx *sql.Context, qryist cli.Queryist, format engine.PrintResu
sqlStmt, err := sqlparser.Parse(query)
// silently skip empty statements
if err == nil || err == sqlparser.ErrEmpty {
sqlSch, rowIter, _, err := processParsedQuery(sqlCtx, query, qryist, sqlStmt)
var sqlSch sql.Schema
var rowIter sql.RowIter
sqlSch, rowIter, _, err = processParsedQuery(sqlCtx, query, qryist, sqlStmt)
if err != nil {
verr := formatQueryError("", err)
shell.Println(verr.Verbose())
Expand All @@ -852,13 +854,16 @@ func execShell(sqlCtx *sql.Context, qryist cli.Queryist, format engine.PrintResu
default:
err = engine.PrettyPrintResults(sqlCtx, closureFormat, sqlSch, rowIter, pagerEnabled, toggleWarnings, true, binaryAsHex)
}
if err != nil {
verr := formatQueryError("", err)
shell.Println(verr.Verbose())
}
} else {
if _, isUseStmt := sqlStmt.(*sqlparser.Use); isUseStmt {
cli.Println("Database Changed")
}
}
}
if err != nil {
} else {
shell.Println(color.RedString(err.Error()))
}
}
Expand Down
17 changes: 17 additions & 0 deletions integration-tests/bats/sql-shell-error.expect
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/usr/bin/expect

set timeout 5
set env(NO_COLOR) 1

source "$env(BATS_CWD)/helper/common_expect_functions.tcl"

spawn dolt sql

expect_with_defaults {dolt-repo-[0-9]+/main\*> } { send "SELECT DOES_NOT_EXIST();\r" }

expect_with_defaults_2 "function: 'does_not_exist' not found\r" {dolt-repo-[0-9]+/main\*> } { send "SELECT JSON_PRETTY(\"INVALID\");\r" }

expect_with_defaults_2 "Invalid JSON text in argument 1 to function json_pretty: \"INVALID\"\r" {dolt-repo-[0-9]+/main\*> } { send "quit\r" }

expect eof
exit
10 changes: 10 additions & 0 deletions integration-tests/bats/sql-shell.bats
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,16 @@ teardown() {
[ "$status" -eq 0 ]
}

# bats test_tags=no_lambda
@test "sql-shell: Query errors are printed in interactive shell" {
skiponwindows "Need to install expect and make this script work on windows."
if [ "$SQL_ENGINE" = "remote-engine" ]; then
skip "shell on server returns Empty Set instead of OkResult"
fi
run $BATS_TEST_DIRNAME/sql-shell-error.expect
[ "$status" -eq 0 ]
}

# bats test_tags=no_lambda
@test "sql-shell: database changed is printed in interactive shell" {
skiponwindows "Need to install expect and make this script work on windows."
Expand Down
Loading