|
|
@@ -1669,8 +1669,9 @@ func TestStmtMultiRows(t *testing.T) {
|
|
|
// Regression test for
|
|
|
// * more than 32 NULL parameters (issue 209)
|
|
|
// * more parameters than fit into the buffer (issue 201)
|
|
|
+// * parameters * 64 > max_allowed_packet (issue 734)
|
|
|
func TestPreparedManyCols(t *testing.T) {
|
|
|
- const numParams = defaultBufSize
|
|
|
+ numParams := 65535
|
|
|
runTests(t, dsn, func(dbt *DBTest) {
|
|
|
query := "SELECT ?" + strings.Repeat(",?", numParams-1)
|
|
|
stmt, err := dbt.db.Prepare(query)
|
|
|
@@ -1678,15 +1679,25 @@ func TestPreparedManyCols(t *testing.T) {
|
|
|
dbt.Fatal(err)
|
|
|
}
|
|
|
defer stmt.Close()
|
|
|
+
|
|
|
// create more parameters than fit into the buffer
|
|
|
// which will take nil-values
|
|
|
params := make([]interface{}, numParams)
|
|
|
rows, err := stmt.Query(params...)
|
|
|
if err != nil {
|
|
|
- stmt.Close()
|
|
|
dbt.Fatal(err)
|
|
|
}
|
|
|
- defer rows.Close()
|
|
|
+ rows.Close()
|
|
|
+
|
|
|
+ // Create 0byte string which we can't send via STMT_LONG_DATA.
|
|
|
+ for i := 0; i < numParams; i++ {
|
|
|
+ params[i] = ""
|
|
|
+ }
|
|
|
+ rows, err = stmt.Query(params...)
|
|
|
+ if err != nil {
|
|
|
+ dbt.Fatal(err)
|
|
|
+ }
|
|
|
+ rows.Close()
|
|
|
})
|
|
|
}
|
|
|
|