sql.ErrNoRows returned when using Query

When you use Query and there are no rows, rows.Err() will return sql.ErrNoRows, which it should not. See example code.

package main

import (
	"database/sql"
	"fmt"

	_ "modernc.org/sqlite"
	_ "github.com/mattn/go-sqlite3"
)

func main() {
	test("sqlite3")
	test("sqlite")
}

func test(driver string) {
	db, err := sql.Open(driver, "file:test?mode=memory&cache=shared")
	if err != nil {
		panic(err)
	}
	_, err = db.Exec(`CREATE TABLE test (foo TEXT)`)
	if err != nil {
		panic(err)
	}

	// Test QueryRow
	row := db.QueryRow(`SELECT foo FROM test`)
	var foo string
	err = row.Scan(&foo)
	fmt.Println(driver, "QueryRow", err)

	// Test Query
	rows, err := db.Query(`SELECT foo FROM test`)
	if err != nil {
		panic(err)
	}
	defer rows.Close()
	if rows.Next() {
		panic("rows.Next returned true")
	}
	err = rows.Err()
	fmt.Println(driver, "Query", err)
}

The problem is this line in sqlite.go:

func (noRows) Next([]driver.Value) error { return sql.ErrNoRows }

It should be changed into:

func (noRows) Next([]driver.Value) error { return io.EOF }