@@ -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)
16721673func 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