@@ -452,6 +452,7 @@ func (s *Sqlcmd) runQuery(query string) (int, error) {
452452 var cols []* sql.ColumnType
453453 results := true
454454 first := true
455+ beganResultSet := false
455456 for qe == nil && results {
456457 msg := retmsg .Message (ctx )
457458 switch m := msg .(type ) {
@@ -486,6 +487,7 @@ func (s *Sqlcmd) runQuery(query string) (int, error) {
486487 }
487488 if results {
488489 first = true
490+ beganResultSet = false
489491 }
490492 case sqlexp.MsgNext :
491493 if first {
@@ -495,31 +497,35 @@ func (s *Sqlcmd) runQuery(query string) (int, error) {
495497 retcode = - 100
496498 qe = s .handleError (& retcode , err )
497499 s .Format .AddError (err )
498- // Skip processing this result set since we cannot get column types
499- continue
500+ beganResultSet = false
501+ } else {
502+ s .Format .BeginResultSet (cols )
503+ beganResultSet = true
500504 }
501- s .Format .BeginResultSet (cols )
502505 }
503- inresult := rows .Next ()
504- for inresult {
505- col1 := s .Format .AddRow (rows )
506- inresult = rows .Next ()
507- if ! inresult {
508- if col1 == "" {
509- retcode = 0
510- } else if _ , cerr := fmt .Sscanf (col1 , "%d" , & retcode ); cerr != nil {
511- retcode = - 102
506+ // Only process rows if BeginResultSet was successfully called
507+ if beganResultSet {
508+ inresult := rows .Next ()
509+ for inresult {
510+ col1 := s .Format .AddRow (rows )
511+ inresult = rows .Next ()
512+ if ! inresult {
513+ if col1 == "" {
514+ retcode = 0
515+ } else if _ , cerr := fmt .Sscanf (col1 , "%d" , & retcode ); cerr != nil {
516+ retcode = - 102
517+ }
512518 }
513519 }
514- }
515- if retcode != - 102 {
516- if err = rows . Err (); err != nil {
517- retcode = - 100
518- qe = s . handleError ( & retcode , err )
519- s . Format . AddError ( err )
520+ if retcode != - 102 {
521+ if err = rows . Err (); err != nil {
522+ retcode = - 100
523+ qe = s . handleError ( & retcode , err )
524+ s . Format . AddError ( err )
525+ }
520526 }
527+ s .Format .EndResultSet ()
521528 }
522- s .Format .EndResultSet ()
523529 }
524530 }
525531 s .Format .EndBatch ()
0 commit comments