Skip to content

Commit 412fe02

Browse files
authored
fix: When both -Q and -q are specified, take -Q input and finish (#547)
1 parent 5f78da8 commit 412fe02

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

cmd/sqlcmd/sqlcmd.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -811,11 +811,11 @@ func run(vars *sqlcmd.Variables, args *SQLCmdArguments) (int, error) {
811811

812812
if err == nil && s.Exitcode == 0 {
813813
once := false
814-
if args.InitialQuery != "" {
815-
s.Query = args.InitialQuery
816-
} else if args.Query != "" {
814+
if args.Query != "" {
817815
once = true
818816
s.Query = args.Query
817+
} else if args.InitialQuery != "" {
818+
s.Query = args.InitialQuery
819819
}
820820
iactive := args.InputFile == nil && args.Query == ""
821821
if iactive || s.Query != "" {

cmd/sqlcmd/sqlcmd_test.go

+28
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,34 @@ func TestQueryAndExit(t *testing.T) {
361361
}
362362
}
363363

364+
func TestInitQueryAndQueryExecutesQuery(t *testing.T) {
365+
defer func() {
366+
if r := recover(); r != nil {
367+
t.Errorf("Panic occurred: %v", r)
368+
}
369+
}()
370+
o, err := os.CreateTemp("", "sqlcmdmain")
371+
assert.NoError(t, err, "os.CreateTemp")
372+
defer os.Remove(o.Name())
373+
defer o.Close()
374+
args = newArguments()
375+
args.InitialQuery = "SELECT 1"
376+
args.Query = "SELECT 2"
377+
args.OutputFile = o.Name()
378+
vars := sqlcmd.InitializeVariables(args.useEnvVars())
379+
vars.Set(sqlcmd.SQLCMDMAXVARTYPEWIDTH, "0")
380+
381+
setVars(vars, &args)
382+
383+
exitCode, err := run(vars, &args)
384+
assert.NoError(t, err, "run")
385+
assert.Equal(t, 0, exitCode, "exitCode")
386+
bytes, err := os.ReadFile(o.Name())
387+
if assert.NoError(t, err, "os.ReadFile") {
388+
assert.Equal(t, "2"+sqlcmd.SqlcmdEol+sqlcmd.SqlcmdEol+oneRowAffected+sqlcmd.SqlcmdEol, string(bytes), "Incorrect output from run")
389+
}
390+
}
391+
364392
// Test to verify fix for issue: https://github.com/microsoft/go-sqlcmd/issues/98
365393
// 1. Verify when -b is passed in (ExitOnError), we don't always get an error (even when input is good)
366394
// 2, Verify when the input is actually bad, we do get an error

0 commit comments

Comments
 (0)