Skip to content

database/sql: Stmt.Exec is wasting database resources #4902

@alexbrainman

Description

@alexbrainman
This new test

diff --git a/src/pkg/database/sql/sql_test.go b/src/pkg/database/sql/sql_test.go
--- a/src/pkg/database/sql/sql_test.go
+++ b/src/pkg/database/sql/sql_test.go
@@ -708,3 +708,21 @@
        t.Errorf("error = %q; want %q", err.Error(), want)
    }
 }
+
+func TestPrepareCount(t *testing.T) {
+   db := newTestDB(t, "people")
+   defer closeDB(t, db)
+   prepares0 := numPrepares(t, db)
+   stmt, err := db.Prepare("INSERT|people|name=?,age=?")
+   if err != nil {
+       t.Fatal(err)
+   }
+   defer stmt.Close()
+   _, err = stmt.Exec("Alice", 10)
+   if err != nil {
+       t.Fatal(err)
+   }
+   if prepares := numPrepares(t, db) - prepares0; prepares != 1 {
+       t.Errorf("executed %d Prepare statements; want 1", prepares)
+   }
+}

fails with

=== RUN TestPrepareCount
--- FAIL: TestPrepareCount (0.00 seconds)
    sql_test.go:726: executed -4 Prepare statements; want 1
FAIL
exit status 1
FAIL    database/sql    0.007s

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions