diff --git a/mysql-test/include/query_prealloc_size_basic.inc b/mysql-test/include/query_prealloc_size_basic.inc index 1793d1874af..ac005b696fa 100644 --- a/mysql-test/include/query_prealloc_size_basic.inc +++ b/mysql-test/include/query_prealloc_size_basic.inc @@ -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 = 8192; --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 = @@session.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 # ############################################################# + diff --git a/mysql-test/r/query_prealloc_size_basic_32.result b/mysql-test/r/query_prealloc_size_basic_32.result index 176e4fb810a..fe8aba990a7 100644 --- a/mysql-test/r/query_prealloc_size_basic_32.result +++ b/mysql-test/r/query_prealloc_size_basic_32.result @@ -35,10 +35,6 @@ SET @@global.query_prealloc_size = 8192; 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 = 8192; 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_prealloc_size value: '0' 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 diff --git a/mysql-test/r/query_prealloc_size_basic_64.result b/mysql-test/r/query_prealloc_size_basic_64.result index 1c4f5885676..fe8aba990a7 100644 --- a/mysql-test/r/query_prealloc_size_basic_64.result +++ b/mysql-test/r/query_prealloc_size_basic_64.result @@ -35,10 +35,6 @@ SET @@global.query_prealloc_size = 8192; 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 = 8192; 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_prealloc_size value: '0' 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 diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 2db77eb7c56..28e55eef5bd 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -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) diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 4c05f7c7ac4..826b8bc871c 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -7936,7 +7936,7 @@ int QUICK_INDEX_MERGE_SELECT::read_keys_and_merge() 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();