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,