@@ -1669,24 +1669,40 @@ func TestStmtMultiRows(t *testing.T) {
1669
1669
// Regression test for
1670
1670
// * more than 32 NULL parameters (issue 209)
1671
1671
// * more parameters than fit into the buffer (issue 201)
1672
+ // * parameters * 64 > max_allowed_packet (issue 734)
1672
1673
func TestPreparedManyCols (t * testing.T ) {
1673
- const numParams = defaultBufSize
1674
+ numParams := [] int { 32 , int ( defaultBufSize ), 65535 }
1674
1675
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
+
1686
1704
stmt .Close ()
1687
- dbt .Fatal (err )
1688
1705
}
1689
- defer rows .Close ()
1690
1706
})
1691
1707
}
1692
1708
0 commit comments