exp/sql: close Rows on EOF

Fixes #2624

R=rsc
CC=golang-dev
https://golang.org/cl/5530068
diff --git a/src/pkg/exp/sql/sql.go b/src/pkg/exp/sql/sql.go
index 937982c..f53691b 100644
--- a/src/pkg/exp/sql/sql.go
+++ b/src/pkg/exp/sql/sql.go
@@ -549,8 +549,8 @@
 // statement, a function to call to release the connection, and a
 // statement bound to that connection.
 func (s *Stmt) connStmt() (ci driver.Conn, releaseConn func(), si driver.Stmt, err error) {
-	if s.stickyErr != nil {
-		return nil, nil, nil, s.stickyErr
+	if err = s.stickyErr; err != nil {
+		return
 	}
 	s.mu.Lock()
 	if s.closed {
@@ -726,6 +726,9 @@
 		rs.lastcols = make([]interface{}, len(rs.rowsi.Columns()))
 	}
 	rs.lasterr = rs.rowsi.Next(rs.lastcols)
+	if rs.lasterr == io.EOF {
+		rs.Close()
+	}
 	return rs.lasterr == nil
 }