Check size of ExecuteResponse.Results before using it because under some conditions, the result set can be empty
diff --git a/statement.go b/statement.go
index ba231e3..ff30fad 100644
--- a/statement.go
+++ b/statement.go
@@ -24,6 +24,7 @@
"github.com/apache/calcite-avatica-go/message"
"golang.org/x/net/context"
+ "errors"
)
type stmt struct {
@@ -93,8 +94,14 @@
return nil, err
}
+ results := res.(*message.ExecuteResponse).Results
+
+ if len(results) <= 0{
+ return nil, errors.New("empty ResultSet in ExecuteResponse")
+ }
+
// Currently there is only 1 ResultSet per response
- changed := int64(res.(*message.ExecuteResponse).Results[0].UpdateCount)
+ changed := int64(results[0].UpdateCount)
return &result{
affectedRows: changed,