Index: test/my_basics.c =================================================================== --- test/my_basics.c (revision 781) +++ test/my_basics.c (working copy) @@ -513,6 +513,29 @@ } +/** + Bug #30983: SQL Statements limited to 64k +*/ +DECLARE_TEST(t_bug30983) +{ + SQLCHAR buf[(80 * 1024) + 100]; /* ~80k */ + SQLCHAR *bufp = buf; + int i, j; + + bufp += sprintf(bufp, "select '"); + + /* fill 1k of each value */ + for (i= 0; i < 80; ++i) + for (j= 0; j < 512; ++j) + bufp += sprintf(bufp, "%02x", i); + + sprintf(bufp, "' as val"); + + ok_stmt(hstmt, SQLExecDirect(hstmt, buf, SQL_NTS)); + return OK; +} + + BEGIN_TESTS ADD_TEST(my_basics) ADD_TEST(t_max_select) @@ -527,6 +550,7 @@ ADD_TEST(t_bug7445) ADD_TEST(t_bug30774) ADD_TEST(t_bug30840) + ADD_TEST(t_bug30983) END_TESTS Index: util/stringutil.c =================================================================== --- util/stringutil.c (revision 782) +++ util/stringutil.c (working copy) @@ -196,7 +196,7 @@ { SQLWCHAR *str_end; UTF8 *u8; - SQLSMALLINT i; + SQLINTEGER i; if (*len == SQL_NTS) *len= sqlwcharlen(str);