From: Date: July 17 2008 8:27pm Subject: bzr commit into mysql-5.1 branch (sergefp:2701) Bug#35478 List-Archive: http://lists.mysql.com/commits/49963 X-Bug: 35478 Message-Id: <20080717182703.459AB22B292@pslp.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit #At file:///home/psergey/dev/mysql-5.1-bugteam-two/ 2701 Sergey Petrunia 2008-07-17 [merge] Merge BUG#35478 into mysql-5.1-bugteam modified: mysql-test/include/query_prealloc_size_basic.inc mysql-test/r/query_prealloc_size_basic_32.result mysql-test/r/query_prealloc_size_basic_64.result sql/item_cmpfunc.cc sql/opt_range.cc === modified file 'mysql-test/include/query_prealloc_size_basic.inc' --- a/mysql-test/include/query_prealloc_size_basic.inc 2008-05-08 18:13:39 +0000 +++ b/mysql-test/include/query_prealloc_size_basic.inc 2008-07-17 09:03:17 +0000 @@ -1,32 +1,35 @@ -############## mysql-test\t\query_prealloc_size_basic.test ############### -# # -# Variable Name: query_prealloc_size # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 8192 # -# Range: 8192-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Rizwan # -# # -# Description: Test Cases of Dynamic System Variable query_prealloc_size # -# that checks the behavior of this variable in the following ways# -# * Default Value # -# * Valid & Invalid values # -# * Scope & Access method # -# * Data Integrity # -# # -# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # -# server-system-variables.html # -# # -############################################################################### +################# mysql-test\t\query_prealloc_size_basic.test ################## +# # +# Variable Name: query_prealloc_size # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 8192 # +# Range: 8192-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable query_prealloc_size # +# that checks the behavior of this variable in the following ways # +# * Default Value # +# * Valid & Invalid values # +# * Scope & Access method # +# * Data Integrity # +# # +# Reference: # +# http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html # +# # +# Last Modification: # +# 2008-07-14 hhunger removed values for 64 bit platforms. # +# # +################################################################################ --source include/load_sysvars.inc ######################################################################## -# START OF query_prealloc_size TESTS # +# START OF query_prealloc_size TESTS # ######################################################################## @@ -42,7 +45,7 @@ SELECT @start_session_value; --echo '#--------------------FN_DYNVARS_005_01-------------------------#' ######################################################################## -# Display the DEFAULT value of myisam_block_size # +# Display the DEFAULT value of myisam_block_size # ######################################################################## SET @@global.query_prealloc_size = 100; @@ -56,7 +59,7 @@ SELECT @@session.query_prealloc_size ; --echo '#--------------------FN_DYNVARS_005_02-------------------------#' ######################################################################## -# Check the DEFAULT value of query_prealloc_size # +# Check the DEFAULT value of query_prealloc_size # ######################################################################## SET @@global.query_prealloc_size = DEFAULT; @@ -67,30 +70,32 @@ SELECT @@session.query_prealloc_size = --echo '#--------------------FN_DYNVARS_005_03-------------------------#' -################################################################################## -# Change the value of query_prealloc_size to a valid value for GLOBAL Scope # -################################################################################## +################################################################################ +# Change the value of query_prealloc_size to a valid value for GLOBAL Scope # +################################################################################ SET @@global.query_prealloc_size = 8192; SELECT @@global.query_prealloc_size ; -SET @@global.query_prealloc_size = 4294967295; -SELECT @@global.query_prealloc_size ; +# Due to problems with 64 bit machines having less than 6 GB main memory. +#SET @@global.query_prealloc_size = 4294967295; +#SELECT @@global.query_prealloc_size ; SET @@global.query_prealloc_size = 655354; SELECT @@global.query_prealloc_size ; --echo '#--------------------FN_DYNVARS_005_04-------------------------#' -################################################################################### -# Change the value of query_prealloc_size to a valid value for SESSION Scope # -################################################################################### - +################################################################################## +# Change the value of query_prealloc_size to a valid value for SESSION Scope # +################################################################################## + SET @@session.query_prealloc_size = 8192; SELECT @@session.query_prealloc_size ; -SET @@session.query_prealloc_size = 4294967295; -SELECT @@session.query_prealloc_size ; +# Due to problems with 64 bit machines having less than 6 GB main memory. +#SET @@session.query_prealloc_size = 4294967295; +#SELECT @@session.query_prealloc_size ; SET @@session.query_prealloc_size = 655345; SELECT @@session.query_prealloc_size ; @@ -100,7 +105,7 @@ SELECT @@session.query_prealloc_size ; --echo '#------------------FN_DYNVARS_005_05-----------------------#' #################################################################### -# Change the value of query_prealloc_size to an invalid value # +# Change the value of query_prealloc_size to an invalid value # #################################################################### SET @@global.query_prealloc_size = 0; @@ -109,8 +114,9 @@ SELECT @@global.query_prealloc_size ; SET @@global.query_prealloc_size = -1024; SELECT @@global.query_prealloc_size ; -SET @@global.query_prealloc_size = 429496729533; -SELECT @@global.query_prealloc_size ; +# Due to problems with 64 bit machines having less than 6 GB main memory. +#SET @@global.query_prealloc_size = 429496729533; +#SELECT @@global.query_prealloc_size ; --Error ER_PARSE_ERROR @@ -161,8 +167,8 @@ SELECT @@session.query_prealloc_size ; #################################################################### -SELECT @@global.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +SELECT @@global.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='query_prealloc_size '; --echo '#------------------FN_DYNVARS_005_07-----------------------#' @@ -170,8 +176,8 @@ WHERE VARIABLE_NAME='query_prealloc_size # Check if the value in SESSION Table matches value in variable # #################################################################### -SELECT @@session.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES +SELECT @@session.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='query_prealloc_size '; @@ -188,18 +194,19 @@ SELECT @@global.query_prealloc_size ; --echo '#---------------------FN_DYNVARS_001_09----------------------#' -#################################################################################### -# Check if accessing variable with and without GLOBAL point to same variable # -#################################################################################### +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ SET @@global.query_prealloc_size = 10; SELECT @@query_prealloc_size = @@global.query_prealloc_size ; --echo '#---------------------FN_DYNVARS_001_10----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## +############################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to # +# to the same session variable # +############################################################################## SET @@query_prealloc_size = 100; SELECT @@query_prealloc_size = @@local.query_prealloc_size ; @@ -207,9 +214,9 @@ SELECT @@local.query_prealloc_size = @ --echo '#---------------------FN_DYNVARS_001_11----------------------#' -################################################################################### -# Check if query_prealloc_size can be accessed with and without @@ sign # -################################################################################### +################################################################################ +# Check if query_prealloc_size can be accessed with and without @@ sign # +################################################################################ SET query_prealloc_size = 1; SELECT @@query_prealloc_size ; @@ -235,5 +242,6 @@ SELECT @@session.query_prealloc_size ; ############################################################# -# END OF query_prealloc_size TESTS # +# END OF query_prealloc_size TESTS # ############################################################# + === modified file 'mysql-test/r/query_prealloc_size_basic_32.result' --- a/mysql-test/r/query_prealloc_size_basic_32.result 2008-05-08 18:13:39 +0000 +++ b/mysql-test/r/query_prealloc_size_basic_32.result 2008-07-17 09:03:17 +0000 @@ -35,10 +35,6 @@ SET @@global.query_prealloc_size = 819 SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size 8192 -SET @@global.query_prealloc_size = 4294967295; -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -4294966272 SET @@global.query_prealloc_size = 655354; SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size @@ -48,10 +44,6 @@ SET @@session.query_prealloc_size = 81 SELECT @@session.query_prealloc_size ; @@session.query_prealloc_size 8192 -SET @@session.query_prealloc_size = 4294967295; -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -4294966272 SET @@session.query_prealloc_size = 655345; SELECT @@session.query_prealloc_size ; @@session.query_prealloc_size @@ -69,37 +61,31 @@ Warning 1292 Truncated incorrect query_p SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size 8192 -SET @@global.query_prealloc_size = 429496729533; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '429496729533' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -4294966272 SET @@global.query_prealloc_size = 65530.34.; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -4294966272 +8192 SET @@global.query_prealloc_size = test; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -4294966272 +8192 SET @@global.query_prealloc_size = "test"; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -4294966272 +8192 SET @@global.query_prealloc_size = 'test'; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -4294966272 +8192 SET @@global.query_prealloc_size = ON; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -4294966272 +8192 SET @@session.query_prealloc_size = 0; Warnings: Warning 1292 Truncated incorrect query_prealloc_size value: '0' @@ -128,14 +114,14 @@ SELECT @@session.query_prealloc_size ; @@session.query_prealloc_size 8192 '#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +SELECT @@global.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='query_prealloc_size '; @@global.query_prealloc_size = VARIABLE_VALUE 1 '#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES +SELECT @@session.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='query_prealloc_size '; @@session.query_prealloc_size = VARIABLE_VALUE 1 === modified file 'mysql-test/r/query_prealloc_size_basic_64.result' --- a/mysql-test/r/query_prealloc_size_basic_64.result 2008-05-08 18:13:39 +0000 +++ b/mysql-test/r/query_prealloc_size_basic_64.result 2008-07-17 09:03:17 +0000 @@ -35,10 +35,6 @@ SET @@global.query_prealloc_size = 819 SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size 8192 -SET @@global.query_prealloc_size = 4294967295; -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -4294966272 SET @@global.query_prealloc_size = 655354; SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size @@ -48,10 +44,6 @@ SET @@session.query_prealloc_size = 81 SELECT @@session.query_prealloc_size ; @@session.query_prealloc_size 8192 -SET @@session.query_prealloc_size = 4294967295; -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -4294966272 SET @@session.query_prealloc_size = 655345; SELECT @@session.query_prealloc_size ; @@session.query_prealloc_size @@ -69,35 +61,31 @@ Warning 1292 Truncated incorrect query_p SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size 8192 -SET @@global.query_prealloc_size = 429496729533; -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -429496728576 SET @@global.query_prealloc_size = 65530.34.; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -429496728576 +8192 SET @@global.query_prealloc_size = test; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -429496728576 +8192 SET @@global.query_prealloc_size = "test"; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -429496728576 +8192 SET @@global.query_prealloc_size = 'test'; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -429496728576 +8192 SET @@global.query_prealloc_size = ON; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -429496728576 +8192 SET @@session.query_prealloc_size = 0; Warnings: Warning 1292 Truncated incorrect query_prealloc_size value: '0' @@ -126,14 +114,14 @@ SELECT @@session.query_prealloc_size ; @@session.query_prealloc_size 8192 '#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +SELECT @@global.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='query_prealloc_size '; @@global.query_prealloc_size = VARIABLE_VALUE 1 '#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES +SELECT @@session.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='query_prealloc_size '; @@session.query_prealloc_size = VARIABLE_VALUE 1 === modified file 'sql/item_cmpfunc.cc' --- a/sql/item_cmpfunc.cc 2008-07-14 09:06:49 +0000 +++ b/sql/item_cmpfunc.cc 2008-07-15 12:12:08 +0000 @@ -3758,8 +3758,6 @@ longlong Item_func_in::val_int() return (longlong) (!null_value && tmp != negated); } - if ((null_value= args[0]->null_value)) - return 0; have_null= 0; for (uint i= 1 ; i < arg_count ; i++) { @@ -3769,6 +3767,8 @@ longlong Item_func_in::val_int() if (!(value_added_map & (1 << (uint)cmp_type))) { in_item->store_value(args[0]); + if ((null_value= args[0]->null_value)) + return 0; value_added_map|= 1 << (uint)cmp_type; } if (!in_item->cmp(args[i]) && !args[i]->null_value) === modified file 'sql/opt_range.cc' --- a/sql/opt_range.cc 2008-07-15 17:46:02 +0000 +++ b/sql/opt_range.cc 2008-07-17 18:26:55 +0000 @@ -7936,7 +7936,7 @@ int QUICK_INDEX_MERGE_SELECT::read_keys_ handler *file= head->file; DBUG_ENTER("QUICK_INDEX_MERGE_SELECT::read_keys_and_merge"); - + /* We're going to just read rowids. */ file->extra(HA_EXTRA_KEYREAD); head->prepare_for_position();