Skip to content

Commit 475ca26

Browse files
committed
Add test which reproduce issue 730
1 parent 2954ddc commit 475ca26

File tree

1 file changed

+30
-14
lines changed

1 file changed

+30
-14
lines changed

driver_test.go

+30-14
Original file line numberDiff line numberDiff line change
@@ -1669,24 +1669,40 @@ func TestStmtMultiRows(t *testing.T) {
16691669
// Regression test for
16701670
// * more than 32 NULL parameters (issue 209)
16711671
// * more parameters than fit into the buffer (issue 201)
1672+
// * parameters * 64 > max_allowed_packet (issue 734)
16721673
func TestPreparedManyCols(t *testing.T) {
1673-
const numParams = defaultBufSize
1674+
numParams := []int{32, int(defaultBufSize), 65535}
16741675
runTests(t, dsn, func(dbt *DBTest) {
1675-
query := "SELECT ?" + strings.Repeat(",?", numParams-1)
1676-
stmt, err := dbt.db.Prepare(query)
1677-
if err != nil {
1678-
dbt.Fatal(err)
1679-
}
1680-
defer stmt.Close()
1681-
// create more parameters than fit into the buffer
1682-
// which will take nil-values
1683-
params := make([]interface{}, numParams)
1684-
rows, err := stmt.Query(params...)
1685-
if err != nil {
1676+
for _, np := range numParams {
1677+
query := "SELECT ?" + strings.Repeat(",?", np-1)
1678+
stmt, err := dbt.db.Prepare(query)
1679+
if err != nil {
1680+
dbt.Fatal(err)
1681+
}
1682+
1683+
// create more parameters than fit into the buffer
1684+
// which will take nil-values
1685+
params := make([]interface{}, np)
1686+
rows, err := stmt.Query(params...)
1687+
if err != nil {
1688+
stmt.Close()
1689+
dbt.Fatal(err)
1690+
}
1691+
rows.Close()
1692+
1693+
// Create 0byte string which we can't send via STMT_LONG_DATA.
1694+
for i := 0; i < np; i++ {
1695+
params[i] = ""
1696+
}
1697+
rows, err = stmt.Query(params...)
1698+
if err != nil {
1699+
stmt.Close()
1700+
dbt.Fatal(err)
1701+
}
1702+
rows.Close()
1703+
16861704
stmt.Close()
1687-
dbt.Fatal(err)
16881705
}
1689-
defer rows.Close()
16901706
})
16911707
}
16921708

0 commit comments

Comments
 (0)