Bug #11497 | mysql_stmt_attr_set CURSOR_TYPE_READ_ONLY incorrect query result multi execute | ||
---|---|---|---|
Submitted: | 22 Jun 2005 11:00 | Modified: | 2 Jul 2005 8:40 |
Reporter: | Berto van de Kraats | Email Updates: | |
Status: | Can't repeat | Impact on me: | |
Category: | MySQL Server | Severity: | S2 (Serious) |
Version: | 5.0.8-beta-nightly-20050613-debug | OS: | Linux (Linux) |
Assigned to: | Konstantin Osipov | CPU Architecture: | Any |
[22 Jun 2005 11:00]
Berto van de Kraats
[22 Jun 2005 11:03]
Berto van de Kraats
Cpp trace of problem
Attachment: bug11497.cpp (text/plain), 24.84 KiB.
[25 Jun 2005 18:52]
Jorge del Conde
Thanks for your bug report. I was able to reproduce this bug using 5.0.9 from bk. Your test-case worked/compiled perfectly.
[2 Jul 2005 8:40]
Konstantin Osipov
kostja@dragonfly:~> g++ -I /home/kostja/work/mysql-5.0-root/include -L/home/kostja/work/mysql-5.0-root/libmysql/.libs -lmysqlclient -lz -lnsl -lcrypto bug11497.cpp -lstdc++ kostja@dragonfly:~> ./a.out kostja@dragonfly:~> ./a.out kostja@dragonfly:~> ./a.out kostja@dragonfly:~> diff -u bug11497.cpp.vanilla bug11497.cpp --- bug11497.cpp.vanilla 2005-07-02 12:37:51.794815736 +0400 +++ bug11497.cpp 2005-07-02 12:36:52.682802128 +0400 @@ -97,14 +97,15 @@ MYSQL *sess_1; sess_1 = mysql_init( NULL ); assert(sess_1); // actuals: HOST_NAME="nlbaldev1", _NAME="bsp", _PWD="bsp", DB_NAME="baan" - mysql_real_connect(sess_1, HOST_NAME, USER_NAME, USER_PWD, DB_NAME, 0, NULL, 0); + mysql_real_connect(sess_1, 0, "kostja", 0, "test", 0, + "/opt/local/var/mysql/mysql.sock", 0); mysql_autocommit(sess_1, 0); mysql_query(sess_1, "SET SESSION sql_mode=ERROR_FOR_DIVISION_BY_ZERO"); mysql_query(sess_1, "SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED"); MYSQL_STMT *stmt_1; stmt_1 = mysql_stmt_init(sess_1); mysql_ret = mysql_stmt_attr_set(stmt_1,STMT_ATTR_CURSOR_TYPE,(const void *) &select_cursor); assert(mysql_ret==0); - stmt_text = "SELECT a0.t_edlevel FROM baan.tdbtst120000 a0 WHERE (a0.t_edlevel > ?) ORDER BY 1"; + stmt_text = "SELECT a0.t_edlevel FROM tdbtst120000 a0 WHERE (a0.t_edlevel > ?) ORDER BY 1"; mysql_ret = mysql_stmt_prepare(stmt_1,stmt_text,strlen(stmt_text)); assert(mysql_ret==0); count = mysql_stmt_param_count(stmt_1); assert( count==1 ); MYSQL_BIND *param_1 = (MYSQL_BIND *)calloc(1, sizeof(MYSQL_BIND)); @@ -143,7 +144,7 @@ mysql_ret = mysql_stmt_fetch(stmt_1); assert(mysql_ret==0); count = mysql_warning_count(sess_1); assert(count==0); // ERROR: would expect 14, as was returned by the previous exec/fetch - ASSERT_EQ(data_2,16); + ASSERT_EQ(data_2,14); mysql_ret = mysql_stmt_free_result(stmt_1); assert(mysql_ret==0); mysql_ret = mysql_stmt_reset(stmt_1); assert(mysql_ret==0); mysql_ret = mysql_stmt_close(stmt_1); assert(mysql_ret==0); @@ -221,7 +222,7 @@ fprintf(fp,"%s\n","/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;"); fprintf(fp,"%s\n",""); fclose(fp); - const char *cmd = "mysql --user="OWNER_NAME" --password="OWNER_PWD" --host="HOST_NAME" "DB_NAME" < /tmp/baan_table_dump"; + const char *cmd = "mysql test < /tmp/baan_table_dump"; int ret = system(cmd); if ( ret != 0 ) fprintf(stderr,"Command \"mysql --user="OWNER_NAME" --password="OWNER_PWD" --host="HOST_NAME" "DB_NAME" < /tmp/baan_table_dump\" failed\n",cmd); }