From: Davi Arnaut Date: July 27 2009 3:31pm Subject: bzr commit into mysql-5.0-bugteam branch (davi:2790) Bug#20023 List-Archive: http://lists.mysql.com/commits/79347 X-Bug: 20023 Message-Id: <20090727153139.E1588444734@skynet> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_MiGTxoujgXZHB/P7Nqp9bw)" --Boundary_(ID_MiGTxoujgXZHB/P7Nqp9bw) MIME-version: 1.0 Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Content-disposition: inline # At a local mysql-5.0-bugteam repository of davi 2790 Davi Arnaut 2009-07-27 Bug#20023: mysql_change_user() resets the value of SQL_BIG_SELECTS Post-merge fix: test case could fail due to a conversion of the max_join_size value to a integer. Fixed by preserving the value as a string for comparison purposes. @ tests/mysql_client_test.c Preserve max_join_size value as a string instead of converting it to a integer -- value can be larger then the type used. modified: tests/mysql_client_test.c === modified file 'tests/mysql_client_test.c' --- a/tests/mysql_client_test.c 2009-07-16 12:37:38 +0000 +++ b/tests/mysql_client_test.c 2009-07-27 15:31:28 +0000 @@ -16270,33 +16270,46 @@ static void bug20023_change_user(MYSQL * opt_db ? opt_db : "test")); } -static void bug20023_query_int_variable(MYSQL *con, +static void bug20023_query_str_variable(MYSQL *con, const char *var_name, - int *var_value) + char *str, + size_t len) { MYSQL_RES *rs; MYSQL_ROW row; char query_buffer[MAX_TEST_QUERY_LENGTH]; - my_snprintf(query_buffer, - sizeof (query_buffer), - "SELECT @@%s", - (const char *) var_name); + my_snprintf(query_buffer, sizeof (query_buffer), + "SELECT @@%s", var_name); DIE_IF(mysql_query(con, query_buffer)); DIE_UNLESS(rs= mysql_store_result(con)); DIE_UNLESS(row= mysql_fetch_row(rs)); - *var_value= atoi(row[0]); + my_snprintf(str, len, "%s", row[0]); mysql_free_result(rs); } +static void bug20023_query_int_variable(MYSQL *con, + const char *var_name, + int *var_value) +{ + char str[32]; + bug20023_query_str_variable(con, var_name, str, sizeof(str)); + *var_value= atoi(str); +} + static void test_bug20023() { MYSQL con; int sql_big_selects_orig; - int max_join_size_orig; + /* + Type of max_join_size is ha_rows, which might be ulong or off_t + depending on the platform or configure options. Preserve the string + to avoid type overflow pitfalls. + */ + char max_join_size_orig[32]; int sql_big_selects_2; int sql_big_selects_3; @@ -16326,9 +16339,10 @@ static void test_bug20023() "session.sql_big_selects", &sql_big_selects_orig); - bug20023_query_int_variable(&con, + bug20023_query_str_variable(&con, "global.max_join_size", - &max_join_size_orig); + max_join_size_orig, + sizeof(max_join_size_orig)); /*********************************************************************** Test that COM_CHANGE_USER resets the SQL_BIG_SELECTS to the initial value. @@ -16405,8 +16419,8 @@ static void test_bug20023() my_snprintf(query_buffer, sizeof (query_buffer), - "SET @@global.max_join_size = %d", - (int) max_join_size_orig); + "SET @@global.max_join_size = %s", + max_join_size_orig); DIE_IF(mysql_query(&con, query_buffer)); DIE_IF(mysql_query(&con, "SET @@session.max_join_size = default")); --Boundary_(ID_MiGTxoujgXZHB/P7Nqp9bw) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name="bzr/davi.arnaut@stripped" Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/davi.arnaut@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: davi.arnaut@stripped # target_branch: file:///home/davi/bzr/stage/mysql-5.0-bugteam/ # testament_sha1: da4ffce66bb19fe2a4e3ca3944c101636f682391 # timestamp: 2009-07-27 12:31:39 -0300 # base_revision_id: satya.bn@stripped # # Begin bundle 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 lKOVUtvFTK63H/F3JFOFCQ6xoZrg --Boundary_(ID_MiGTxoujgXZHB/P7Nqp9bw)--