diff options
author | sergefp@mysql.com <> | 2004-04-30 15:32:41 +0400 |
---|---|---|
committer | sergefp@mysql.com <> | 2004-04-30 15:32:41 +0400 |
commit | 448e4bbddeb8eb2f35f9d477ebfc382b8b22d7cb (patch) | |
tree | a6c4983e21360ef2e2e9c27092550621faa56617 /tests | |
parent | 07eaf1864206ebc9f370a724476a1df6243f2c7e (diff) | |
parent | a2a7eb2e74f01344fd24b6fcafc16565d94ed96a (diff) | |
download | mariadb-git-448e4bbddeb8eb2f35f9d477ebfc382b8b22d7cb.tar.gz |
Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/dbdata/psergey/mysql-4.1-bug3420
Diffstat (limited to 'tests')
-rw-r--r-- | tests/client_test.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/client_test.c b/tests/client_test.c index 419302d818a..e8f6e551ffb 100644 --- a/tests/client_test.c +++ b/tests/client_test.c @@ -1824,6 +1824,63 @@ static void test_select() } /* + Test for BUG#3420 ("select id1,value1 from t where id=? or value=?" + returns all rows in the table) +*/ +static void test_ps_conj_select() +{ + MYSQL_STMT *stmt; + int rc; + MYSQL_BIND bind[2]; + long int int_data; + char str_data[32]; + unsigned long str_length; + myheader("test_ps_conj_select"); + + rc= mysql_query(mysql, "drop table if exists t1"); + myquery(rc); + + rc= mysql_query(mysql, "create table t1 (id1 int(11) NOT NULL default '0'," + "value2 varchar(100), value1 varchar(100))"); + myquery(rc); + + rc= mysql_query(mysql, "insert into t1 values (1,'hh','hh'),(2,'hh','hh')," + "(1,'ii','ii'),(2,'ii','ii')"); + myquery(rc); + + strmov(query, "select id1,value1 from t1 where id1=? or value1=?"); + stmt= mysql_simple_prepare(mysql, query); + mystmt_init(stmt); + + verify_param_count(stmt,2); + + bind[0].buffer_type= MYSQL_TYPE_LONG; + bind[0].buffer= (char *)&int_data; + bind[0].is_null= 0; + bind[0].length= 0; + + bind[1].buffer_type= MYSQL_TYPE_VAR_STRING; + bind[1].buffer= (char *)str_data; + bind[1].buffer_length= array_elements(str_data); + bind[1].is_null= 0; + bind[1].length= &str_length; + + rc = mysql_bind_param(stmt,bind); + mystmt(stmt, rc); + + int_data= 1; + strcpy(str_data, "hh"); + str_length= strlen(str_data); + + rc = mysql_execute(stmt); + mystmt(stmt, rc); + + assert(my_process_stmt_result(stmt) == 3); + + mysql_stmt_close(stmt); +} + +/* test BUG#1115 (incorrect string parameter value allocation) */ static void test_bug1115() @@ -9426,6 +9483,7 @@ int main(int argc, char **argv) test_select_prepare(); /* prepare select - protocol_prep debug */ test_select(); /* simple select test */ test_select_version(); /* select with variables */ + test_ps_conj_select(); /* prepare select with "where a=? or b=?" */ test_select_show_table();/* simple show prepare */ #if NOT_USED /* |