From 065321f0be594e5229409996205e6a271477c255 Mon Sep 17 00:00:00 2001 From: V Narayanan Date: Tue, 18 Nov 2008 11:31:03 +0530 Subject: [PATCH 01/36] Bug#39616: Missing quotes from .CSV crashes server When a CSV file contained comma separated elements that were not enclosed in quotes, it was causing the mysql server to crash. The old algorithm that parsed the content of a row in mysql 5.0 was assuming that the values of the fields in a .CSV file will be enclosed in quotes and will be separated by commas. This was causing the old algorithm to fail when the content of the file resembled the following 3,"sans quotes" The CSV engine that is part of mysql 5.0 was expecting the above to be "3","sans quotes" The above is just one example of where the engine was failing for what would be recognized as a valid .CSV file content otherwise. The proposed fix changes the old algorithm being used to parse rows from the .CSV file to handle two separate cases 1) When the current field of the row is enclosed in quotes 2) When the current field of the row is not enclosed in quotes mysql-test/r/csv.result: Contains additional test output corresponding to the new tests added. mysql-test/t/csv.test: Contains additional tests for testing the behaviour of the CSV storage engine when the fields are not enclosed in quotes. sql/examples/ha_tina.cc: Changes the parsing logic of the rows in a CSV file to account for fields that are not enclosed in quotes. --- mysql-test/r/csv.result | 15 ++++++ mysql-test/t/csv.test | 43 +++++++++++++++++ sql/examples/ha_tina.cc | 103 +++++++++++++++++++++++++++++++--------- 3 files changed, 139 insertions(+), 22 deletions(-) diff --git a/mysql-test/r/csv.result b/mysql-test/r/csv.result index dca4e349c8a..ac1aee6cc9a 100644 --- a/mysql-test/r/csv.result +++ b/mysql-test/r/csv.result @@ -5071,4 +5071,19 @@ select * from t1; a foo drop table t1; +create table bug39616_1(id int NOT NULL, d varchar(50) NOT NULL) ENGINE=csv; +select * from bug39616_1; +id d +1 integer sans quotes +1 string sans quotes +1 string end quotes" +1 quotes"in between" strings +1 Integer with quote and string with no quote +1 escape sequence + " \ \a within quotes +drop table bug39616_1; +create table bug39616_1(id int NOT NULL, d varchar(50) NOT NULL) ENGINE=csv; +select * from bug39616_1; +id d +drop table bug39616_1; End of 5.0 tests diff --git a/mysql-test/t/csv.test b/mysql-test/t/csv.test index db5cb92c3e6..72d61fc7781 100644 --- a/mysql-test/t/csv.test +++ b/mysql-test/t/csv.test @@ -1460,4 +1460,47 @@ insert into t1 values(); select * from t1; drop table t1; +# +# Bug #39616 Missing quotes from .CSV crashes server +# +# Editing the .CSV file and leaving out quotes from around an integer field +# crashes the server. +# + +# +# Test for the integers and strings enclosed in quotes, not enclosed in quotes, +# \X characters. +# +create table bug39616_1(id int NOT NULL, d varchar(50) NOT NULL) ENGINE=csv; + +--remove_file $MYSQLTEST_VARDIR/master-data/test/bug39616_1.CSV +--write_file $MYSQLTEST_VARDIR/master-data/test/bug39616_1.CSV +1,"integer sans quotes" +1,string sans quotes +1,string end quotes" +1,quotes"in between" strings +"1",Integer with quote and string with no quote +1,"escape sequence \n \" \\ \r \a within quotes" +EOF + +select * from bug39616_1; + +drop table bug39616_1; + +# +# Test for he case when a field begins with a quote, but does not end in a +# quote. +# Note: This results in an empty set. +# +create table bug39616_1(id int NOT NULL, d varchar(50) NOT NULL) ENGINE=csv; + +--remove_file $MYSQLTEST_VARDIR/master-data/test/bug39616_1.CSV +--write_file $MYSQLTEST_VARDIR/master-data/test/bug39616_1.CSV +1,"string only at the beginning quotes +EOF + +select * from bug39616_1; + +drop table bug39616_1; + --echo End of 5.0 tests diff --git a/sql/examples/ha_tina.cc b/sql/examples/ha_tina.cc index 0b57fe86e62..aaaa3b8ffb4 100644 --- a/sql/examples/ha_tina.cc +++ b/sql/examples/ha_tina.cc @@ -416,37 +416,96 @@ int ha_tina::find_current_row(byte *buf) if ((end_ptr= find_eoln(share->mapped_file, current_position, share->file_stat.st_size)) == 0) DBUG_RETURN(HA_ERR_END_OF_FILE); + /* + Parse the line obtained using the following algorithm + + BEGIN + 1) Store the EOL (end of line) for the current row + 2) Until all the fields in the current query have not been + filled + 2.1) If the current character begins with a quote + 2.1.1) Until EOL has not been reached + a) If end of current field is reached, move + to next field and jump to step 2.3 + b) If current character begins with \\ handle + \\n, \\r, \\, \\" + c) else append the current character into the buffer + before checking that EOL has not been reached. + 2.2) If the current character does not begin with a quote + 2.2.1) Until EOL has not been reached + a) If the end of field has been reached move to the + next field and jump to step 2.3 + b) append the current character into the buffer + 2.3) Store the current field value and jump to 2) + TERMINATE + */ + for (Field **field=table->field ; *field ; field++) { buffer.length(0); - mapped_ptr++; // Increment past the first quote - for(;mapped_ptr != end_ptr; mapped_ptr++) + /* Handle the case where the first character begins with a quote */ + if (*mapped_ptr == '"') { - //Need to convert line feeds! - if (*mapped_ptr == '"' && - (((mapped_ptr[1] == ',') && (mapped_ptr[2] == '"')) || (mapped_ptr == end_ptr -1 ))) + /* Increment past the first quote */ + mapped_ptr++; + /* Loop through the row to extract the values for the current field */ + for(; mapped_ptr != end_ptr; mapped_ptr++) { - mapped_ptr += 2; // Move past the , and the " - break; - } - if (*mapped_ptr == '\\' && mapped_ptr != (end_ptr - 1)) - { - mapped_ptr++; - if (*mapped_ptr == 'r') - buffer.append('\r'); - else if (*mapped_ptr == 'n' ) - buffer.append('\n'); - else if ((*mapped_ptr == '\\') || (*mapped_ptr == '"')) - buffer.append(*mapped_ptr); - else /* This could only happed with an externally created file */ + /* check for end of the current field */ + if (*mapped_ptr == '"' && + (mapped_ptr[1] == ',' || mapped_ptr == end_ptr -1 )) { - buffer.append('\\'); + /* Move past the , and the " */ + mapped_ptr += 2; + break; + } + if (*mapped_ptr == '\\' && mapped_ptr != (end_ptr - 1)) + { + mapped_ptr++; + if (*mapped_ptr == 'r') + buffer.append('\r'); + else if (*mapped_ptr == 'n' ) + buffer.append('\n'); + else if ((*mapped_ptr == '\\') || (*mapped_ptr == '"')) + buffer.append(*mapped_ptr); + else /* This could only happed with an externally created file */ + { + buffer.append('\\'); + buffer.append(*mapped_ptr); + } + } + else + { + /* + If no last quote was found, but the end of row has been reached + it implies that there has been error. + */ + if (mapped_ptr == end_ptr -1) + DBUG_RETURN(HA_ERR_END_OF_FILE); + /* Store current character in the buffer for the field */ buffer.append(*mapped_ptr); } - } - else - buffer.append(*mapped_ptr); + } } + else + { + /* Handle the case where the current row does not start with quotes */ + + /* Loop through the row to extract the values for the current field */ + for (; mapped_ptr != end_ptr; mapped_ptr++) + { + /* check for end of current field */ + if (*mapped_ptr == ',') + { + /* Increment past the current comma */ + mapped_ptr++; + break; + } + /* store the current character in the buffer for the field */ + buffer.append(*mapped_ptr); + } + } + /* Store the field value from the buffer */ (*field)->store(buffer.ptr(), buffer.length(), buffer.charset()); } next_position= (end_ptr - share->mapped_file)+1; From 589ac1cfdcb44818caff300777223eac723dd762 Mon Sep 17 00:00:00 2001 From: Sergey Vojtovich Date: Fri, 28 Nov 2008 18:17:13 +0400 Subject: [PATCH 02/36] BUG#37245 - Full text search problem Certain boolean mode queries with truncation operator did not return matching records and calculate relevancy incorrectly. myisam/ft_boolean_search.c: Sort ftb->list in ascending order. This helps to fix binary search in ft_boolean_find_relevance() without rewriting it much. Fixed binary search in ft_boolean_find_relevance(), so it finds right-most element in an array. Fixed that ft_boolean_find_relevance() didn't return match for words with truncation operator in case query has other non- matching words. mysql-test/r/fulltext.result: A test case for BUG#37245. mysql-test/t/fulltext.test: A test case for BUG#37245. --- myisam/ft_boolean_search.c | 38 ++++++++++++++++++++++++++++++------ mysql-test/r/fulltext.result | 9 +++++++++ mysql-test/t/fulltext.test | 9 +++++++++ 3 files changed, 50 insertions(+), 6 deletions(-) diff --git a/myisam/ft_boolean_search.c b/myisam/ft_boolean_search.c index 57de75ee4be..255c51fd33a 100644 --- a/myisam/ft_boolean_search.c +++ b/myisam/ft_boolean_search.c @@ -122,11 +122,11 @@ static int FTB_WORD_cmp(my_off_t *v, FTB_WORD *a, FTB_WORD *b) static int FTB_WORD_cmp_list(CHARSET_INFO *cs, FTB_WORD **a, FTB_WORD **b) { - /* ORDER BY word DESC, ndepth DESC */ - int i= mi_compare_text(cs, (uchar*) (*b)->word+1,(*b)->len-1, - (uchar*) (*a)->word+1,(*a)->len-1,0,0); + /* ORDER BY word, ndepth */ + int i= mi_compare_text(cs, (uchar*) (*a)->word + 1, (*a)->len - 1, + (uchar*) (*b)->word + 1, (*b)->len - 1, 0, 0); if (!i) - i=CMP_NUM((*b)->ndepth,(*a)->ndepth); + i= CMP_NUM((*a)->ndepth, (*b)->ndepth); return i; } @@ -674,23 +674,49 @@ float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length) (byte *) end, &word, TRUE)) { int a, b, c; + /* + Find right-most element in the array of query words matching this + word from a document. + */ for (a=0, b=ftb->queue.elements, c=(a+b)/2; b-a>1; c=(a+b)/2) { ftbw=ftb->list[c]; if (mi_compare_text(ftb->charset, (uchar*) word.pos, word.len, (uchar*) ftbw->word+1, ftbw->len-1, - (my_bool) (ftbw->flags&FTB_FLAG_TRUNC),0) >0) + (my_bool) (ftbw->flags & FTB_FLAG_TRUNC), 0) < 0) b=c; else a=c; } + /* + If there were no words with truncation operator, we iterate to the + beginning of an array until array element is equal to the word from + a document. This is done mainly because the same word may be + mentioned twice (or more) in the query. + + In case query has words with truncation operator we must iterate + to the beginning of the array. There may be non-matching query words + between matching word with truncation operator and the right-most + matching element. E.g., if we're looking for 'aaa15' in an array of + 'aaa1* aaa14 aaa15 aaa16'. + + Worse of that there still may be match even if the binary search + above didn't find matching element. E.g., if we're looking for + 'aaa15' in an array of 'aaa1* aaa14 aaa16'. The binary search will + stop at 'aaa16'. + */ for (; c>=0; c--) { ftbw=ftb->list[c]; if (mi_compare_text(ftb->charset, (uchar*) word.pos, word.len, (uchar*) ftbw->word+1,ftbw->len-1, (my_bool) (ftbw->flags&FTB_FLAG_TRUNC),0)) - break; + { + if (ftb->with_scan & FTB_FLAG_TRUNC) + continue; + else + break; + } if (ftbw->docid[1] == docid) continue; ftbw->docid[1]=docid; diff --git a/mysql-test/r/fulltext.result b/mysql-test/r/fulltext.result index e73f8af405c..6821691c9d0 100644 --- a/mysql-test/r/fulltext.result +++ b/mysql-test/r/fulltext.result @@ -497,3 +497,12 @@ WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref b b 5 const 4 Using where DROP TABLE t1; +CREATE TABLE t1(a CHAR(10)); +INSERT INTO t1 VALUES('aaa15'); +SELECT MATCH(a) AGAINST('aaa1* aaa14 aaa16' IN BOOLEAN MODE) FROM t1; +MATCH(a) AGAINST('aaa1* aaa14 aaa16' IN BOOLEAN MODE) +1 +SELECT MATCH(a) AGAINST('aaa1* aaa14 aaa15 aaa16' IN BOOLEAN MODE) FROM t1; +MATCH(a) AGAINST('aaa1* aaa14 aaa15 aaa16' IN BOOLEAN MODE) +2 +DROP TABLE t1; diff --git a/mysql-test/t/fulltext.test b/mysql-test/t/fulltext.test index fa087d89efb..77d84c730d9 100644 --- a/mysql-test/t/fulltext.test +++ b/mysql-test/t/fulltext.test @@ -423,3 +423,12 @@ EXPLAIN SELECT * FROM t1 FORCE INDEX(b) WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1; DROP TABLE t1; + +# +# BUG#37245 - Full text search problem +# +CREATE TABLE t1(a CHAR(10)); +INSERT INTO t1 VALUES('aaa15'); +SELECT MATCH(a) AGAINST('aaa1* aaa14 aaa16' IN BOOLEAN MODE) FROM t1; +SELECT MATCH(a) AGAINST('aaa1* aaa14 aaa15 aaa16' IN BOOLEAN MODE) FROM t1; +DROP TABLE t1; From 90152c17334aaecae640691f24e441723bd84d28 Mon Sep 17 00:00:00 2001 From: Horst Hunger Date: Mon, 1 Dec 2008 09:32:07 +0100 Subject: [PATCH 03/36] Fix for Bug#36875: Problem was, that there some warnings has been written containing values, which were determined by the server depending on the os. The solution is to disable warnings in general. The check of the values only have been done for Linux and Windows. Now, the check has been changed to the check of ranges (not more concrete values) being near by the expected (set) values. --- .../sys_vars/inc/sort_buffer_size_basic.inc | 88 ++++++------- .../r/sort_buffer_size_basic_32.result | 121 +++++------------- .../r/sort_buffer_size_basic_64.result | 117 +++++------------ 3 files changed, 110 insertions(+), 216 deletions(-) diff --git a/mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc b/mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc index 4dbae7c8847..10acf709386 100644 --- a/mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc +++ b/mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc @@ -17,9 +17,12 @@ # * Valid & Invalid values # # * Scope & Access method # # * Data Integrity # +# Modified: Horst Hunger, 2008-11-28 # +# disabled warnings as they contain the values of this variable, # +# modified the check of the value only checking a range. # # # -# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # -# server-system-variables.html # +# Reference: # +# http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html # # # ############################################################################### @@ -29,7 +32,7 @@ ###################################################################### -# START OF sort_buffer_size TESTS # +# START OF sort_buffer_size TESTS # ###################################################################### @@ -37,65 +40,63 @@ # Save initial value # ############################################################# -# due to difference when running on Windows (bug filed) +# due to differences when running on Windows (bug filed) --source include/not_windows.inc -SET @start_global_value = @@global.sort_buffer_size; -SELECT @start_global_value; -SET @start_session_value = @@session.sort_buffer_size; -SELECT @start_session_value; +--disable_warnings +SET @start_global_value = @@global.sort_buffer_size; +SET @start_session_value = @@session.sort_buffer_size; --echo '#--------------------FN_DYNVARS_151_01-------------------------#' ###################################################################### -# Display the DEFAULT value of sort_buffer_size # +# Display the DEFAULT value of sort_buffer_size # ###################################################################### SET @@global.sort_buffer_size = 1000; SET @@global.sort_buffer_size = DEFAULT; -SELECT @@global.sort_buffer_size= 2097144 OR @@global.sort_buffer_size= 2097116; +SELECT @@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000; SET @@session.sort_buffer_size = 2000; SET @@session.sort_buffer_size = DEFAULT; -SELECT @@session.sort_buffer_size= 2097144 OR @@session.sort_buffer_size= 2097116; +SELECT @@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000; --echo '#--------------------FN_DYNVARS_151_02-------------------------#' ###################################################################### -# Check the DEFAULT value of sort_buffer_size # +# Check the DEFAULT value of sort_buffer_size # ###################################################################### SET @@global.sort_buffer_size = DEFAULT; -SELECT @@global.sort_buffer_size = 2097144 OR @@global.sort_buffer_size= 2097116; +SELECT @@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000; SET @@session.sort_buffer_size = DEFAULT; -SELECT @@session.sort_buffer_size = 2097144 OR @@session.sort_buffer_size= 2097116; +SELECT @@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000; --echo '#--------------------FN_DYNVARS_151_03-------------------------#' ################################################################################ -# Change the value of sort_buffer_size to a valid value for GLOBAL Scope # +# Change the value of sort_buffer_size to a valid value for GLOBAL Scope # ################################################################################ SET @@global.sort_buffer_size = 32776; -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; SET @@global.sort_buffer_size = 32777; -SELECT @@global.sort_buffer_size= 32777 OR @@global.sort_buffer_size= 32804; +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; SET @@global.sort_buffer_size = 4294967295; SELECT @@global.sort_buffer_size; SET @@global.sort_buffer_size = 4294967294; SELECT @@global.sort_buffer_size; ---echo 'Bug# 34877: Invalid Values are showing in variable on assigning valid values.'; --echo '#--------------------FN_DYNVARS_151_04-------------------------#' ################################################################################### -# Change the value of sort_buffer_size to a valid value for SESSION Scope # +# Change the value of sort_buffer_size to a valid value for SESSION Scope # ################################################################################### SET @@session.sort_buffer_size = 32776; -SELECT @@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804; +SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000; SET @@session.sort_buffer_size = 32777; -SELECT @@session.sort_buffer_size= 32777 OR @@session.sort_buffer_size= 32804; +SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000; SET @@session.sort_buffer_size = 4294967295; SELECT @@session.sort_buffer_size; SET @@session.sort_buffer_size = 4294967294; @@ -104,13 +105,13 @@ SELECT @@session.sort_buffer_size; --echo '#------------------FN_DYNVARS_151_05-----------------------#' ################################################################## -# Change the value of sort_buffer_size to an invalid value # +# Change the value of sort_buffer_size to an invalid value # ################################################################## SET @@global.sort_buffer_size = 32775; -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; SET @@global.sort_buffer_size = -1024; -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; SET @@global.sort_buffer_size = 4294967296; SELECT @@global.sort_buffer_size; --Error ER_PARSE_ERROR @@ -121,19 +122,16 @@ SET @@global.sort_buffer_size = test; SELECT @@global.sort_buffer_size; SET @@session.sort_buffer_size = 32775; -SELECT @@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804; +SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000; SET @@session.sort_buffer_size = -2; -SELECT @@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804; +SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000; --Error ER_PARSE_ERROR SET @@session.sort_buffer_size = 65530.34.; SET @@session.sort_buffer_size = 4294967296; SELECT @@session.sort_buffer_size; ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; --Error ER_WRONG_TYPE_FOR_VAR SET @@session.sort_buffer_size = test; -SELECT @@session.sort_buffer_size; - --echo '#------------------FN_DYNVARS_151_06-----------------------#' #################################################################### @@ -141,14 +139,16 @@ SELECT @@session.sort_buffer_size; #################################################################### -SELECT @@global.sort_buffer_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size'; +SELECT @@global.sort_buffer_size = VARIABLE_VALUE FROM + INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size'; --echo '#------------------FN_DYNVARS_151_07-----------------------#' #################################################################### # Check if the value in SESSION Table matches value in variable # #################################################################### -SELECT @@session.sort_buffer_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size'; +SELECT @@session.sort_buffer_size = VARIABLE_VALUE FROM + INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size'; --echo '#------------------FN_DYNVARS_151_08-----------------------#' @@ -157,25 +157,22 @@ SELECT @@session.sort_buffer_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSI #################################################################### SET @@global.sort_buffer_size = TRUE; -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; SET @@global.sort_buffer_size = FALSE; -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; -echo 'Bug: Errors should be displayed on assigning TRUE/FALSE to variable'; - +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; --echo '#---------------------FN_DYNVARS_151_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.sort_buffer_size = 9000; SELECT @@sort_buffer_size = @@global.sort_buffer_size; - --echo '#---------------------FN_DYNVARS_151_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 same session variable# +################################################################################################### SET @@sort_buffer_size = 9000; SELECT @@sort_buffer_size = @@local.sort_buffer_size; @@ -184,12 +181,11 @@ SELECT @@local.sort_buffer_size = @@session.sort_buffer_size; --echo '#---------------------FN_DYNVARS_151_11----------------------#' ################################################################################### -# Check if sort_buffer_size can be accessed with and without @@ sign # +# Check if sort_buffer_size can be accessed with and without @@ sign # ################################################################################### SET sort_buffer_size = 9100; -SELECT @sort_buffer_size= 32776 OR @@sort_buffer_size= 32804; -SELECT @@sort_buffer_size; +SELECT @@sort_buffer_size >= 32776 AND @@sort_buffer_size < 33000; --Error ER_UNKNOWN_TABLE SELECT local.sort_buffer_size; --Error ER_UNKNOWN_TABLE @@ -203,11 +199,11 @@ SELECT sort_buffer_size = @@session.sort_buffer_size; #################################### SET @@global.sort_buffer_size = @start_global_value; -SELECT @@global.sort_buffer_size; SET @@session.sort_buffer_size = @start_session_value; -SELECT @@session.sort_buffer_size; +--enable_warnings ############################################################# -# END OF sort_buffer_size TESTS # +# END OF sort_buffer_size TESTS # ############################################################# + diff --git a/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result b/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result index 09a1fe59046..353ea9dee8c 100644 --- a/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result +++ b/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result @@ -1,47 +1,33 @@ SET @start_global_value = @@global.sort_buffer_size; -SELECT @start_global_value; -@start_global_value -262144 SET @start_session_value = @@session.sort_buffer_size; -SELECT @start_session_value; -@start_session_value -262144 '#--------------------FN_DYNVARS_151_01-------------------------#' SET @@global.sort_buffer_size = 1000; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '1000' SET @@global.sort_buffer_size = DEFAULT; -SELECT @@global.sort_buffer_size= 2097144 OR @@global.sort_buffer_size= 2097116; -@@global.sort_buffer_size= 2097144 OR @@global.sort_buffer_size= 2097116 +SELECT @@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000; +@@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000 1 SET @@session.sort_buffer_size = 2000; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '2000' SET @@session.sort_buffer_size = DEFAULT; -SELECT @@session.sort_buffer_size= 2097144 OR @@session.sort_buffer_size= 2097116; -@@session.sort_buffer_size= 2097144 OR @@session.sort_buffer_size= 2097116 +SELECT @@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000; +@@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000 1 '#--------------------FN_DYNVARS_151_02-------------------------#' SET @@global.sort_buffer_size = DEFAULT; -SELECT @@global.sort_buffer_size = 2097144 OR @@global.sort_buffer_size= 2097116; -@@global.sort_buffer_size = 2097144 OR @@global.sort_buffer_size= 2097116 +SELECT @@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000; +@@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000 1 SET @@session.sort_buffer_size = DEFAULT; -SELECT @@session.sort_buffer_size = 2097144 OR @@session.sort_buffer_size= 2097116; -@@session.sort_buffer_size = 2097144 OR @@session.sort_buffer_size= 2097116 +SELECT @@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000; +@@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000 1 '#--------------------FN_DYNVARS_151_03-------------------------#' SET @@global.sort_buffer_size = 32776; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '32776' -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; -@@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804 +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; +@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000 1 SET @@global.sort_buffer_size = 32777; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '32777' -SELECT @@global.sort_buffer_size= 32777 OR @@global.sort_buffer_size= 32804; -@@global.sort_buffer_size= 32777 OR @@global.sort_buffer_size= 32804 +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; +@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000 1 SET @@global.sort_buffer_size = 4294967295; SELECT @@global.sort_buffer_size; @@ -51,19 +37,14 @@ SET @@global.sort_buffer_size = 4294967294; SELECT @@global.sort_buffer_size; @@global.sort_buffer_size 4294967294 -'Bug# 34877: Invalid Values are showing in variable on assigning valid values.'; '#--------------------FN_DYNVARS_151_04-------------------------#' SET @@session.sort_buffer_size = 32776; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '32776' -SELECT @@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804; -@@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804 +SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000; +@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000 1 SET @@session.sort_buffer_size = 32777; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '32777' -SELECT @@session.sort_buffer_size= 32777 OR @@session.sort_buffer_size= 32804; -@@session.sort_buffer_size= 32777 OR @@session.sort_buffer_size= 32804 +SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000; +@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000 1 SET @@session.sort_buffer_size = 4294967295; SELECT @@session.sort_buffer_size; @@ -75,20 +56,14 @@ SELECT @@session.sort_buffer_size; 4294967294 '#------------------FN_DYNVARS_151_05-----------------------#' SET @@global.sort_buffer_size = 32775; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '32775' -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; -@@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804 +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; +@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000 1 SET @@global.sort_buffer_size = -1024; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '0' -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; -@@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804 +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; +@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000 1 SET @@global.sort_buffer_size = 4294967296; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '4294967296' SELECT @@global.sort_buffer_size; @@global.sort_buffer_size 4294967295 @@ -103,64 +78,47 @@ SELECT @@global.sort_buffer_size; @@global.sort_buffer_size 4294967295 SET @@session.sort_buffer_size = 32775; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '32775' -SELECT @@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804; -@@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804 +SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000; +@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000 1 SET @@session.sort_buffer_size = -2; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '0' -SELECT @@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804; -@@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804 +SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000; +@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000 1 SET @@session.sort_buffer_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 SET @@session.sort_buffer_size = 4294967296; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '4294967296' SELECT @@session.sort_buffer_size; @@session.sort_buffer_size 4294967295 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; SET @@session.sort_buffer_size = test; ERROR 42000: Incorrect argument type to variable 'sort_buffer_size' -SELECT @@session.sort_buffer_size; -@@session.sort_buffer_size -4294967295 '#------------------FN_DYNVARS_151_06-----------------------#' -SELECT @@global.sort_buffer_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size'; +SELECT @@global.sort_buffer_size = VARIABLE_VALUE FROM +INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size'; @@global.sort_buffer_size = VARIABLE_VALUE 1 '#------------------FN_DYNVARS_151_07-----------------------#' -SELECT @@session.sort_buffer_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size'; +SELECT @@session.sort_buffer_size = VARIABLE_VALUE FROM +INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size'; @@session.sort_buffer_size = VARIABLE_VALUE 1 '#------------------FN_DYNVARS_151_08-----------------------#' SET @@global.sort_buffer_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '1' -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; -@@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804 +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; +@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000 1 SET @@global.sort_buffer_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '0' -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; -@@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804 +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; +@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000 1 -'Bug: Errors should be displayed on assigning TRUE/FALSE to variable' '#---------------------FN_DYNVARS_151_09----------------------#' SET @@global.sort_buffer_size = 9000; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '9000' SELECT @@sort_buffer_size = @@global.sort_buffer_size; @@sort_buffer_size = @@global.sort_buffer_size 0 '#---------------------FN_DYNVARS_151_10----------------------#' SET @@sort_buffer_size = 9000; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '9000' SELECT @@sort_buffer_size = @@local.sort_buffer_size; @@sort_buffer_size = @@local.sort_buffer_size 1 @@ -169,14 +127,9 @@ SELECT @@local.sort_buffer_size = @@session.sort_buffer_size; 1 '#---------------------FN_DYNVARS_151_11----------------------#' SET sort_buffer_size = 9100; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '9100' -SELECT @sort_buffer_size= 32776 OR @@sort_buffer_size= 32804; -@sort_buffer_size= 32776 OR @@sort_buffer_size= 32804 +SELECT @@sort_buffer_size >= 32776 AND @@sort_buffer_size < 33000; +@@sort_buffer_size >= 32776 AND @@sort_buffer_size < 33000 1 -SELECT @@sort_buffer_size; -@@sort_buffer_size -32804 SELECT local.sort_buffer_size; ERROR 42S02: Unknown table 'local' in field list SELECT session.sort_buffer_size; @@ -184,10 +137,4 @@ ERROR 42S02: Unknown table 'session' in field list SELECT sort_buffer_size = @@session.sort_buffer_size; ERROR 42S22: Unknown column 'sort_buffer_size' in 'field list' SET @@global.sort_buffer_size = @start_global_value; -SELECT @@global.sort_buffer_size; -@@global.sort_buffer_size -262144 SET @@session.sort_buffer_size = @start_session_value; -SELECT @@session.sort_buffer_size; -@@session.sort_buffer_size -262144 diff --git a/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result b/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result index e9bd14abc67..3708f88f889 100644 --- a/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result +++ b/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result @@ -1,47 +1,33 @@ SET @start_global_value = @@global.sort_buffer_size; -SELECT @start_global_value; -@start_global_value -262144 SET @start_session_value = @@session.sort_buffer_size; -SELECT @start_session_value; -@start_session_value -262144 '#--------------------FN_DYNVARS_151_01-------------------------#' SET @@global.sort_buffer_size = 1000; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '1000' SET @@global.sort_buffer_size = DEFAULT; -SELECT @@global.sort_buffer_size= 2097144 OR @@global.sort_buffer_size= 2097116; -@@global.sort_buffer_size= 2097144 OR @@global.sort_buffer_size= 2097116 +SELECT @@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000; +@@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000 1 SET @@session.sort_buffer_size = 2000; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '2000' SET @@session.sort_buffer_size = DEFAULT; -SELECT @@session.sort_buffer_size= 2097144 OR @@session.sort_buffer_size= 2097116; -@@session.sort_buffer_size= 2097144 OR @@session.sort_buffer_size= 2097116 +SELECT @@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000; +@@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000 1 '#--------------------FN_DYNVARS_151_02-------------------------#' SET @@global.sort_buffer_size = DEFAULT; -SELECT @@global.sort_buffer_size = 2097144 OR @@global.sort_buffer_size= 2097116; -@@global.sort_buffer_size = 2097144 OR @@global.sort_buffer_size= 2097116 +SELECT @@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000; +@@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000 1 SET @@session.sort_buffer_size = DEFAULT; -SELECT @@session.sort_buffer_size = 2097144 OR @@session.sort_buffer_size= 2097116; -@@session.sort_buffer_size = 2097144 OR @@session.sort_buffer_size= 2097116 +SELECT @@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000; +@@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000 1 '#--------------------FN_DYNVARS_151_03-------------------------#' SET @@global.sort_buffer_size = 32776; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '32776' -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; -@@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804 +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; +@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000 1 SET @@global.sort_buffer_size = 32777; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '32777' -SELECT @@global.sort_buffer_size= 32777 OR @@global.sort_buffer_size= 32804; -@@global.sort_buffer_size= 32777 OR @@global.sort_buffer_size= 32804 +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; +@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000 1 SET @@global.sort_buffer_size = 4294967295; SELECT @@global.sort_buffer_size; @@ -51,19 +37,14 @@ SET @@global.sort_buffer_size = 4294967294; SELECT @@global.sort_buffer_size; @@global.sort_buffer_size 4294967294 -'Bug# 34877: Invalid Values are showing in variable on assigning valid values.'; '#--------------------FN_DYNVARS_151_04-------------------------#' SET @@session.sort_buffer_size = 32776; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '32776' -SELECT @@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804; -@@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804 +SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000; +@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000 1 SET @@session.sort_buffer_size = 32777; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '32777' -SELECT @@session.sort_buffer_size= 32777 OR @@session.sort_buffer_size= 32804; -@@session.sort_buffer_size= 32777 OR @@session.sort_buffer_size= 32804 +SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000; +@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000 1 SET @@session.sort_buffer_size = 4294967295; SELECT @@session.sort_buffer_size; @@ -75,16 +56,12 @@ SELECT @@session.sort_buffer_size; 4294967294 '#------------------FN_DYNVARS_151_05-----------------------#' SET @@global.sort_buffer_size = 32775; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '32775' -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; -@@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804 +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; +@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000 1 SET @@global.sort_buffer_size = -1024; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '0' -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; -@@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804 +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; +@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000 1 SET @@global.sort_buffer_size = 4294967296; SELECT @@global.sort_buffer_size; @@ -101,16 +78,12 @@ SELECT @@global.sort_buffer_size; @@global.sort_buffer_size 4294967296 SET @@session.sort_buffer_size = 32775; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '32775' -SELECT @@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804; -@@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804 +SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000; +@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000 1 SET @@session.sort_buffer_size = -2; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '0' -SELECT @@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804; -@@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804 +SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000; +@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000 1 SET @@session.sort_buffer_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 @@ -118,45 +91,34 @@ SET @@session.sort_buffer_size = 4294967296; SELECT @@session.sort_buffer_size; @@session.sort_buffer_size 4294967296 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; SET @@session.sort_buffer_size = test; ERROR 42000: Incorrect argument type to variable 'sort_buffer_size' -SELECT @@session.sort_buffer_size; -@@session.sort_buffer_size -4294967296 '#------------------FN_DYNVARS_151_06-----------------------#' -SELECT @@global.sort_buffer_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size'; +SELECT @@global.sort_buffer_size = VARIABLE_VALUE FROM +INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size'; @@global.sort_buffer_size = VARIABLE_VALUE 1 '#------------------FN_DYNVARS_151_07-----------------------#' -SELECT @@session.sort_buffer_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size'; +SELECT @@session.sort_buffer_size = VARIABLE_VALUE FROM +INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size'; @@session.sort_buffer_size = VARIABLE_VALUE 1 '#------------------FN_DYNVARS_151_08-----------------------#' SET @@global.sort_buffer_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '1' -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; -@@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804 +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; +@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000 1 SET @@global.sort_buffer_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '0' -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; -@@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804 +SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000; +@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000 1 -'Bug: Errors should be displayed on assigning TRUE/FALSE to variable' '#---------------------FN_DYNVARS_151_09----------------------#' SET @@global.sort_buffer_size = 9000; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '9000' SELECT @@sort_buffer_size = @@global.sort_buffer_size; @@sort_buffer_size = @@global.sort_buffer_size 0 '#---------------------FN_DYNVARS_151_10----------------------#' SET @@sort_buffer_size = 9000; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '9000' SELECT @@sort_buffer_size = @@local.sort_buffer_size; @@sort_buffer_size = @@local.sort_buffer_size 1 @@ -165,14 +127,9 @@ SELECT @@local.sort_buffer_size = @@session.sort_buffer_size; 1 '#---------------------FN_DYNVARS_151_11----------------------#' SET sort_buffer_size = 9100; -Warnings: -Warning 1292 Truncated incorrect sort_buffer_size value: '9100' -SELECT @sort_buffer_size= 32776 OR @@sort_buffer_size= 32804; -@sort_buffer_size= 32776 OR @@sort_buffer_size= 32804 +SELECT @@sort_buffer_size >= 32776 AND @@sort_buffer_size < 33000; +@@sort_buffer_size >= 32776 AND @@sort_buffer_size < 33000 1 -SELECT @@sort_buffer_size; -@@sort_buffer_size -32804 SELECT local.sort_buffer_size; ERROR 42S02: Unknown table 'local' in field list SELECT session.sort_buffer_size; @@ -180,10 +137,4 @@ ERROR 42S02: Unknown table 'session' in field list SELECT sort_buffer_size = @@session.sort_buffer_size; ERROR 42S22: Unknown column 'sort_buffer_size' in 'field list' SET @@global.sort_buffer_size = @start_global_value; -SELECT @@global.sort_buffer_size; -@@global.sort_buffer_size -262144 SET @@session.sort_buffer_size = @start_session_value; -SELECT @@session.sort_buffer_size; -@@session.sort_buffer_size -262144 From bf1e54777972ff48122ee7bd2f33681e42f52a25 Mon Sep 17 00:00:00 2001 From: Horst Hunger Date: Tue, 2 Dec 2008 11:05:56 +0100 Subject: [PATCH 04/36] Fix for Bug#36876: The minimum value differs depending on the OS and mysqld build, so that the test fail spradically. The check of this value has been changed from check of concrete values to the check of a range that is near by the expected value. --- mysql-test/include/linux_sys_vars.inc | 1 - mysql-test/include/windows_sys_vars.inc | 1 - .../sys_vars/inc/key_buffer_size_basic.inc | 54 ++++++++---------- .../r/key_buffer_size_basic_32.result | 55 ++++++++----------- .../r/key_buffer_size_basic_64.result | 55 ++++++++----------- 5 files changed, 68 insertions(+), 98 deletions(-) diff --git a/mysql-test/include/linux_sys_vars.inc b/mysql-test/include/linux_sys_vars.inc index 4401a1e057a..85d7c6df7dc 100644 --- a/mysql-test/include/linux_sys_vars.inc +++ b/mysql-test/include/linux_sys_vars.inc @@ -9,7 +9,6 @@ SET @min_flush_time = 0; #SET @max_flush_time = 0; SET @default_key_buffer_size = 131072; -SET @min_key_buffer_size = 36; #SET @default_join_buffer_size = 131072; #SET @min_join_buffer_size = 8200; diff --git a/mysql-test/include/windows_sys_vars.inc b/mysql-test/include/windows_sys_vars.inc index 90ff86fefd1..1d51ddb52f9 100644 --- a/mysql-test/include/windows_sys_vars.inc +++ b/mysql-test/include/windows_sys_vars.inc @@ -9,7 +9,6 @@ SET @min_flush_time = 0; #SET @max_flush_time = 0; SET @default_key_buffer_size= 131072; -SET @min_key_buffer_size= 8; #SET @default_join_buffer_size = 131072; #SET @min_join_buffer_size = 8200; diff --git a/mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc b/mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc index 996a9e712f9..a8fa50a6a23 100644 --- a/mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc +++ b/mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc @@ -17,14 +17,14 @@ # * Valid & Invalid values # # * Scope & Access method # # * Data Integrity # +# Modified: Horst Hunger 2008-11-27 # +# Due to OS depending values the check has been changed # +# from concrete values to ranges. # # # -# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # -# server-system-variables.html # +# Reference: # +# http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html # # # ############################################################################### -# Changes: # -# 2008-03-06 hhunger Got "lost connections with 5.1.24 # -######################################################################## --source include/load_sysvars.inc @@ -38,8 +38,6 @@ ######################################################################## SET @start_value = @@global.key_buffer_size; -SELECT @start_value; - --echo '#--------------------FN_DYNVARS_055_01------------------------#' ######################################################################## @@ -49,9 +47,7 @@ SELECT @start_value; SET @@global.key_buffer_size = 99; --Error ER_NO_DEFAULT SET @@global.key_buffer_size = DEFAULT; ---echo 'Bug# 34878: This variable has default value according to documentation'; -SELECT @@global.key_buffer_size = @min_key_buffer_size; - +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; --echo '#---------------------FN_DYNVARS_055_02-------------------------#' ############################################### @@ -66,26 +62,25 @@ SELECT @@global.key_buffer_size = @start_value; # Change the value of key_buffer_size to a valid value # ######################################################################## -SET @@global.key_buffer_size = @min_key_buffer_size; -SELECT @@global.key_buffer_size= @min_key_buffer_size; +SET @@global.key_buffer_size = 8 ; +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; --disable_warnings -#Due to "lost connection" +#Due to increasing the runtime significantly and allocating the buffer instantly. #SET @@global.key_buffer_size = 4294967295; --enable_warnings #SELECT @@global.key_buffer_size; SET @@global.key_buffer_size = 1800; -SELECT @@global.key_buffer_size = @min_key_buffer_size; +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; SET @@global.key_buffer_size = 65535; SELECT @@global.key_buffer_size; -echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - --echo '#--------------------FN_DYNVARS_055_04-------------------------#' ########################################################################### # Change the value of key_buffer_size to invalid value # ########################################################################### -# Due to "lost connection" +# Due to increasing the runtime significantly and allocating the buffer instantly +# with a size of 18446744073709551615 bytes with 32bit exec. #SET @@global.key_buffer_size = -1; #SELECT @@global.key_buffer_size; #SET @@global.key_buffer_size = 100000000000; @@ -96,16 +91,14 @@ SELECT @@global.key_buffer_size; #SET @@global.key_buffer_size = -1024; #SELECT @@global.key_buffer_size; SET @@global.key_buffer_size = 4; -SELECT @@global.key_buffer_size = @min_key_buffer_size; ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; --Error ER_WRONG_TYPE_FOR_VAR SET @@global.key_buffer_size = ON; -SELECT @@global.key_buffer_size = @min_key_buffer_size; +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; --Error ER_WRONG_TYPE_FOR_VAR SET @@global.key_buffer_size = 'test'; -SELECT @@global.key_buffer_size = @min_key_buffer_size; - +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; --echo '#-------------------FN_DYNVARS_055_05----------------------------#' ########################################################################### @@ -114,8 +107,7 @@ SELECT @@global.key_buffer_size = @min_key_buffer_size; --Error ER_GLOBAL_VARIABLE SET @@session.key_buffer_size = 0; -SELECT @@key_buffer_size = @min_key_buffer_size; - +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; --echo '#----------------------FN_DYNVARS_055_06------------------------#' ############################################################################## @@ -130,17 +122,15 @@ SELECT @@key_buffer_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='key_buffer_size'; - --echo '#---------------------FN_DYNVARS_055_07----------------------#' ################################################################### # Check if TRUE and FALSE values can be used on variable # ################################################################### SET @@global.key_buffer_size = TRUE; -SELECT @@global.key_buffer_size = @min_key_buffer_size; +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; SET @@global.key_buffer_size = FALSE; -SELECT @@global.key_buffer_size = @min_key_buffer_size; - +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; --echo '#---------------------FN_DYNVARS_055_08----------------------#' ##################################################################### @@ -150,7 +140,7 @@ SELECT @@global.key_buffer_size = @min_key_buffer_size; # due to differences in contents of the warnings --disable_warnings -SET @@global.key_buffer_size = @min_key_buffer_size; +SET @@global.key_buffer_size = 8 ; SELECT @@key_buffer_size = @@global.key_buffer_size; --enable_warnings @@ -160,8 +150,8 @@ SELECT @@key_buffer_size = @@global.key_buffer_size; ########################################################################## --Error ER_GLOBAL_VARIABLE -SET key_buffer_size = @min_key_buffer_size; -SELECT @@key_buffer_size = @min_key_buffer_size; +SET key_buffer_size = 8 ; +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; --Error ER_PARSE_ERROR SET local.key_buffer_size = 10; --Error ER_UNKNOWN_TABLE @@ -179,9 +169,9 @@ SELECT key_buffer_size = @@session.key_buffer_size; ############################## SET @@global.key_buffer_size = @start_value; -SELECT @@global.key_buffer_size; --enable_warnings ####################################################################### # END OF key_buffer_size TESTS # ####################################################################### + diff --git a/mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result b/mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result index 981988a1d4d..51c4f841205 100644 --- a/mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result +++ b/mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result @@ -1,14 +1,10 @@ SET @start_value = @@global.key_buffer_size; -SELECT @start_value; -@start_value -1048576 '#--------------------FN_DYNVARS_055_01------------------------#' SET @@global.key_buffer_size = 99; SET @@global.key_buffer_size = DEFAULT; ERROR 42000: Variable 'key_buffer_size' doesn't have a default value -'Bug# 34878: This variable has default value according to documentation'; -SELECT @@global.key_buffer_size = @min_key_buffer_size; -@@global.key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 '#---------------------FN_DYNVARS_055_02-------------------------#' SET @@global.key_buffer_size = @start_value; @@ -16,21 +12,20 @@ SELECT @@global.key_buffer_size = @start_value; @@global.key_buffer_size = @start_value 1 '#--------------------FN_DYNVARS_055_03------------------------#' -SET @@global.key_buffer_size = @min_key_buffer_size; -SELECT @@global.key_buffer_size= @min_key_buffer_size; -@@global.key_buffer_size= @min_key_buffer_size +SET @@global.key_buffer_size = 8 ; +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 SET @@global.key_buffer_size = 1800; Warnings: Warning 1292 Truncated incorrect key_buffer_size value: '1800' -SELECT @@global.key_buffer_size = @min_key_buffer_size; -@@global.key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 SET @@global.key_buffer_size = 65535; SELECT @@global.key_buffer_size; @@global.key_buffer_size 61440 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' '#--------------------FN_DYNVARS_055_04-------------------------#' SET @@global.key_buffer_size = 10000.01; ERROR 42000: Incorrect argument type to variable 'key_buffer_size' @@ -40,25 +35,24 @@ SELECT @@global.key_buffer_size; SET @@global.key_buffer_size = 4; Warnings: Warning 1292 Truncated incorrect key_buffer_size value: '4' -SELECT @@global.key_buffer_size = @min_key_buffer_size; -@@global.key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; SET @@global.key_buffer_size = ON; ERROR 42000: Incorrect argument type to variable 'key_buffer_size' -SELECT @@global.key_buffer_size = @min_key_buffer_size; -@@global.key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 SET @@global.key_buffer_size = 'test'; ERROR 42000: Incorrect argument type to variable 'key_buffer_size' -SELECT @@global.key_buffer_size = @min_key_buffer_size; -@@global.key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 '#-------------------FN_DYNVARS_055_05----------------------------#' SET @@session.key_buffer_size = 0; ERROR HY000: Variable 'key_buffer_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@key_buffer_size = @min_key_buffer_size; -@@key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 '#----------------------FN_DYNVARS_055_06------------------------#' SELECT @@global.key_buffer_size = VARIABLE_VALUE @@ -75,25 +69,25 @@ WHERE VARIABLE_NAME='key_buffer_size'; SET @@global.key_buffer_size = TRUE; Warnings: Warning 1292 Truncated incorrect key_buffer_size value: '1' -SELECT @@global.key_buffer_size = @min_key_buffer_size; -@@global.key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 SET @@global.key_buffer_size = FALSE; Warnings: Warning 1438 Cannot drop default keycache -SELECT @@global.key_buffer_size = @min_key_buffer_size; -@@global.key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 '#---------------------FN_DYNVARS_055_08----------------------#' -SET @@global.key_buffer_size = @min_key_buffer_size; +SET @@global.key_buffer_size = 8 ; SELECT @@key_buffer_size = @@global.key_buffer_size; @@key_buffer_size = @@global.key_buffer_size 1 '#---------------------FN_DYNVARS_055_09----------------------#' -SET key_buffer_size = @min_key_buffer_size; +SET key_buffer_size = 8 ; ERROR HY000: Variable 'key_buffer_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@key_buffer_size = @min_key_buffer_size; -@@key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 SET local.key_buffer_size = 10; 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 'key_buffer_size = 10' at line 1 @@ -106,6 +100,3 @@ ERROR 42S02: Unknown table 'global' in field list SELECT key_buffer_size = @@session.key_buffer_size; ERROR 42S22: Unknown column 'key_buffer_size' in 'field list' SET @@global.key_buffer_size = @start_value; -SELECT @@global.key_buffer_size; -@@global.key_buffer_size -1048576 diff --git a/mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result b/mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result index 981988a1d4d..51c4f841205 100644 --- a/mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result +++ b/mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result @@ -1,14 +1,10 @@ SET @start_value = @@global.key_buffer_size; -SELECT @start_value; -@start_value -1048576 '#--------------------FN_DYNVARS_055_01------------------------#' SET @@global.key_buffer_size = 99; SET @@global.key_buffer_size = DEFAULT; ERROR 42000: Variable 'key_buffer_size' doesn't have a default value -'Bug# 34878: This variable has default value according to documentation'; -SELECT @@global.key_buffer_size = @min_key_buffer_size; -@@global.key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 '#---------------------FN_DYNVARS_055_02-------------------------#' SET @@global.key_buffer_size = @start_value; @@ -16,21 +12,20 @@ SELECT @@global.key_buffer_size = @start_value; @@global.key_buffer_size = @start_value 1 '#--------------------FN_DYNVARS_055_03------------------------#' -SET @@global.key_buffer_size = @min_key_buffer_size; -SELECT @@global.key_buffer_size= @min_key_buffer_size; -@@global.key_buffer_size= @min_key_buffer_size +SET @@global.key_buffer_size = 8 ; +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 SET @@global.key_buffer_size = 1800; Warnings: Warning 1292 Truncated incorrect key_buffer_size value: '1800' -SELECT @@global.key_buffer_size = @min_key_buffer_size; -@@global.key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 SET @@global.key_buffer_size = 65535; SELECT @@global.key_buffer_size; @@global.key_buffer_size 61440 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' '#--------------------FN_DYNVARS_055_04-------------------------#' SET @@global.key_buffer_size = 10000.01; ERROR 42000: Incorrect argument type to variable 'key_buffer_size' @@ -40,25 +35,24 @@ SELECT @@global.key_buffer_size; SET @@global.key_buffer_size = 4; Warnings: Warning 1292 Truncated incorrect key_buffer_size value: '4' -SELECT @@global.key_buffer_size = @min_key_buffer_size; -@@global.key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; SET @@global.key_buffer_size = ON; ERROR 42000: Incorrect argument type to variable 'key_buffer_size' -SELECT @@global.key_buffer_size = @min_key_buffer_size; -@@global.key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 SET @@global.key_buffer_size = 'test'; ERROR 42000: Incorrect argument type to variable 'key_buffer_size' -SELECT @@global.key_buffer_size = @min_key_buffer_size; -@@global.key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 '#-------------------FN_DYNVARS_055_05----------------------------#' SET @@session.key_buffer_size = 0; ERROR HY000: Variable 'key_buffer_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@key_buffer_size = @min_key_buffer_size; -@@key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 '#----------------------FN_DYNVARS_055_06------------------------#' SELECT @@global.key_buffer_size = VARIABLE_VALUE @@ -75,25 +69,25 @@ WHERE VARIABLE_NAME='key_buffer_size'; SET @@global.key_buffer_size = TRUE; Warnings: Warning 1292 Truncated incorrect key_buffer_size value: '1' -SELECT @@global.key_buffer_size = @min_key_buffer_size; -@@global.key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 SET @@global.key_buffer_size = FALSE; Warnings: Warning 1438 Cannot drop default keycache -SELECT @@global.key_buffer_size = @min_key_buffer_size; -@@global.key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 '#---------------------FN_DYNVARS_055_08----------------------#' -SET @@global.key_buffer_size = @min_key_buffer_size; +SET @@global.key_buffer_size = 8 ; SELECT @@key_buffer_size = @@global.key_buffer_size; @@key_buffer_size = @@global.key_buffer_size 1 '#---------------------FN_DYNVARS_055_09----------------------#' -SET key_buffer_size = @min_key_buffer_size; +SET key_buffer_size = 8 ; ERROR HY000: Variable 'key_buffer_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@key_buffer_size = @min_key_buffer_size; -@@key_buffer_size = @min_key_buffer_size +SELECT @@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36; +@@global.key_buffer_size >= 8 AND @@global.key_buffer_size <= 36 1 SET local.key_buffer_size = 10; 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 'key_buffer_size = 10' at line 1 @@ -106,6 +100,3 @@ ERROR 42S02: Unknown table 'global' in field list SELECT key_buffer_size = @@session.key_buffer_size; ERROR 42S22: Unknown column 'key_buffer_size' in 'field list' SET @@global.key_buffer_size = @start_value; -SELECT @@global.key_buffer_size; -@@global.key_buffer_size -1048576 From 6538f19f9a73c1102f4ca240bda6aa58799aba6b Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Tue, 2 Dec 2008 11:18:01 +0100 Subject: [PATCH 05/36] Bug#40389: REORGANIZE PARTITION crashes when only using one partition The non documented command 'ALTER PARTITION t REORGANIZE PARTITION' (without any partitions!) which only make sense for nativly partitioned engines, such as NDB, crashes the server if there was no change of number of partitions. The problem was wrong usage of fast_end_partition function, which led to usage of a non initialized variable. mysql-test/r/partition_mgm.result: Bug#40389: REORGANIZE PARTITION crashes when only using one partition Updated test result. mysql-test/t/partition_mgm.test: Bug#40389: REORGANIZE PARTITION crashes when only using one partition Added new test case. sql/partition_info.cc: Bug#40389: REORGANIZE PARTITION crashes when only using one partition Added DBUG_ASSERT to easier catch similar problems. sql/sql_partition.cc: Bug#40389: REORGANIZE PARTITION crashes when only using one partition fast_end_partitions is called later in mysql_alter_table if variable fast_alter_partition is set. --- mysql-test/r/partition_mgm.result | 7 +++++++ mysql-test/t/partition_mgm.test | 11 +++++++++++ sql/partition_info.cc | 1 + sql/sql_partition.cc | 5 ++--- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/partition_mgm.result b/mysql-test/r/partition_mgm.result index 9ef220028b3..eeb9be949a0 100644 --- a/mysql-test/r/partition_mgm.result +++ b/mysql-test/r/partition_mgm.result @@ -1,4 +1,11 @@ DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a INT PRIMARY KEY) +ENGINE MYISAM +PARTITION BY HASH (a) +PARTITIONS 1; +INSERT INTO t1 VALUES (1),(2),(3),(4),(5); +ALTER TABLE t1 REORGANIZE PARTITION; +DROP TABLE t1; create table t1 (a int) partition by range (a) subpartition by key (a) diff --git a/mysql-test/t/partition_mgm.test b/mysql-test/t/partition_mgm.test index 68da4a5b390..1f53989b4d4 100644 --- a/mysql-test/t/partition_mgm.test +++ b/mysql-test/t/partition_mgm.test @@ -3,6 +3,17 @@ DROP TABLE IF EXISTS t1; --enable_warnings +# +# Bug 40389: REORGANIZE PARTITION crashes when only using one partition +# +CREATE TABLE t1 (a INT PRIMARY KEY) +ENGINE MYISAM +PARTITION BY HASH (a) +PARTITIONS 1; +INSERT INTO t1 VALUES (1),(2),(3),(4),(5); +ALTER TABLE t1 REORGANIZE PARTITION; +DROP TABLE t1; + # # Bug 21143: mysqld hang when error in number of subparts in # REORGANIZE command diff --git a/sql/partition_info.cc b/sql/partition_info.cc index 02f2c9b0ab1..e2027d3571e 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -867,6 +867,7 @@ bool partition_info::check_partition_info(THD *thd, handlerton **eng_type, if (part_type != HASH_PARTITION || !list_of_part_fields) { + DBUG_ASSERT(part_expr); err= part_expr->walk(&Item::check_partition_func_processor, 0, NULL); if (!err && is_sub_partitioned() && !list_of_subpart_fields) diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index da80a2125e9..6fb803ce4ff 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -4228,9 +4228,8 @@ uint prep_alter_part_table(THD *thd, TABLE *table, Alter_info *alter_info, after the change as before. Thus we can reply ok immediately without any changes at all. */ - DBUG_RETURN(fast_end_partition(thd, ULL(0), ULL(0), - table, NULL, - TRUE, NULL, FALSE)); + *fast_alter_partition= TRUE; + DBUG_RETURN(FALSE); } else if (new_part_no > curr_part_no) { From 7ed2caed5843abdab9d664e2dafba83b1a1cfb96 Mon Sep 17 00:00:00 2001 From: Horst Hunger Date: Tue, 2 Dec 2008 12:34:52 +0100 Subject: [PATCH 06/36] Fix for Bug#37810: The "show status" may be received by the server in a startup state, where it only can reject the statement, so that the client then react with 2013. So, adding 2013 to the list of errors may help, as the "show status" will be repeated then. --- mysql-test/include/wait_until_connected_again.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/include/wait_until_connected_again.inc b/mysql-test/include/wait_until_connected_again.inc index dc96f646cb3..2d8356cb0f5 100644 --- a/mysql-test/include/wait_until_connected_again.inc +++ b/mysql-test/include/wait_until_connected_again.inc @@ -6,7 +6,7 @@ let $counter= 500; while ($mysql_errno) { - --error 0,2002,2006 + --error 0,2002,2006,2013 show status; dec $counter; From 4d63306d42d51724b15b29d2379b1e7122ed987c Mon Sep 17 00:00:00 2001 From: Horst Hunger Date: Wed, 3 Dec 2008 10:39:31 +0100 Subject: [PATCH 07/36] temporary fix for Bug#37780: A short analysis of the test shows that it needs a replacement of the sleeps and as "In most cases, it might take some time for the thread to die, because the kill flag is checked only at specific intervals" (user manual) to carfully check that and insert waiting for that event. --- mysql-test/t/disabled.def | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index c01bb4b9e44..0ba5e353474 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -10,5 +10,6 @@ # ############################################################################## federated_transactions : Bug#29523 Transactions do not work -log_tables.test : Bug #37798: main.log_tables fails randomly on powermacg5 and windows -slow_query_log_func.test : Bug #37962: *_func tests containing sleeps/race conditions +log_tables : Bug #37798: main.log_tables fails randomly on powermacg5 and windows +slow_query_log_func : Bug #37962: *_func tests containing sleeps/race conditions +kill : Bug#37780 2008-12-03 HHunger need some changes to be robust enoiugh for pushbuild. From 120cfcacb865e3127f0d0a01d64d5e756774e35c Mon Sep 17 00:00:00 2001 From: Horst Hunger Date: Wed, 3 Dec 2008 16:43:53 +0100 Subject: [PATCH 08/36] (No) fix for Bug#36878: The test has been taken out fo main and put into "sys_vars", but the opportunity to check the test has been take to improve it. --- .../sys_vars/inc/tmp_table_size_basic.inc | 30 ++----------------- .../sys_vars/r/tmp_table_size_basic_32.result | 6 ---- .../sys_vars/r/tmp_table_size_basic_64.result | 6 ---- 3 files changed, 3 insertions(+), 39 deletions(-) diff --git a/mysql-test/suite/sys_vars/inc/tmp_table_size_basic.inc b/mysql-test/suite/sys_vars/inc/tmp_table_size_basic.inc index 7f69bcd1f8c..d29ef6da094 100644 --- a/mysql-test/suite/sys_vars/inc/tmp_table_size_basic.inc +++ b/mysql-test/suite/sys_vars/inc/tmp_table_size_basic.inc @@ -18,8 +18,8 @@ # * Scope & Access method # # * Data Integrity # # # -# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # -# server-system-variables.html#option_mysqld_tmp_table_size # +# Reference: # +# http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html # # # ############################################################################### @@ -29,7 +29,6 @@ # START OF tmp_table_size TESTS # ############################################################## - ############################################################# # Save initial value # ############################################################# @@ -39,8 +38,6 @@ SELECT @start_global_value; SET @start_session_value = @@session.tmp_table_size; SELECT @start_session_value; ---echo 'Bug# 34876: This variable has invalid default value as compared to documentation'; - --echo '#--------------------FN_DYNVARS_005_01-------------------------#' ############################################################## # Display the DEFAULT value of tmp_table_size # @@ -50,16 +47,13 @@ SET @@global.tmp_table_size = 100; SET @@global.tmp_table_size = DEFAULT; SELECT @@global.tmp_table_size; ---echo 'Bug# 34876: This variable has invalid default value as compared to documentation'; SET @@session.tmp_table_size = 200; SET @@session.tmp_table_size = DEFAULT; SELECT @@session.tmp_table_size; ---echo 'Bug# 34876: This variable has invalid default value as compared to documentation'; - --echo '#--------------------FN_DYNVARS_005_02-------------------------#' ######################################################################## -# Check the DEFAULT value of tmp_table_size # +# Check the DEFAULT value of tmp_table_size # ######################################################################## SET @@global.tmp_table_size = DEFAULT; @@ -68,8 +62,6 @@ SELECT @@global.tmp_table_size = 33554432; SET @@session.tmp_table_size = DEFAULT; SELECT @@session.tmp_table_size = 33554432; ---echo 'Bug# 34876: This variable has invalid default value as compared to documentation'; - --echo '#--------------------FN_DYNVARS_005_03-------------------------#' ######################################################################## # Change the value of tmp_table_size to a valid value for GLOBAL Scope # @@ -111,24 +103,17 @@ SELECT @@global.tmp_table_size; SET @@global.tmp_table_size = 1000; SELECT @@global.tmp_table_size; ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - - -- Error ER_WRONG_TYPE_FOR_VAR SET @@global.tmp_table_size = ON; - -- Error ER_WRONG_TYPE_FOR_VAR SET @@global.tmp_table_size = OFF; - SET @@global.tmp_table_size = True; SELECT @@global.tmp_table_size; SET @@global.tmp_table_size = False; SELECT @@global.tmp_table_size; ---echo 'Bug:Error should be shown that variable is numeric and can not assigned boolean value'; - -- Error ER_WRONG_TYPE_FOR_VAR SET @@global.tmp_table_size = 65530.34; @@ -136,11 +121,9 @@ SET @@global.tmp_table_size = 65530.34; -- Error ER_WRONG_TYPE_FOR_VAR SET @@global.tmp_table_size ="Test"; - -- Error ER_WRONG_TYPE_FOR_VAR SET @@session.tmp_table_size = ON; - -- Error ER_WRONG_TYPE_FOR_VAR SET @@session.tmp_table_size = OFF; @@ -156,13 +139,11 @@ SET @@session.tmp_table_size = "Test"; SET @@session.tmp_table_size = 12345678901; SELECT @@session.tmp_table_size; - --echo '#------------------FN_DYNVARS_005_06-----------------------#' #################################################################### # Check if the value in GLOBAL Table matches value in variable # #################################################################### - SELECT @@global.tmp_table_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='tmp_table_size'; @@ -176,9 +157,6 @@ SELECT @@session.tmp_table_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='tmp_table_size'; - - - --echo '#---------------------FN_DYNVARS_001_09----------------------#' ######################################################################## # Check if global and session variables are independent of each other # @@ -216,7 +194,6 @@ SELECT global.tmp_table_size; --Error ER_BAD_FIELD_ERROR SELECT tmp_table_size = @@session.tmp_table_size; - #################################### # Restore initial value # #################################### @@ -226,7 +203,6 @@ SELECT @@global.tmp_table_size; SET @@session.tmp_table_size = @start_session_value; SELECT @@session.tmp_table_size; - ################################################### # END OF tmp_table_size TESTS # ################################################### diff --git a/mysql-test/suite/sys_vars/r/tmp_table_size_basic_32.result b/mysql-test/suite/sys_vars/r/tmp_table_size_basic_32.result index aeafd95ed55..ba3fd5420c6 100644 --- a/mysql-test/suite/sys_vars/r/tmp_table_size_basic_32.result +++ b/mysql-test/suite/sys_vars/r/tmp_table_size_basic_32.result @@ -6,7 +6,6 @@ SET @start_session_value = @@session.tmp_table_size; SELECT @start_session_value; @start_session_value 16777216 -'Bug# 34876: This variable has invalid default value as compared to documentation'; '#--------------------FN_DYNVARS_005_01-------------------------#' SET @@global.tmp_table_size = 100; Warnings: @@ -15,7 +14,6 @@ SET @@global.tmp_table_size = DEFAULT; SELECT @@global.tmp_table_size; @@global.tmp_table_size 16777216 -'Bug# 34876: This variable has invalid default value as compared to documentation'; SET @@session.tmp_table_size = 200; Warnings: Warning 1292 Truncated incorrect tmp_table_size value: '200' @@ -23,7 +21,6 @@ SET @@session.tmp_table_size = DEFAULT; SELECT @@session.tmp_table_size; @@session.tmp_table_size 16777216 -'Bug# 34876: This variable has invalid default value as compared to documentation'; '#--------------------FN_DYNVARS_005_02-------------------------#' SET @@global.tmp_table_size = DEFAULT; SELECT @@global.tmp_table_size = 33554432; @@ -33,7 +30,6 @@ SET @@session.tmp_table_size = DEFAULT; SELECT @@session.tmp_table_size = 33554432; @@session.tmp_table_size = 33554432 0 -'Bug# 34876: This variable has invalid default value as compared to documentation'; '#--------------------FN_DYNVARS_005_03-------------------------#' SET @@global.tmp_table_size = 1024; SELECT @@global.tmp_table_size; @@ -79,7 +75,6 @@ Warning 1292 Truncated incorrect tmp_table_size value: '1000' SELECT @@global.tmp_table_size; @@global.tmp_table_size 1024 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; SET @@global.tmp_table_size = ON; ERROR 42000: Incorrect argument type to variable 'tmp_table_size' SET @@global.tmp_table_size = OFF; @@ -96,7 +91,6 @@ Warning 1292 Truncated incorrect tmp_table_size value: '0' SELECT @@global.tmp_table_size; @@global.tmp_table_size 1024 -'Bug:Error should be shown that variable is numeric and can not assigned boolean value'; SET @@global.tmp_table_size = 65530.34; ERROR 42000: Incorrect argument type to variable 'tmp_table_size' SET @@global.tmp_table_size ="Test"; diff --git a/mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result b/mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result index 837b90fc143..73ebaecf5f0 100644 --- a/mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result +++ b/mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result @@ -6,7 +6,6 @@ SET @start_session_value = @@session.tmp_table_size; SELECT @start_session_value; @start_session_value 16777216 -'Bug# 34876: This variable has invalid default value as compared to documentation'; '#--------------------FN_DYNVARS_005_01-------------------------#' SET @@global.tmp_table_size = 100; Warnings: @@ -15,7 +14,6 @@ SET @@global.tmp_table_size = DEFAULT; SELECT @@global.tmp_table_size; @@global.tmp_table_size 16777216 -'Bug# 34876: This variable has invalid default value as compared to documentation'; SET @@session.tmp_table_size = 200; Warnings: Warning 1292 Truncated incorrect tmp_table_size value: '200' @@ -23,7 +21,6 @@ SET @@session.tmp_table_size = DEFAULT; SELECT @@session.tmp_table_size; @@session.tmp_table_size 16777216 -'Bug# 34876: This variable has invalid default value as compared to documentation'; '#--------------------FN_DYNVARS_005_02-------------------------#' SET @@global.tmp_table_size = DEFAULT; SELECT @@global.tmp_table_size = 33554432; @@ -33,7 +30,6 @@ SET @@session.tmp_table_size = DEFAULT; SELECT @@session.tmp_table_size = 33554432; @@session.tmp_table_size = 33554432 0 -'Bug# 34876: This variable has invalid default value as compared to documentation'; '#--------------------FN_DYNVARS_005_03-------------------------#' SET @@global.tmp_table_size = 1024; SELECT @@global.tmp_table_size; @@ -79,7 +75,6 @@ Warning 1292 Truncated incorrect tmp_table_size value: '1000' SELECT @@global.tmp_table_size; @@global.tmp_table_size 1024 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; SET @@global.tmp_table_size = ON; ERROR 42000: Incorrect argument type to variable 'tmp_table_size' SET @@global.tmp_table_size = OFF; @@ -96,7 +91,6 @@ Warning 1292 Truncated incorrect tmp_table_size value: '0' SELECT @@global.tmp_table_size; @@global.tmp_table_size 1024 -'Bug:Error should be shown that variable is numeric and can not assigned boolean value'; SET @@global.tmp_table_size = 65530.34; ERROR 42000: Incorrect argument type to variable 'tmp_table_size' SET @@global.tmp_table_size ="Test"; From da1bf248526af2ff5037bbe92613c432eeda3b9a Mon Sep 17 00:00:00 2001 From: Luis Soares Date: Thu, 4 Dec 2008 01:01:03 +0000 Subject: [PATCH 09/36] BUG#38826 Race in MYSQL_LOG::purge_logs is impossible to debug in production BUG#39325 Server crash inside MYSQL_LOG::purge_first_log halts replicaiton The patch reverses the order of the purging and updating events for log and relay-log.info/index files respectively. This solves the problem of having holes caused by crashes happening between updating info/index files and purging logs. NOTE: This is a combined patch for BUG#38826 and BUG#39325. This patch is based on bugteam tree and takes into account reviewers suggestions. --- mysql-test/r/binlog_index.result | 1 + sql/log.cc | 212 +++++++++++++++++++------------ sql/sql_class.h | 7 + 3 files changed, 141 insertions(+), 79 deletions(-) diff --git a/mysql-test/r/binlog_index.result b/mysql-test/r/binlog_index.result index 82fc26092f4..b307b97e460 100644 --- a/mysql-test/r/binlog_index.result +++ b/mysql-test/r/binlog_index.result @@ -21,6 +21,7 @@ flush logs; *** must be a warning master-bin.000001 was not found *** Warnings: Warning 1477 Being purged log MYSQLTEST_VARDIR/log/master-bin.000001 was not found +Warning 1477 Being purged log MYSQLTEST_VARDIR/log/master-bin.000001 was not found *** must show one record, of the active binlog, left in the index file after PURGE *** show binary logs; Log_name File_size diff --git a/sql/log.cc b/sql/log.cc index 5a1cfe46686..477cb21b2f3 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -417,6 +417,7 @@ MYSQL_LOG::MYSQL_LOG() index_file_name[0] = 0; bzero((char*) &log_file,sizeof(log_file)); bzero((char*) &index_file, sizeof(index_file)); + bzero((char*) &purge_temp, sizeof(purge_temp)); } /* this is called only once */ @@ -1059,10 +1060,10 @@ err: IMPLEMENTATION - Protects index file with LOCK_index + - Read the next file name from the index file and store in rli->linfo - Delete relevant relay log files - Copy all file names after these ones to the front of the index file - If the OS has truncate, truncate the file, else fill it with \n' - - Read the next file name from the index file and store in rli->linfo RETURN VALUES 0 ok @@ -1076,6 +1077,7 @@ err: int MYSQL_LOG::purge_first_log(struct st_relay_log_info* rli, bool included) { int error; + char *to_purge_if_included= NULL; DBUG_ENTER("purge_first_log"); DBUG_ASSERT(is_open()); @@ -1083,36 +1085,20 @@ int MYSQL_LOG::purge_first_log(struct st_relay_log_info* rli, bool included) DBUG_ASSERT(!strcmp(rli->linfo.log_file_name,rli->event_relay_log_name)); pthread_mutex_lock(&LOCK_index); - pthread_mutex_lock(&rli->log_space_lock); - rli->relay_log.purge_logs(rli->group_relay_log_name, included, - 0, 0, &rli->log_space_total); - // Tell the I/O thread to take the relay_log_space_limit into account - rli->ignore_log_space_limit= 0; - pthread_mutex_unlock(&rli->log_space_lock); + to_purge_if_included= my_strdup(rli->group_relay_log_name, MYF(0)); - /* - Ok to broadcast after the critical region as there is no risk of - the mutex being destroyed by this thread later - this helps save - context switches - */ - pthread_cond_broadcast(&rli->log_space_cond); - /* Read the next log file name from the index file and pass it back to - the caller - If included is true, we want the first relay log; - otherwise we want the one after event_relay_log_name. + the caller. */ - if ((included && (error=find_log_pos(&rli->linfo, NullS, 0))) || - (!included && - ((error=find_log_pos(&rli->linfo, rli->event_relay_log_name, 0)) || - (error=find_next_log(&rli->linfo, 0))))) + if((error=find_log_pos(&rli->linfo, rli->event_relay_log_name, 0)) || + (error=find_next_log(&rli->linfo, 0))) { char buff[22]; sql_print_error("next log error: %d offset: %s log: %s included: %d", error, llstr(rli->linfo.index_file_offset,buff), - rli->group_relay_log_name, + rli->event_relay_log_name, included); goto err; } @@ -1140,7 +1126,42 @@ int MYSQL_LOG::purge_first_log(struct st_relay_log_info* rli, bool included) /* Store where we are in the new file for the execution thread */ flush_relay_log_info(rli); + DBUG_EXECUTE_IF("crash_before_purge_logs", abort();); + + pthread_mutex_lock(&rli->log_space_lock); + rli->relay_log.purge_logs(to_purge_if_included, included, + 0, 0, &rli->log_space_total); + // Tell the I/O thread to take the relay_log_space_limit into account + rli->ignore_log_space_limit= 0; + pthread_mutex_unlock(&rli->log_space_lock); + + /* + Ok to broadcast after the critical region as there is no risk of + the mutex being destroyed by this thread later - this helps save + context switches + */ + pthread_cond_broadcast(&rli->log_space_cond); + + /* + * Need to update the log pos because purge logs has been called + * after fetching initially the log pos at the begining of the method. + */ + if(error=find_log_pos(&rli->linfo, rli->event_relay_log_name, 0)) + { + char buff[22]; + sql_print_error("next log error: %d offset: %s log: %s included: %d", + error, + llstr(rli->linfo.index_file_offset,buff), + rli->group_relay_log_name, + included); + goto err; + } + + /* If included was passed, rli->linfo should be the first entry. */ + DBUG_ASSERT(!included || rli->linfo.index_file_start_offset == 0); + err: + my_free(to_purge_if_included, MYF(0)); pthread_mutex_unlock(&LOCK_index); DBUG_RETURN(error); } @@ -1199,8 +1220,36 @@ int MYSQL_LOG::purge_logs(const char *to_log, if (need_mutex) pthread_mutex_lock(&LOCK_index); - if ((error=find_log_pos(&log_info, to_log, 0 /*no mutex*/))) + if ((error=find_log_pos(&log_info, to_log, 0 /*no mutex*/))) + { + sql_print_error("MYSQL_LOG::purge_logs was called with file %s not " + "listed in the index.", to_log); goto err; + } + + /* + For crash recovery reasons the index needs to be updated before + any files are deleted. Move files to be deleted into a temp file + to be processed after the index is updated. + */ + if (!my_b_inited(&purge_temp)) + { + if (error=open_cached_file(&purge_temp, mysql_tmpdir, TEMP_PREFIX, + DISK_BUFFER_SIZE, MYF(MY_WME))) + { + sql_print_error("MYSQL_LOG::purge_logs failed to open purge_temp"); + goto err; + } + } + else + { + if (error=reinit_io_cache(&purge_temp, WRITE_CACHE, 0, 0, 1)) + { + sql_print_error("MYSQL_LOG::purge_logs failed to reinit purge_temp " + "for write"); + goto err; + } + } /* File name exists in index file; delete until we find this file @@ -1211,6 +1260,59 @@ int MYSQL_LOG::purge_logs(const char *to_log, while ((strcmp(to_log,log_info.log_file_name) || (exit_loop=included)) && !log_in_use(log_info.log_file_name)) { + if ((error=my_b_write(&purge_temp, (byte*)log_info.log_file_name, + strlen(log_info.log_file_name))) || + (error=my_b_write(&purge_temp, (byte*)"\n", 1))) + { + sql_print_error("MYSQL_LOG::purge_logs failed to copy %s to purge_temp", + log_info.log_file_name); + goto err; + } + + if (find_next_log(&log_info, 0) || exit_loop) + break; + } + + /* We know how many files to delete. Update index file. */ + if (error=update_log_index(&log_info, need_update_threads)) + { + sql_print_error("MSYQL_LOG::purge_logs failed to update the index file"); + goto err; + } + + DBUG_EXECUTE_IF("crash_after_update_index", abort();); + + /* Switch purge_temp for read. */ + if (error=reinit_io_cache(&purge_temp, READ_CACHE, 0, 0, 0)) + { + sql_print_error("MSYQL_LOG::purge_logs failed to reinit purge_temp " + "for read"); + goto err; + } + + /* Read each entry from purge_temp and delete the file. */ + for (;;) + { + uint length; + + if ((length=my_b_gets(&purge_temp, log_info.log_file_name, + FN_REFLEN)) <= 1) + { + if (purge_temp.error) + { + error= purge_temp.error; + sql_print_error("MSYQL_LOG::purge_logs error %d reading from " + "purge_temp", error); + goto err; + } + + /* Reached EOF */ + break; + } + + /* Get rid of the trailing '\n' */ + log_info.log_file_name[length-1]= 0; + MY_STAT s; if (!my_stat(log_info.log_file_name, &s, MYF(0))) { @@ -1304,15 +1406,7 @@ int MYSQL_LOG::purge_logs(const char *to_log, } } } - if (find_next_log(&log_info, 0) || exit_loop) - break; } - - /* - If we get killed -9 here, the sysadmin would have to edit - the log index file after restart - otherwise, this should be safe - */ - error= update_log_index(&log_info, need_update_threads); err: if (need_mutex) @@ -1326,7 +1420,6 @@ err: SYNOPSIS purge_logs_before_date() - thd Thread pointer before_date Delete all log files before given date. NOTES @@ -1343,6 +1436,7 @@ err: int MYSQL_LOG::purge_logs_before_date(time_t purge_time) { int error; + char to_log[FN_REFLEN]; LOG_INFO log_info; MY_STAT stat_area; THD *thd= current_thd; @@ -1350,12 +1444,8 @@ int MYSQL_LOG::purge_logs_before_date(time_t purge_time) DBUG_ENTER("purge_logs_before_date"); pthread_mutex_lock(&LOCK_index); + to_log[0]= 0; - /* - Delete until we find curren file - or a file that is used or a file - that is older than purge_time. - */ if ((error=find_log_pos(&log_info, NullS, 0 /*no mutex*/))) goto err; @@ -1405,54 +1495,18 @@ int MYSQL_LOG::purge_logs_before_date(time_t purge_time) } else { - if (stat_area.st_mtime >= purge_time) + if (stat_area.st_mtime < purge_time) + strmake(to_log, + log_info.log_file_name, + sizeof(log_info.log_file_name)); + else break; - if (my_delete(log_info.log_file_name, MYF(0))) - { - if (my_errno == ENOENT) - { - /* It's not fatal even if we can't delete a log file */ - if (thd) - { - push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, - ER_LOG_PURGE_NO_FILE, ER(ER_LOG_PURGE_NO_FILE), - log_info.log_file_name); - } - sql_print_information("Failed to delete file '%s'", - log_info.log_file_name); - my_errno= 0; - } - else - { - if (thd) - { - push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR, - ER_BINLOG_PURGE_FATAL_ERR, - "a problem with deleting %s; " - "consider examining correspondence " - "of your binlog index file " - "to the actual binlog files", - log_info.log_file_name); - } - else - { - sql_print_information("Failed to delete log file '%s'", - log_info.log_file_name); - } - error= LOG_INFO_FATAL; - goto err; - } - } } if (find_next_log(&log_info, 0)) break; } - /* - If we get killed -9 here, the sysadmin would have to edit - the log index file after restart - otherwise, this should be safe - */ - error= update_log_index(&log_info, 1); + error= (to_log[0] ? purge_logs(to_log, 1, 0, 1, (ulonglong *) 0) : 0); err: pthread_mutex_unlock(&LOCK_index); diff --git a/sql/sql_class.h b/sql/sql_class.h index c8d42d44df7..cc7ef7809d4 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -205,6 +205,13 @@ class MYSQL_LOG: public TC_LOG time_t last_time,query_start; IO_CACHE log_file; IO_CACHE index_file; + /* + purge_temp is a temp file used in purge_logs so that the index file + can be updated before deleting files from disk, yielding better crash + recovery. It is created on demand the first time purge_logs is called + and then reused for subsequent calls. It is cleaned up in cleanup(). + */ + IO_CACHE purge_temp; char *name; char time_buff[20],db[NAME_LEN+1]; char log_file_name[FN_REFLEN],index_file_name[FN_REFLEN]; From 06a9022f307a52249853f668f4afe62ab8fb1e8c Mon Sep 17 00:00:00 2001 From: Patrick Crews Date: Wed, 3 Dec 2008 21:44:07 -0500 Subject: [PATCH 10/36] Bug#40177: Test funcs_1.storedproc failing on Pushbuild Altered param_check to disable warnings on system-sensitive operations and added some notes / possible TODO Re-recorded.result file to account for change --- mysql-test/suite/funcs_1/r/storedproc.result | 1212 ----------------- .../suite/funcs_1/storedproc/param_check.inc | 19 +- 2 files changed, 18 insertions(+), 1213 deletions(-) diff --git a/mysql-test/suite/funcs_1/r/storedproc.result b/mysql-test/suite/funcs_1/r/storedproc.result index 38fa933e13f..0c414df0c57 100644 --- a/mysql-test/suite/funcs_1/r/storedproc.result +++ b/mysql-test/suite/funcs_1/r/storedproc.result @@ -191,2427 +191,1215 @@ ERROR 22007: Illegal double '1.7976931348623157493578e+308' value found during p UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+100; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+100, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+100); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+99; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+99, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+99); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+98; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+98, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+98); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+97; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+97, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+97); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+96; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+96, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+96); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+95; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+95, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+95); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+94; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+94, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+94); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+93; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+93, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+93); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+92; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+92, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+92); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+91; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+91, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+91); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+90; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+90, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+90); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+89; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+89, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+89); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+88; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+88, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+88); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+87; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+87, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+87); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+86; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+86, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+86); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+85; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+85, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+85); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+84; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+84, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+84); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+83; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+83, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+83); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+82; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+82, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+82); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+81; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+81, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+81); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+80; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+80, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+80); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+79; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+79, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+79); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+78; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+78, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+78); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+77; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+77, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+77); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+76; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+76, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+76); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+75; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+75, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+75); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+74; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+74, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+74); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+73; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+73, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+73); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+72; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+72, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+72); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+71; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+71, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+71); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+70; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+70, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+70); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+69; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+69, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+69); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+68; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+68, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+68); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+67; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+67, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+67); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+66; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+66, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+66); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+65; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+65, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+65); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+64; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+64, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+64); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+63; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+63, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+63); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+62; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+62, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+62); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+61; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+61, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+61); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+60; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+60, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+60); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+59; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+59, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+59); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+58; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+58, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+58); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+57; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+57, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+57); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+56; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+56, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+56); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+55; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+55, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+55); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+54; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+54, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+54); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+53; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+53, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+53); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+52; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+52, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+52); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+51; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+51, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+51); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+50; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+50, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+50); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+49; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+49, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+49); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+48; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+48, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+48); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+47; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+47, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+47); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+46; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+46, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+46); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+45; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+45, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+45); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+44; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+44, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+44); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+43; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+43, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+43); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+42; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+42, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+42); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+41; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+41, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+41); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+40; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+40, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+40); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+39; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+39, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+39); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+38; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+38, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+38); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+37; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+37, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+37); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+36; -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+36, @v1_proc); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+36); -Warnings: -Warning 1264 Out of range value for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+35; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+35, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+35); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+34; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+34, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+34); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+33; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+33, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+33); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+32; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+32, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+32); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+31; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+31, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+31); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+30; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+30, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+30); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+29; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+29, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+29); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+28; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+28, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+28); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+27; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+27, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+27); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+26; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+26, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+26); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+25; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+25, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+25); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+24; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+24, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+24); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+23; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+23, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+23); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+22; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+22, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+22); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+21; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+21, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+21); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+20; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+20, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+20); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+19; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+19, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+19); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+18; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+18, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+18); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+17; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+17, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+17); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+16; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+16, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+16); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+15; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+15, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+15); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+14; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+14, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+14); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+13; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+13, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+13); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+12; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+12, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+12); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+11; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+11, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+11); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+10; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+10, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+10); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+9; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+9, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+9); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+8; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+8, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+8); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+7; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+7, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+7); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+6; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+6, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+6); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+5; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+5, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+5); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+4; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+4, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+4); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+3; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+3, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+3); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+2; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+2, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+2); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+1; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+1, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+1); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e+0; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e+0, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e+0); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-100; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-100, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-100); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-99; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-99, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-99); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-98; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-98, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-98); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-97; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-97, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-97); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-96; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-96, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-96); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-95; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-95, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-95); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-94; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-94, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-94); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-93; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-93, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-93); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-92; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-92, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-92); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-91; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-91, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-91); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-90; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-90, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-90); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-89; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-89, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-89); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-88; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-88, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-88); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-87; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-87, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-87); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-86; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-86, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-86); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-85; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-85, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-85); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-84; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-84, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-84); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-83; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-83, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-83); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-82; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-82, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-82); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-81; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-81, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-81); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-80; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-80, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-80); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-79; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-79, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-79); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-78; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-78, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-78); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-77; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-77, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-77); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-76; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-76, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-76); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-75; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-75, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-75); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-74; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-74, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-74); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-73; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-73, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-73); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-72; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-72, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-72); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-71; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-71, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-71); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-70; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-70, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-70); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-69; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-69, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-69); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-68; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-68, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-68); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-67; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-67, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-67); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-66; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-66, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-66); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-65; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-65, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-65); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-64; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-64, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-64); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-63; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-63, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-63); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-62; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-62, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-62); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-61; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-61, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-61); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-60; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-60, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-60); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-59; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-59, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-59); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-58; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-58, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-58); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-57; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-57, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-57); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-56; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-56, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-56); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-55; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-55, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-55); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-54; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-54, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-54); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-53; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-53, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-53); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-52; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-52, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-52); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-51; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-51, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-51); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-50; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-50, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-50); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-49; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-49, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-49); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-48; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-48, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-48); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-47; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-47, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-47); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-46; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-46, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-46); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-45; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-45, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-45); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-44; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-44, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-44); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-43; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-43, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-43); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-42; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-42, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-42); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-41; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-41, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-41); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-40; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-40, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-40); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-39; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-39, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-39); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-38; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-38, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-38); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-37; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-37, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-37); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-36; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-36, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-36); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-35; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-35, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-35); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-34; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-34, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-34); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-33; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-33, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-33); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-32; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-32, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-32); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-31; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-31, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-31); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-30; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-30, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-30); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-29; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-29, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-29); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-28; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-28, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-28); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-27; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-27, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-27); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-26; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-26, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-26); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-25; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-25, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-25); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-24; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-24, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-24); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-23; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-23, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-23); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-22; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-22, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-22); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-21; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-21, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-21); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-20; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-20, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-20); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-19; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-19, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-19); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-18; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-18, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-18); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-17; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-17, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-17); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-16; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-16, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-16); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-15; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-15, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-15); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-14; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-14, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-14); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-13; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-13, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-13); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-12; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-12, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-12); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-11; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-11, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-11); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-10; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-10, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-10); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-9; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-9, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-9); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-8; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-8, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-8); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-7; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-7, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-7); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-6; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-6, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-6); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-5; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-5, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-5); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-4; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-4, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-4); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-3; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-3, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-3); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-2; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-2, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-2); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-1; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-1, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-1); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 UPDATE t1_aux SET f1 = NULL; SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; UPDATE t1_aux SET f1 = 0.1234567890987654321e-0; -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SELECT f1 INTO @v1_tab FROM t1_aux; CALL sproc_1(0.1234567890987654321e-0, @v1_proc); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 SET @v1_func = func_1(0.1234567890987654321e-0); -Warnings: -Note 1265 Data truncated for column 'f1' at row 1 DROP PROCEDURE sproc_1; DROP FUNCTION func_1; DROP TABLE t1_aux; diff --git a/mysql-test/suite/funcs_1/storedproc/param_check.inc b/mysql-test/suite/funcs_1/storedproc/param_check.inc index f6c0b30ab8b..203187f92b1 100644 --- a/mysql-test/suite/funcs_1/storedproc/param_check.inc +++ b/mysql-test/suite/funcs_1/storedproc/param_check.inc @@ -16,15 +16,32 @@ # Created: # 2008-08-27 mleich # - +# Modified: +# 2008-11-17 pcrews +# added --disable / --enable_warning statements to minimize differences +# between platforms (Bug#40177 Test funcs_1.storedproc failing on Pushbuild) +# +# TODO: (After 5.1 GA) +# 1) Examine reordering statements in this file to minimize the number of +# --disable / --enable_warning statements. Unsure if performance gains +# warrant the working time +# 2) We could probably add a comparison of the # of warnings before the +# assignment of @v1_proc and @v1_func to the # of warnings after assignment +# The difference of these values should be zero +# Refer to Bug#40177 - http://bugs.mysql.com/bug.php?id=40177 for notes as well + eval UPDATE t1_aux SET f1 = NULL; # Enforce that all user variables have the same data type and initial value. SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux; +--disable_warnings eval UPDATE t1_aux SET f1 = $test_value; +--enable_warnings SELECT f1 INTO @v1_tab FROM t1_aux; +--disable_warnings eval CALL sproc_1($test_value, @v1_proc); eval SET @v1_func = func_1($test_value); +--enable_warnings if (`SELECT @v1_tab <> @v1_proc OR @v1_tab <> @v2_proc OR @v1_tab <> @v1_func`) { From 8adc9d1b86317fceb57611565dc344e5baa05eb0 Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Thu, 4 Dec 2008 10:47:25 +0100 Subject: [PATCH 11/36] Bug#40515: Query on a partitioned table does not return 'lock wait timeout exceeded' Problem was a bug in the implementation of scan in partitioning which masked the error code from the partition's handler. Fixed by returning the value from the underlying handler. mysql-test/suite/parts/r/partition_special_innodb.result: Bug#40515: Query on a partitioned table does not return 'lock wait timeout exceeded' Updated test result mysql-test/suite/parts/t/partition_special_innodb.test: Bug#40515: Query on a partitioned table does not return 'lock wait timeout exceeded' Updated test case for covering the bug. sql/ha_partition.cc: Bug#40515: Query on a partitioned table does not return 'lock wait timeout exceeded' Removing redeclaration of result variable, which resulted in never returning the correct return value. --- mysql-test/suite/parts/r/partition_special_innodb.result | 5 +++++ mysql-test/suite/parts/t/partition_special_innodb.test | 2 ++ sql/ha_partition.cc | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/mysql-test/suite/parts/r/partition_special_innodb.result b/mysql-test/suite/parts/r/partition_special_innodb.result index 5eab78de8c2..8869f6d450c 100644 --- a/mysql-test/suite/parts/r/partition_special_innodb.result +++ b/mysql-test/suite/parts/r/partition_special_innodb.result @@ -213,5 +213,10 @@ START TRANSACTION; INSERT INTO t1 VALUES (NULL, 'first row t2'); SET autocommit=OFF; ALTER TABLE t1 AUTO_INCREMENT = 10; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction INSERT INTO t1 VALUES (NULL, 'second row t2'); +SELECT a,b FROM t1 ORDER BY a; +a b +1 first row t2 +2 second row t2 DROP TABLE t1; diff --git a/mysql-test/suite/parts/t/partition_special_innodb.test b/mysql-test/suite/parts/t/partition_special_innodb.test index b9fc8bdcd56..eac19f6d588 100644 --- a/mysql-test/suite/parts/t/partition_special_innodb.test +++ b/mysql-test/suite/parts/t/partition_special_innodb.test @@ -68,10 +68,12 @@ INSERT INTO t1 VALUES (NULL, 'first row t2'); --connection con2 SET autocommit=OFF; +--error ER_LOCK_WAIT_TIMEOUT ALTER TABLE t1 AUTO_INCREMENT = 10; --connection con1 INSERT INTO t1 VALUES (NULL, 'second row t2'); +SELECT a,b FROM t1 ORDER BY a; --disconnect con2 --disconnect con1 --connection default diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 0c96b06381c..852f437b213 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -3431,7 +3431,7 @@ int ha_partition::rnd_next(uchar *buf) while (TRUE) { - int result= file->rnd_next(buf); + result= file->rnd_next(buf); if (!result) { m_last_part= part_id; From 789bbbb037756bba47c6306228bf9b7d80cafb24 Mon Sep 17 00:00:00 2001 From: Patrick Crews Date: Fri, 5 Dec 2008 08:21:03 -0500 Subject: [PATCH 12/36] Bug#41258: mysql-test-run does not copy subdirectories of std_data on Windows (5.0 only) Altered how we copy data from mysql-test/std_data on Windows to match what we are doing in 5.1 and 6.0 --- mysql-test/mysql-test-run.pl | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 268dd3fbd16..70637034b6e 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -2380,13 +2380,7 @@ sub setup_vardir() { { # on windows, copy all files from std_data into var/std_data_ln mkpath("$opt_vardir/std_data_ln"); - opendir(DIR, "$glob_mysql_test_dir/std_data") - or mtr_error("Can't find the std_data directory: $!"); - for(readdir(DIR)) { - next if -d "$glob_mysql_test_dir/std_data/$_"; - copy("$glob_mysql_test_dir/std_data/$_", "$opt_vardir/std_data_ln/$_"); - } - closedir(DIR); + mtr_copy_dir("$glob_mysql_test_dir/std_data", "$opt_vardir/std_data_ln"); } # Remove old log files From 758613481405f5c1281773e300e8f7c75201ce9c Mon Sep 17 00:00:00 2001 From: Horst Hunger Date: Fri, 5 Dec 2008 16:43:13 +0100 Subject: [PATCH 13/36] Fix for Bug#36878 after review by Matthias: Only one line in the result files of 32 bit and 64 bit platforms differed and made problems on 64 bit machine with 32 bit mysqld. The removal of the separation into 32 bit and 64 bit versions of that test fixes also this problem. --- ..._32.result => tmp_table_size_basic.result} | 48 ++--- .../sys_vars/r/tmp_table_size_basic_64.result | 166 ------------------ .../tmp_table_size_basic.test} | 95 +++++----- .../sys_vars/t/tmp_table_size_basic_32.test | 9 - .../sys_vars/t/tmp_table_size_basic_64.test | 9 - 5 files changed, 60 insertions(+), 267 deletions(-) rename mysql-test/suite/sys_vars/r/{tmp_table_size_basic_32.result => tmp_table_size_basic.result} (83%) delete mode 100644 mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result rename mysql-test/suite/sys_vars/{inc/tmp_table_size_basic.inc => t/tmp_table_size_basic.test} (81%) delete mode 100644 mysql-test/suite/sys_vars/t/tmp_table_size_basic_32.test delete mode 100644 mysql-test/suite/sys_vars/t/tmp_table_size_basic_64.test diff --git a/mysql-test/suite/sys_vars/r/tmp_table_size_basic_32.result b/mysql-test/suite/sys_vars/r/tmp_table_size_basic.result similarity index 83% rename from mysql-test/suite/sys_vars/r/tmp_table_size_basic_32.result rename to mysql-test/suite/sys_vars/r/tmp_table_size_basic.result index ba3fd5420c6..3b4099d30ae 100644 --- a/mysql-test/suite/sys_vars/r/tmp_table_size_basic_32.result +++ b/mysql-test/suite/sys_vars/r/tmp_table_size_basic.result @@ -1,35 +1,21 @@ SET @start_global_value = @@global.tmp_table_size; -SELECT @start_global_value; -@start_global_value -16777216 SET @start_session_value = @@session.tmp_table_size; -SELECT @start_session_value; -@start_session_value -16777216 '#--------------------FN_DYNVARS_005_01-------------------------#' SET @@global.tmp_table_size = 100; Warnings: Warning 1292 Truncated incorrect tmp_table_size value: '100' SET @@global.tmp_table_size = DEFAULT; -SELECT @@global.tmp_table_size; -@@global.tmp_table_size -16777216 SET @@session.tmp_table_size = 200; Warnings: Warning 1292 Truncated incorrect tmp_table_size value: '200' SET @@session.tmp_table_size = DEFAULT; -SELECT @@session.tmp_table_size; -@@session.tmp_table_size -16777216 '#--------------------FN_DYNVARS_005_02-------------------------#' -SET @@global.tmp_table_size = DEFAULT; -SELECT @@global.tmp_table_size = 33554432; -@@global.tmp_table_size = 33554432 -0 -SET @@session.tmp_table_size = DEFAULT; -SELECT @@session.tmp_table_size = 33554432; -@@session.tmp_table_size = 33554432 -0 +SELECT @@global.tmp_table_size >= 16777216; +@@global.tmp_table_size >= 16777216 +1 +SELECT @@session.tmp_table_size >= 16777216; +@@session.tmp_table_size >= 16777216 +1 '#--------------------FN_DYNVARS_005_03-------------------------#' SET @@global.tmp_table_size = 1024; SELECT @@global.tmp_table_size; @@ -48,7 +34,7 @@ SET @@session.tmp_table_size = 1024; SELECT @@session.tmp_table_size; @@session.tmp_table_size 1024 -SET @@session.tmp_table_size =4294967295; +SET @@session.tmp_table_size = 4294967295; SELECT @@session.tmp_table_size; @@session.tmp_table_size 4294967295 @@ -114,18 +100,18 @@ SELECT @@session.tmp_table_size; SET @@session.tmp_table_size = "Test"; ERROR 42000: Incorrect argument type to variable 'tmp_table_size' SET @@session.tmp_table_size = 12345678901; -SELECT @@session.tmp_table_size; -@@session.tmp_table_size -4294967295 +SELECT @@session.tmp_table_size IN (12345678901,4294967295); +@@session.tmp_table_size IN (12345678901,4294967295) +1 '#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.tmp_table_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +SELECT @@global.tmp_table_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='tmp_table_size'; @@global.tmp_table_size = VARIABLE_VALUE 1 '#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.tmp_table_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES +SELECT @@session.tmp_table_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='tmp_table_size'; @@session.tmp_table_size = VARIABLE_VALUE 1 @@ -157,10 +143,4 @@ ERROR 42S02: Unknown table 'global' in field list SELECT tmp_table_size = @@session.tmp_table_size; ERROR 42S22: Unknown column 'tmp_table_size' in 'field list' SET @@global.tmp_table_size = @start_global_value; -SELECT @@global.tmp_table_size; -@@global.tmp_table_size -16777216 SET @@session.tmp_table_size = @start_session_value; -SELECT @@session.tmp_table_size; -@@session.tmp_table_size -16777216 diff --git a/mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result b/mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result deleted file mode 100644 index 73ebaecf5f0..00000000000 --- a/mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result +++ /dev/null @@ -1,166 +0,0 @@ -SET @start_global_value = @@global.tmp_table_size; -SELECT @start_global_value; -@start_global_value -16777216 -SET @start_session_value = @@session.tmp_table_size; -SELECT @start_session_value; -@start_session_value -16777216 -'#--------------------FN_DYNVARS_005_01-------------------------#' -SET @@global.tmp_table_size = 100; -Warnings: -Warning 1292 Truncated incorrect tmp_table_size value: '100' -SET @@global.tmp_table_size = DEFAULT; -SELECT @@global.tmp_table_size; -@@global.tmp_table_size -16777216 -SET @@session.tmp_table_size = 200; -Warnings: -Warning 1292 Truncated incorrect tmp_table_size value: '200' -SET @@session.tmp_table_size = DEFAULT; -SELECT @@session.tmp_table_size; -@@session.tmp_table_size -16777216 -'#--------------------FN_DYNVARS_005_02-------------------------#' -SET @@global.tmp_table_size = DEFAULT; -SELECT @@global.tmp_table_size = 33554432; -@@global.tmp_table_size = 33554432 -0 -SET @@session.tmp_table_size = DEFAULT; -SELECT @@session.tmp_table_size = 33554432; -@@session.tmp_table_size = 33554432 -0 -'#--------------------FN_DYNVARS_005_03-------------------------#' -SET @@global.tmp_table_size = 1024; -SELECT @@global.tmp_table_size; -@@global.tmp_table_size -1024 -SET @@global.tmp_table_size = 60020; -SELECT @@global.tmp_table_size; -@@global.tmp_table_size -60020 -SET @@global.tmp_table_size = 4294967295; -SELECT @@global.tmp_table_size; -@@global.tmp_table_size -4294967295 -'#--------------------FN_DYNVARS_005_04-------------------------#' -SET @@session.tmp_table_size = 1024; -SELECT @@session.tmp_table_size; -@@session.tmp_table_size -1024 -SET @@session.tmp_table_size =4294967295; -SELECT @@session.tmp_table_size; -@@session.tmp_table_size -4294967295 -SET @@session.tmp_table_size = 65535; -SELECT @@session.tmp_table_size; -@@session.tmp_table_size -65535 -'#------------------FN_DYNVARS_005_05-----------------------#' -SET @@global.tmp_table_size = 0; -Warnings: -Warning 1292 Truncated incorrect tmp_table_size value: '0' -SELECT @@global.tmp_table_size; -@@global.tmp_table_size -1024 -SET @@global.tmp_table_size = -1024; -Warnings: -Warning 1292 Truncated incorrect tmp_table_size value: '0' -SELECT @@global.tmp_table_size; -@@global.tmp_table_size -1024 -SET @@global.tmp_table_size = 1000; -Warnings: -Warning 1292 Truncated incorrect tmp_table_size value: '1000' -SELECT @@global.tmp_table_size; -@@global.tmp_table_size -1024 -SET @@global.tmp_table_size = ON; -ERROR 42000: Incorrect argument type to variable 'tmp_table_size' -SET @@global.tmp_table_size = OFF; -ERROR 42000: Incorrect argument type to variable 'tmp_table_size' -SET @@global.tmp_table_size = True; -Warnings: -Warning 1292 Truncated incorrect tmp_table_size value: '1' -SELECT @@global.tmp_table_size; -@@global.tmp_table_size -1024 -SET @@global.tmp_table_size = False; -Warnings: -Warning 1292 Truncated incorrect tmp_table_size value: '0' -SELECT @@global.tmp_table_size; -@@global.tmp_table_size -1024 -SET @@global.tmp_table_size = 65530.34; -ERROR 42000: Incorrect argument type to variable 'tmp_table_size' -SET @@global.tmp_table_size ="Test"; -ERROR 42000: Incorrect argument type to variable 'tmp_table_size' -SET @@session.tmp_table_size = ON; -ERROR 42000: Incorrect argument type to variable 'tmp_table_size' -SET @@session.tmp_table_size = OFF; -ERROR 42000: Incorrect argument type to variable 'tmp_table_size' -SET @@session.tmp_table_size = True; -Warnings: -Warning 1292 Truncated incorrect tmp_table_size value: '1' -SELECT @@session.tmp_table_size; -@@session.tmp_table_size -1024 -SET @@session.tmp_table_size = False; -Warnings: -Warning 1292 Truncated incorrect tmp_table_size value: '0' -SELECT @@session.tmp_table_size; -@@session.tmp_table_size -1024 -SET @@session.tmp_table_size = "Test"; -ERROR 42000: Incorrect argument type to variable 'tmp_table_size' -SET @@session.tmp_table_size = 12345678901; -SELECT @@session.tmp_table_size; -@@session.tmp_table_size -12345678901 -'#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.tmp_table_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='tmp_table_size'; -@@global.tmp_table_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.tmp_table_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='tmp_table_size'; -@@session.tmp_table_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.tmp_table_size = 1024; -SET @@tmp_table_size = 4294967295; -SELECT @@tmp_table_size = @@global.tmp_table_size; -@@tmp_table_size = @@global.tmp_table_size -0 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET @@tmp_table_size = 100; -Warnings: -Warning 1292 Truncated incorrect tmp_table_size value: '100' -SELECT @@tmp_table_size = @@local.tmp_table_size; -@@tmp_table_size = @@local.tmp_table_size -1 -SELECT @@local.tmp_table_size = @@session.tmp_table_size; -@@local.tmp_table_size = @@session.tmp_table_size -1 -'#---------------------FN_DYNVARS_001_11----------------------#' -SET tmp_table_size = 1027; -SELECT @@tmp_table_size; -@@tmp_table_size -1027 -SELECT local.tmp_table_size; -ERROR 42S02: Unknown table 'local' in field list -SELECT global.tmp_table_size; -ERROR 42S02: Unknown table 'global' in field list -SELECT tmp_table_size = @@session.tmp_table_size; -ERROR 42S22: Unknown column 'tmp_table_size' in 'field list' -SET @@global.tmp_table_size = @start_global_value; -SELECT @@global.tmp_table_size; -@@global.tmp_table_size -16777216 -SET @@session.tmp_table_size = @start_session_value; -SELECT @@session.tmp_table_size; -@@session.tmp_table_size -16777216 diff --git a/mysql-test/suite/sys_vars/inc/tmp_table_size_basic.inc b/mysql-test/suite/sys_vars/t/tmp_table_size_basic.test similarity index 81% rename from mysql-test/suite/sys_vars/inc/tmp_table_size_basic.inc rename to mysql-test/suite/sys_vars/t/tmp_table_size_basic.test index d29ef6da094..c2ff51d50ca 100644 --- a/mysql-test/suite/sys_vars/inc/tmp_table_size_basic.inc +++ b/mysql-test/suite/sys_vars/t/tmp_table_size_basic.test @@ -1,27 +1,29 @@ -############## mysql-test\t\tmp_table_size_basic.test ######################### -# # -# Variable Name: tmp_table_size # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 33554432 # -# Range: 1024-4294967295 # -# # -# # -# Creation Date: 2008-02-13 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable tmp_table_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 # -# # -############################################################################### +########################### tmp_table_size_basic.test ########################## +# # +# Variable Name: tmp_table_size # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: system dependend # +# Range: 1024-system dependend # +# # +# # +# Creation Date: 2008-02-13 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable tmp_table_size # +# that checks the behavior of this variable in the following ways # +# * Default Value # +# * Valid & Invalid values # +# * Scope & Access method # +# * Data Integrity # +# Modified: 2008-12-04 HHunger # +# removed the differences between 64 and 32 bit platforms # +# # +# Reference: # +# http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html # +# # +################################################################################ --source include/load_sysvars.inc @@ -34,9 +36,7 @@ ############################################################# SET @start_global_value = @@global.tmp_table_size; -SELECT @start_global_value; SET @start_session_value = @@session.tmp_table_size; -SELECT @start_session_value; --echo '#--------------------FN_DYNVARS_005_01-------------------------#' ############################################################## @@ -45,22 +45,19 @@ SELECT @start_session_value; SET @@global.tmp_table_size = 100; SET @@global.tmp_table_size = DEFAULT; -SELECT @@global.tmp_table_size; SET @@session.tmp_table_size = 200; SET @@session.tmp_table_size = DEFAULT; -SELECT @@session.tmp_table_size; --echo '#--------------------FN_DYNVARS_005_02-------------------------#' ######################################################################## # Check the DEFAULT value of tmp_table_size # ######################################################################## +# The DEFAULT value is system dependend. +# Therefore we have only a plausibility check here +SELECT @@global.tmp_table_size >= 16777216; -SET @@global.tmp_table_size = DEFAULT; -SELECT @@global.tmp_table_size = 33554432; - -SET @@session.tmp_table_size = DEFAULT; -SELECT @@session.tmp_table_size = 33554432; +SELECT @@session.tmp_table_size >= 16777216; --echo '#--------------------FN_DYNVARS_005_03-------------------------#' ######################################################################## @@ -79,11 +76,11 @@ SELECT @@global.tmp_table_size; ######################################################################### # Change the value of tmp_table_size to a valid value for SESSION Scope # ######################################################################### - + SET @@session.tmp_table_size = 1024; SELECT @@session.tmp_table_size; -SET @@session.tmp_table_size =4294967295; +SET @@session.tmp_table_size = 4294967295; SELECT @@session.tmp_table_size; SET @@session.tmp_table_size = 65535; SELECT @@session.tmp_table_size; @@ -103,10 +100,10 @@ SELECT @@global.tmp_table_size; SET @@global.tmp_table_size = 1000; SELECT @@global.tmp_table_size; --- Error ER_WRONG_TYPE_FOR_VAR +--Error ER_WRONG_TYPE_FOR_VAR SET @@global.tmp_table_size = ON; --- Error ER_WRONG_TYPE_FOR_VAR +--Error ER_WRONG_TYPE_FOR_VAR SET @@global.tmp_table_size = OFF; SET @@global.tmp_table_size = True; @@ -115,16 +112,16 @@ SELECT @@global.tmp_table_size; SET @@global.tmp_table_size = False; SELECT @@global.tmp_table_size; --- Error ER_WRONG_TYPE_FOR_VAR +--Error ER_WRONG_TYPE_FOR_VAR SET @@global.tmp_table_size = 65530.34; --- Error ER_WRONG_TYPE_FOR_VAR +--Error ER_WRONG_TYPE_FOR_VAR SET @@global.tmp_table_size ="Test"; --- Error ER_WRONG_TYPE_FOR_VAR +--Error ER_WRONG_TYPE_FOR_VAR SET @@session.tmp_table_size = ON; --- Error ER_WRONG_TYPE_FOR_VAR +--Error ER_WRONG_TYPE_FOR_VAR SET @@session.tmp_table_size = OFF; SET @@session.tmp_table_size = True; @@ -133,19 +130,21 @@ SELECT @@session.tmp_table_size; SET @@session.tmp_table_size = False; SELECT @@session.tmp_table_size; --- Error ER_WRONG_TYPE_FOR_VAR +--Error ER_WRONG_TYPE_FOR_VAR SET @@session.tmp_table_size = "Test"; SET @@session.tmp_table_size = 12345678901; -SELECT @@session.tmp_table_size; + +# With a 64 bit mysqld:12345678901,with a 32 bit mysqld: 4294967295 +SELECT @@session.tmp_table_size IN (12345678901,4294967295); --echo '#------------------FN_DYNVARS_005_06-----------------------#' #################################################################### # Check if the value in GLOBAL Table matches value in variable # #################################################################### -SELECT @@global.tmp_table_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +SELECT @@global.tmp_table_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='tmp_table_size'; --echo '#------------------FN_DYNVARS_005_07-----------------------#' @@ -153,8 +152,8 @@ WHERE VARIABLE_NAME='tmp_table_size'; # Check if the value in SESSION Table matches value in variable # #################################################################### -SELECT @@session.tmp_table_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES +SELECT @@session.tmp_table_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='tmp_table_size'; --echo '#---------------------FN_DYNVARS_001_09----------------------#' @@ -199,9 +198,7 @@ SELECT tmp_table_size = @@session.tmp_table_size; #################################### SET @@global.tmp_table_size = @start_global_value; -SELECT @@global.tmp_table_size; SET @@session.tmp_table_size = @start_session_value; -SELECT @@session.tmp_table_size; ################################################### # END OF tmp_table_size TESTS # diff --git a/mysql-test/suite/sys_vars/t/tmp_table_size_basic_32.test b/mysql-test/suite/sys_vars/t/tmp_table_size_basic_32.test deleted file mode 100644 index c772b5c896c..00000000000 --- a/mysql-test/suite/sys_vars/t/tmp_table_size_basic_32.test +++ /dev/null @@ -1,9 +0,0 @@ -################################################################################ -# Created by Horst Hunger 2008-05-07 # -# # -# Wrapper for 32 bit machines # -################################################################################ - ---source include/have_32bit.inc ---source suite/sys_vars/inc/tmp_table_size_basic.inc - diff --git a/mysql-test/suite/sys_vars/t/tmp_table_size_basic_64.test b/mysql-test/suite/sys_vars/t/tmp_table_size_basic_64.test deleted file mode 100644 index 46b3f65be9a..00000000000 --- a/mysql-test/suite/sys_vars/t/tmp_table_size_basic_64.test +++ /dev/null @@ -1,9 +0,0 @@ -################################################################################ -# Created by Horst Hunger 2008-05-07 # -# # -# Wrapper for 64 bit machines # -################################################################################ - ---source include/have_64bit.inc ---source suite/sys_vars/inc/tmp_table_size_basic.inc - From ce942b399500cc8ee1374e95b99c476cf43870ef Mon Sep 17 00:00:00 2001 From: Matthias Leich Date: Mon, 8 Dec 2008 15:36:42 +0100 Subject: [PATCH 14/36] Fix for Bug#40904 20 tests in 5.1 are disabled in a bad manner - remove totally wrong (syntax) entries from disabled.def - remove entries belonging to deleted tests from disabled.def - correct the comments (correct the bug mentioned) of entries in disabled.def - remove never completed tests which were accidently pushed --- mysql-test/suite/funcs_2/t/disabled.def | 8 +- mysql-test/suite/ndb/t/disabled.def | 3 +- .../suite/parts/r/partition_bit_ndb.result | 126 ------ mysql-test/suite/parts/t/disabled.def | 5 - .../suite/parts/t/partition_bit_ndb.test | 60 --- .../suite/parts/t/partition_sessions.test | 391 ------------------ .../suite/parts/t/partition_value_innodb.test | 12 +- .../suite/parts/t/partition_value_myisam.test | 12 +- .../suite/parts/t/partition_value_ndb.test | 12 +- mysql-test/suite/rpl_ndb/t/disabled.def | 4 +- mysql-test/t/disabled.def | 3 +- 11 files changed, 35 insertions(+), 601 deletions(-) delete mode 100644 mysql-test/suite/parts/r/partition_bit_ndb.result delete mode 100644 mysql-test/suite/parts/t/partition_bit_ndb.test delete mode 100644 mysql-test/suite/parts/t/partition_sessions.test diff --git a/mysql-test/suite/funcs_2/t/disabled.def b/mysql-test/suite/funcs_2/t/disabled.def index c903662e052..da6230bd7ed 100644 --- a/mysql-test/suite/funcs_2/t/disabled.def +++ b/mysql-test/suite/funcs_2/t/disabled.def @@ -1,6 +1,6 @@ # Disabled by hhunger (2008-03-03) due to WL4204 -innodb_charset : Due to bug#20447 -myisam_charset : Due to bug#20477 -memory_charset : Due to bug#20447 -ndb_charset : Due to bug#20447 +innodb_charset : Bug#20447 Problem with prefix keys with contractions and expansions +myisam_charset : Bug#20447 Problem with prefix keys with contractions and expansions +memory_charset : Bug#20447 Problem with prefix keys with contractions and expansions +ndb_charset : Bug#20447 Problem with prefix keys with contractions and expansions diff --git a/mysql-test/suite/ndb/t/disabled.def b/mysql-test/suite/ndb/t/disabled.def index c638c7b4774..0fc9a5d3ad6 100644 --- a/mysql-test/suite/ndb/t/disabled.def +++ b/mysql-test/suite/ndb/t/disabled.def @@ -9,8 +9,7 @@ # Do not use any TAB characters for whitespace. # ############################################################################## -partition_03ndb : BUG#16385 2006-03-24 mikael Partitions: crash when updating a range partitioned NDB table -ndb_partition_error2 : HF is not sure if the test can work as internded on all the platforms +ndb_partition_error2 : Bug#40989 ndb_partition_error2 needs maintenance # the below testcase have been reworked to avoid the bug, test contains comment, keep bug open diff --git a/mysql-test/suite/parts/r/partition_bit_ndb.result b/mysql-test/suite/parts/r/partition_bit_ndb.result deleted file mode 100644 index add3ed394ad..00000000000 --- a/mysql-test/suite/parts/r/partition_bit_ndb.result +++ /dev/null @@ -1,126 +0,0 @@ -SET @max_row = 20; -create table t1 (a bit(65), primary key (a)) partition by key (a); -ERROR 42000: Display width out of range for column 'a' (max = 64) -create table t1 (a bit(0), primary key (a)) partition by key (a); -show create table t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` bit(1) NOT NULL DEFAULT '\0', - PRIMARY KEY (`a`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 -/*!50100 PARTITION BY KEY (a) */ -drop table t1; -create table t1 (a bit(0), primary key (a)) partition by key (a) ( -partition pa1 DATA DIRECTORY = -'/tmp' INDEX DIRECTORY = -'/tmp', -partition pa2 DATA DIRECTORY = -'/tmp' INDEX DIRECTORY = -'/tmp'); -show create table t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` bit(1) NOT NULL DEFAULT '\0', - PRIMARY KEY (`a`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='/tmp/' INDEX DIRECTORY='/tmp/' -/*!50100 PARTITION BY KEY (a) -(PARTITION pa1 DATA DIRECTORY = '/tmp' INDEX DIRECTORY = '/tmp' ENGINE = MyISAM, - PARTITION pa2 DATA DIRECTORY = '/tmp' INDEX DIRECTORY = '/tmp' ENGINE = MyISAM) */ -drop table t1; -create table t1 (a bit(64), primary key (a)) partition by key (a); -show create table t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` bit(64) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0', - PRIMARY KEY (`a`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 -/*!50100 PARTITION BY KEY (a) */ -insert into t1 values -(b'1111111111111111111111111111111111111111111111111111111111111111'), -(b'1000000000000000000000000000000000000000000000000000000000000000'), -(b'0000000000000000000000000000000000000000000000000000000000000001'), -(b'1010101010101010101010101010101010101010101010101010101010101010'), -(b'0101010101010101010101010101010101010101010101010101010101010101'); -select hex(a) from t1; -hex(a) -1 -5555555555555555 -8000000000000000 -AAAAAAAAAAAAAAAA -FFFFFFFFFFFFFFFF -drop table t1; -create table t1 (a bit(64), primary key (a)) partition by key (a)( -partition pa1 DATA DIRECTORY = -'/tmp' INDEX DIRECTORY = -'/tmp' max_rows=20 min_rows=2, -partition pa2 DATA DIRECTORY = -'/tmp' INDEX DIRECTORY = -'/tmp' max_rows=30 min_rows=3, -partition pa3 DATA DIRECTORY = -'/tmp' INDEX DIRECTORY = -'/tmp' max_rows=30 min_rows=4, -partition pa4 DATA DIRECTORY = -'/tmp' INDEX DIRECTORY = -'/tmp' max_rows=40 min_rows=2); -show create table t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` bit(64) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0', - PRIMARY KEY (`a`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='/tmp/' INDEX DIRECTORY='/tmp/' -/*!50100 PARTITION BY KEY (a) -(PARTITION pa1 MAX_ROWS = 20 MIN_ROWS = 2 DATA DIRECTORY = '/tmp' INDEX DIRECTORY = '/tmp' ENGINE = MyISAM, - PARTITION pa2 MAX_ROWS = 30 MIN_ROWS = 3 DATA DIRECTORY = '/tmp' INDEX DIRECTORY = '/tmp' ENGINE = MyISAM, - PARTITION pa3 MAX_ROWS = 30 MIN_ROWS = 4 DATA DIRECTORY = '/tmp' INDEX DIRECTORY = '/tmp' ENGINE = MyISAM, - PARTITION pa4 MAX_ROWS = 40 MIN_ROWS = 2 DATA DIRECTORY = '/tmp' INDEX DIRECTORY = '/tmp' ENGINE = MyISAM) */ -insert into t1 values -(b'1111111111111111111111111111111111111111111111111111111111111111'), -(b'1000000000000000000000000000000000000000000000000000000000000000'), -(b'0000000000000000000000000000000000000000000000000000000000000001'), -(b'1010101010101010101010101010101010101010101010101010101010101010'), -(b'0101010101010101010101010101010101010101010101010101010101010101'); -select hex(a) from t1; -hex(a) -1 -5555555555555555 -8000000000000000 -AAAAAAAAAAAAAAAA -FFFFFFFFFFFFFFFF -drop table t1; -create table t1 (a bit, primary key (a)) partition by key (a); -show create table t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` bit(1) NOT NULL DEFAULT '\0', - PRIMARY KEY (`a`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 -/*!50100 PARTITION BY KEY (a) */ -insert into t1 values (b'0'), (b'1'); -select hex(a) from t1; -hex(a) -0 -1 -alter table t1 drop primary key; -show create table t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` bit(1) NOT NULL DEFAULT '\0' -) ENGINE=MyISAM DEFAULT CHARSET=latin1 -/*!50100 PARTITION BY KEY (a) */ -select hex(a) from t1; -hex(a) -0 -1 -alter table t1 add primary key (a); -show create table t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` bit(1) NOT NULL DEFAULT '\0', - PRIMARY KEY (`a`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 -/*!50100 PARTITION BY KEY (a) */ -select hex(a) from t1; -hex(a) -0 -1 -drop table t1; diff --git a/mysql-test/suite/parts/t/disabled.def b/mysql-test/suite/parts/t/disabled.def index b9cd3462635..518a3c90422 100644 --- a/mysql-test/suite/parts/t/disabled.def +++ b/mysql-test/suite/parts/t/disabled.def @@ -1,8 +1,3 @@ partition_basic_ndb : Bug#19899 Crashing the server # http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-limitations-syntax.html -partition_bit_ndb : NDB does not support bit column in index -partition_sessions : needs system_3_init.inc partition_syntax_ndb : Bug#36735 Not supported -partition_value_innodb : Bug#30581 partition_value tests use disallowed CAST() function -partition_value_myisam : Bug#30581 partition_value tests use disallowed CAST() function -partition_value_ndb : Bug#30581 partition_value tests use disallowed CAST() function diff --git a/mysql-test/suite/parts/t/partition_bit_ndb.test b/mysql-test/suite/parts/t/partition_bit_ndb.test deleted file mode 100644 index 227d3d53401..00000000000 --- a/mysql-test/suite/parts/t/partition_bit_ndb.test +++ /dev/null @@ -1,60 +0,0 @@ -################################################################################ -# t/partition_bit_ndb.test # -# # -# Purpose: # -# Tests around bit type # -# NDB branch # -# # -#------------------------------------------------------------------------------# -# Original Author: HH # -# Original Date: 2006-08-01 # -# Change Author: # -# Change Date: # -# Change: # -################################################################################ - -# -# NOTE: PLEASE DO NOT ADD NOT MYISAM SPECIFIC TESTCASES HERE ! -# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN -# THE SOURCED FILES ONLY. -# -# Please read the README at the end of inc/partition.pre before changing -# any of the variables. -# - -#------------------------------------------------------------------------------# -# General not engine specific settings and requirements - -##### Options, for debugging support ##### -let $debug= 0; -let $with_partitioning= 1; - -##### Option, for displaying files ##### -let $ls= 1; - -##### Number of rows for the INSERT/UPDATE/DELETE/SELECT experiments ##### -# on partioned tables -SET @max_row = 20; - -# The server must support partitioning. ---source include/have_partition.inc - -#------------------------------------------------------------------------------# -# Engine specific settings and requirements - -##### Storage engine to be tested ---source include/have_ndb.inc -let $engine= 'NDB'; -connection default; - -# range, list and hash partitioning in ndb requires new_mode ---disable_query_log -set new=on; ---enable_query_log -##### Assign a big number smaller than the maximum value for partitions ##### -# and smaller than the maximum value of SIGNED INTEGER -let $MAX_VALUE= (2147483646); - -#------------------------------------------------------------------------------# -# Execute the tests to be applied to all storage engines ---source suite/parts/inc/partition_bit.inc diff --git a/mysql-test/suite/parts/t/partition_sessions.test b/mysql-test/suite/parts/t/partition_sessions.test deleted file mode 100644 index 3d59292bee5..00000000000 --- a/mysql-test/suite/parts/t/partition_sessions.test +++ /dev/null @@ -1,391 +0,0 @@ - -#-------------------------------------------------- -# Initialize system_3 test variables -#-------------------------------------------------- - ---source suite/system_3/include/system_3_init.inc - -let $NUM_VAL=`SELECT @NUM_VAL`; -let $LOAD_LINES=`SELECT @LOAD_LINES`; -let $LOG_UPPER=`SELECT @LOG_UPPER`; -let $LOG_LOWER=`SELECT @LOG_LOWER`; -#let $ENG1=`SELECT @ENG1`; -let $ENG2=`SELECT @ENG2`; -let $ENG_LOG=`SELECT @ENG_LOG`; -let $CLIENT_HOST=`SELECT @CLIENT_HOST`; -let $ENG=innodb; -let $ENG1=innodb; -#--------------------------------------------------------- -# Column list with definition for all tables to be checked -#--------------------------------------------------------- - -let $column_list= f1 int, -f2 char (15), -f3 decimal (5,3), -f4 datetime; - -let $col_access_list = f1,f2,f3,f4 ; -let $col_new_list = new.f1,new.f2,new.f3 new.f4 ; - -#--------------------------------------------------- -# Setting the parameters to use during testing -#--------------------------------------------------- -# Set number of variations of the f1 variable (used to segment the rows -# being updated/deleted by a user at a time. The higher the number, the -# more smaller segments used with each query. ---replace_result $NUM_VAL NUM_VAL -eval set @f1_nums=$NUM_VAL; - -# The following sets the number controls the size of the log table. -# Once a size of '@threshold' is reached, the first rows are removed -# sunch that the table is down to '@shrink_to' lines ---replace_result $LOG_LOWER LOG_LOWER -eval set @shrink_to=$LOG_LOWER; ---replace_result $LOG_UPPER LOG_UPPER -eval set @threshold=$LOG_UPPER; - -#--------------------------------------------------- -# Creating the database tables and loading the data -#--------------------------------------------------- - ---disable_warnings -drop database if exists systest1; ---enable_warnings - -create database systest1; - ---disable_abort_on_error ---replace_result $CLIENT_HOST CLIENT_HOST -eval create user systuser@'$CLIENT_HOST'; ---enable_abort_on_error ---replace_result $CLIENT_HOST CLIENT_HOST -eval set password for systuser@'$CLIENT_HOST' = password('systpass'); ---replace_result $CLIENT_HOST CLIENT_HOST -eval grant ALL on systest1.* to systuser@'$CLIENT_HOST'; -use systest1; ---replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK -connect (systuser,localhost,systuser,systpass,systest1,$MASTER_MYPORT,$MASTER_MYSOCK); - -create table tb1_master ( - f1 int, - f2 char(15), - f3 decimal (5,3), - f4 datetime -); - -#--replace_result $ENG_LOG ENG_LOG -eval create table tb1_logs ( - i1 int NOT NULL auto_increment, primary key (i1), - dt1 datetime NOT NULL, - entry_dsc char(100), - f4 int -) engine=$ENG_LOG -; -#PARTITION BY HASH (i1) PARTITIONS 8; - -if ($debug) -{ -SHOW CREATE TABLE tb1_logs; -} - -#--replace_result $ENG_LOG ENG_LOG -eval create table ddl_logs ( - i1 int NOT NULL auto_increment, primary key (i1), - dt1 datetime NOT NULL, - entry_dsc char(100), - errno int -) engine=$ENG_LOG; -#PARTITION BY HASH (i1) PARTITIONS 8; - -if ($debug) -{ -SHOW CREATE TABLE tb1_logs; -} -create table test_stat ( - dt1 datetime, - table_name char(20), - row_count int, - start_row int, - end_row int -); - -#---------------------------------------------------------------------- -# tb3_eng1: key partitioning -#---------------------------------------------------------------------- - -#--replace_result $ENG1 ENG1 -eval create table tb3_eng1 ( - i1 int NOT NULL auto_increment, primary key (i1), - $column_list -) engine=$ENG1 -PARTITION BY KEY (i1) PARTITIONS 4 -(PARTITION part1, -PARTITION part2, -PARTITION part3, -PARTITION part4); - -#--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data local infile '$MYSQL_TEST_DIR/suite/system_3/data/tb1.txt' - into table tb3_eng1 ($col_access_list); - -if ($WITH_TRIGGERS) -{ -delimiter //; - -Create trigger tb3_eng1_ins after insert on tb3_eng1 for each row -BEGIN - insert into tb1_logs (dt1, entry_dsc, f4) - values (now(), concat('Insert row ', new.f1,' ', - new.f2, ' ', new.f3, ' (tb3_eng1)'), new.f1); -END// - -Create trigger tb3_eng1_upd after update on tb3_eng1 for each row -BEGIN - insert into tb1_logs (dt1, entry_dsc, f4) - values (now(), concat('Update row ', old.f1,' ', old.f2, '->', - new.f2, ' ', old.f3, '->', new.f3, ' (tb3_eng1)'), new.f1); -END// - -Create trigger tb3_eng1_del after delete on tb3_eng1 for each row -BEGIN - insert into tb1_logs (dt1, entry_dsc, f4) - values (now(), concat('Delete row ', old.f1,' ', old.f2, ' ', - old.f3, ' (tb3_eng1)'), old.f1); -END// - -delimiter ;// -} -delimiter //; - -# This functions returns a random integer number -# between zero and 'num' -#----------------------------------------------- -create function int_rand(num int) returns int -BEGIN - return round(num*rand()+0.5); -END// - -# This function returns a string in the length 'len' of -# random letters (ascii range of 65-122) -#------------------------------------------------------ -create function str_rand (len int) returns char(12) -BEGIN - declare tmp_letter char(1); - declare tmp_word char(12); - declare word_str char(12) default ''; - wl_loop: WHILE len DO - set tmp_letter=char(round(57*rand()+65)); - set tmp_word=concat(word_str,tmp_letter); - set word_str=tmp_word; - set len=len-1; - END WHILE wl_loop; - return word_str; -END// - - -# This procedure scans 'tb1_master' table for rows where f1='num_pr' -# and for each row inserts a row in 'tb3_eng1' -#------------------------------------------------------------------ -eval create procedure ins_tb3_eng1 (num_pr int, str_pr char(15)) -BEGIN - declare done int default 0; - declare v3 decimal(5,3); - declare cur1 cursor for - select f3 from tb1_master where f1=num_pr; - declare continue handler for sqlstate '01000' set done = 1; - declare continue handler for sqlstate '02000' set done = 1; - open cur1; - fetch cur1 into v3; - wl_loop: WHILE NOT done DO - insert into tb3_eng1 ($col_access_list) values - (int_rand(@f1_nums), concat('I:',str_pr,'-',num_pr), v3, now()); - fetch cur1 into v3; - END WHILE wl_loop; - close cur1; -END// - - -# This procedure does selects from the 'tb1_logs' and inserts the -# count into the table -#------------------------------------------------------------------ -create procedure slct_tb1_logs () -BEGIN - declare done int default 0; - declare v4 int; - declare v_count int default 0; - declare str_val char(15) default ELT(int_rand(3), - 'Insert', 'Update', 'Delete'); - declare cur1 cursor for - select f4 from tb1_logs where entry_dsc like concat('%',str_val,'%'); - declare continue handler for sqlstate '01000' set done = 1; - declare continue handler for sqlstate '02000' set done = 1; - open cur1; - fetch cur1 into v4; - wl_loop: WHILE NOT done DO - set v_count=v_count+1; - fetch cur1 into v4; - END WHILE wl_loop; - close cur1; - insert into tb1_logs (dt1, entry_dsc, f4) - values (now(), concat('Number of \'', str_val, '\' rows is: ', - v_count, ' (tb1_log)'),0); -END// - -delimiter ;// - ---disable_abort_on_error -insert into systest1.tb3_eng1 values (NULL,50,'init_val',12.345,'2005-01-01 00:00:00'); -insert into systest1.tb3_eng1 values (NULL,70,'init_val',12.345,'2005-01-01 00:00:00'); ---enable_abort_on_error - -connection default;0. ---disable_abort_on_error ---replace_result $CLIENT_HOST CLIENT_HOST -eval create user syst1user@'$CLIENT_HOST'; ---enable_abort_on_error ---replace_result $CLIENT_HOST CLIENT_HOST -eval set password for syst1user@'$CLIENT_HOST' = password('systpass'); ---replace_result $CLIENT_HOST CLIENT_HOST -eval grant ALL on systest1.* to syst1user@'$CLIENT_HOST'; -use systest1; ---replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK -connect (syst1user,localhost,syst1user,systpass,systest1,$MASTER_MYPORT,$MASTER_MYSOCK); - ---source suite/system_3/include/system_3_init.inc -use systest1; -let $NUM_VAL=`SELECT @NUM_VAL`; -eval SET @f1_nums=$NUM_VAL; -SET @tmp_num=int_rand(@f1_nums); -SET @tmp_word=str_rand(4); - -# DEBUG select @tmp_num, @tmp_word; - -# Insert rows replacing the deleted rows using a strored procedure -# that reads the rows from a master table -CALL ins_tb3_eng1 (@tmp_num, @tmp_word); - -connection syst1user; ---source suite/system_3/include/system_3_init.inc -use systest1; -let $NUM_VAL=`SELECT @NUM_VAL`; -eval SET @f1_nums=$NUM_VAL; -SET @tmp_num=int_rand(@f1_nums); -SET @tmp_word=str_rand(4); - -# DEBUG select @tmp_num, @tmp_word; - -# Insert rows replacing the deleted rows using a strored procedure -# that reads the rows from a master table -CALL ins_tb3_eng1 (@tmp_num, @tmp_word); - -connection systuser; ---source suite/system_3/include/system_3_init.inc -use systest1; -call slct_tb1_logs(); - -connection syst1user; ---source suite/system_3/include/system_3_init.inc -use systest1; -let $NUM_VAL=`SELECT @NUM_VAL`; -eval set @f1_nums=$NUM_VAL; -set @tmp_num=int_rand(@f1_nums); -set @tmp_word=str_rand(4); - -select @tmp_num, @tmp_word; - -# Update all rows in the table where f1 is one less the random number -update tb3_eng1 - set f2=concat('U:',@tmp_word,'-',@tmp_num), f3=f3+1 - where f1=@tmp_num-1; - -connection systuser; ---source suite/system_3/include/system_3_init.inc -use systest1; -let $NUM_VAL=`SELECT @NUM_VAL`; -eval set @f1_nums=$NUM_VAL; -set @tmp_num=int_rand(@f1_nums); -set @tmp_word=str_rand(4); - -select @tmp_num, @tmp_word; - -# Update all rows in the table where f1 is one less the random number -update tb3_eng1 - set f2=concat('U:',@tmp_word,'-',@tmp_num), f3=f3+1 - where f1=@tmp_num-1; - -connection syst1user; ---source suite/system_3/include/system_3_init.inc -use systest1; -call slct_tb1_logs(); - -connection systuser; ---source suite/system_3/include/system_3_init.inc -use systest1; -let $NUM_VAL=`SELECT @NUM_VAL`; -eval set @f1_nums=$NUM_VAL; -set @tmp_num=int_rand(@f1_nums); -set @tmp_word=str_rand(4); - -select @tmp_num, @tmp_word; - -# Update all rows in the table where f1 is one less the random number -update tb3_eng1 - set f2=concat('U:',@tmp_word,'-',@tmp_num), f3=f3+1 - where f1=@tmp_num-1; - - -connection syst1user; ---source suite/system_3/include/system_3_init.inc -use systest1; -#--replace_result $NUM_VAL -let $NUM_VAL=`SELECT @NUM_VAL`; -eval set @f1_nums=$NUM_VAL; -set @tmp_num=int_rand(@f1_nums); -select @tmp_num; - -# DEBUG select @tmp_num, @tmp_word; - -# Delete all rows from the table where f1 is equal to the above number -delete from tb3_eng1 where f1=@tmp_num; - -connection systuser; ---source suite/system_3/include/system_3_init.inc -use systest1; -select * from tb3_eng1 where f1>40; - - -connection syst1user; ---source suite/system_3/include/system_3_init.inc -use systest1; -let $NUM_VAL=`SELECT @NUM_VAL`; -eval set @f1_nums=$NUM_VAL; -set @tmp_num=int_rand(@f1_nums); -select @tmp_num; - -# DEBUG select @tmp_num, @tmp_word; - -# Delete all rows from the table where f1 is equal to the above number -delete from tb3_eng1 where f1=@tmp_num; - -connection systuser; ---source suite/system_3/include/system_3_init.inc -use systest1; -select * from tb3_eng1 where f1>40; - -connection syst1user; ---source suite/system_3/include/system_3_init.inc -use systest1; -let $NUM_VAL=`SELECT @NUM_VAL`; -eval set @f1_nums=$NUM_VAL; -set @tmp_num=int_rand(@f1_nums); -select @tmp_num; - -select @tmp_num, @tmp_word; - -# Delete all rows from the table where f1 is equal to the above number -delete from tb3_eng1 where f1=@tmp_num; - -connection systuser; ---source suite/system_3/include/system_3_init.inc -use systest1; -select * from tb3_eng1 where f1>40; diff --git a/mysql-test/suite/parts/t/partition_value_innodb.test b/mysql-test/suite/parts/t/partition_value_innodb.test index 9d59533a54e..fe47f533107 100644 --- a/mysql-test/suite/parts/t/partition_value_innodb.test +++ b/mysql-test/suite/parts/t/partition_value_innodb.test @@ -8,9 +8,9 @@ #------------------------------------------------------------------------------# # Original Author: mleich # # Original Date: 2006-04-11 # -# Change Author: # -# Change Date: # -# Change: # +# Change Author: mleich # +# Change Date: 2008-12-08 # +# Change: Remove test from disabled.def + change test that it gets skipped # ################################################################################ # @@ -22,6 +22,12 @@ # any of the variables. # +# +# CAST() within the partitioning function si no more supported, but we get +# this functionality probably soon again. Therefor we do not delete this test. +--skip # CAST() in partitioning function is currently not supported. + + #------------------------------------------------------------------------------# # General not engine specific settings and requirements diff --git a/mysql-test/suite/parts/t/partition_value_myisam.test b/mysql-test/suite/parts/t/partition_value_myisam.test index d6020669509..026ad57f0b2 100644 --- a/mysql-test/suite/parts/t/partition_value_myisam.test +++ b/mysql-test/suite/parts/t/partition_value_myisam.test @@ -8,9 +8,9 @@ #------------------------------------------------------------------------------# # Original Author: mleich # # Original Date: 2006-04-11 # -# Change Author: # -# Change Date: # -# Change: # +# Change Author: mleich # +# Change Date: 2008-12-08 # +# Change: Remove test from disabled.def + change test that it gets skipped # ################################################################################ # @@ -22,6 +22,12 @@ # any of the variables. # +# +# CAST() within the partitioning function si no more supported, but we get +# this functionality probably soon again. Therefor we do not delete this test. +--skip # CAST() in partitioning function is currently not supported. + + #------------------------------------------------------------------------------# # General not engine specific settings and requirements diff --git a/mysql-test/suite/parts/t/partition_value_ndb.test b/mysql-test/suite/parts/t/partition_value_ndb.test index 2f948b95727..80b4ba6fb64 100644 --- a/mysql-test/suite/parts/t/partition_value_ndb.test +++ b/mysql-test/suite/parts/t/partition_value_ndb.test @@ -8,9 +8,9 @@ #------------------------------------------------------------------------------# # Original Author: mleich # # Original Date: 2006-04-11 # -# Change Author: # -# Change Date: # -# Change: # +# Change Author: mleich # +# Change Date: 2008-12-08 # +# Change: Remove test from disabled.def + change test that it gets skipped # ################################################################################ # @@ -22,6 +22,12 @@ # any of the variables. # +# +# CAST() within the partitioning function si no more supported, but we get +# this functionality probably soon again. Therefor we do not delete this test. +--skip # CAST() in partitioning function is currently not supported. + + #------------------------------------------------------------------------------# # General not engine specific settings and requirements diff --git a/mysql-test/suite/rpl_ndb/t/disabled.def b/mysql-test/suite/rpl_ndb/t/disabled.def index ebc99feeac6..694f7098980 100644 --- a/mysql-test/suite/rpl_ndb/t/disabled.def +++ b/mysql-test/suite/rpl_ndb/t/disabled.def @@ -10,7 +10,7 @@ # ############################################################################## -rpl_ndb_circular : Bug#33849 COMMIT event missing in cluster circular replication. -rpl_ndb_circular_simplex : Bug#33849 COMMIT event missing in cluster circular replication. +rpl_ndb_circular : Bug#41183 rpl_ndb_circular, rpl_ndb_circular_simplex need maintenance, crash +rpl_ndb_circular_simplex : Bug#41183 rpl_ndb_circular, rpl_ndb_circular_simplex need maintenance, crash # the below testcase have been reworked to avoid the bug, test contains comment, keep bug open diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 5de0a435ba5..e2a4d0ba33d 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -10,6 +10,5 @@ # ############################################################################## federated_transactions : Bug#29523 Transactions do not work -log_tables.test : Bug #37798: main.log_tables fails randomly on powermacg5 and windows -slow_query_log_func.test : Bug #37962: *_func tests containing sleeps/race conditions +slow_query_log_func : Bug #37962: *_func tests containing sleeps/race conditions wait_timeout_func : Bug #41225 joro wait_timeout_func fails From cbb368aa889ad5243db2e3c486555570dbb8c494 Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Tue, 9 Dec 2008 13:53:23 +0400 Subject: [PATCH 15/36] Bug#35796 SHOW CREATE TABLE and default value for BIT field show default value for BIT field in printable format mysql-test/r/type_bit.result: Bug#35796 SHOW CREATE TABLE and default value for BIT field test result mysql-test/t/type_bit.test: Bug#35796 SHOW CREATE TABLE and default value for BIT field test case sql/item.cc: Bug#35796 SHOW CREATE TABLE and default value for BIT field issue an error if BIN|HEX deafult value is empty value (behaviour like for INT fields) --- mysql-test/r/type_bit.result | 15 +++++++++++++++ mysql-test/t/type_bit.test | 15 +++++++++++++++ sql/item.cc | 3 +++ sql/sql_show.cc | 18 +++++++++++++++--- 4 files changed, 48 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/type_bit.result b/mysql-test/r/type_bit.result index 68c0e1635a3..2a83d9b4c62 100644 --- a/mysql-test/r/type_bit.result +++ b/mysql-test/r/type_bit.result @@ -708,4 +708,19 @@ HEX(b1) HEX(b2) i2 1 0 100 1 0 200 DROP TABLE t1, t2; +CREATE TABLE IF NOT EXISTS t1 ( +f1 bit(2) NOT NULL default b'10', +f2 bit(14) NOT NULL default b'11110000111100' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` bit(2) NOT NULL default b'10', + `f2` bit(14) NOT NULL default b'11110000111100' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci +DROP TABLE t1; +CREATE TABLE IF NOT EXISTS t1 ( +f1 bit(2) NOT NULL default b'' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; +ERROR 42000: Invalid default value for 'f1' End of 5.0 tests diff --git a/mysql-test/t/type_bit.test b/mysql-test/t/type_bit.test index 6a6b29deda4..81dca17f112 100644 --- a/mysql-test/t/type_bit.test +++ b/mysql-test/t/type_bit.test @@ -352,4 +352,19 @@ SELECT HEX(b1), HEX(b2), i2 FROM t2 DROP TABLE t1, t2; +# +# Bug #35796 SHOW CREATE TABLE and default value for BIT field +# +CREATE TABLE IF NOT EXISTS t1 ( +f1 bit(2) NOT NULL default b'10', +f2 bit(14) NOT NULL default b'11110000111100' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +--error ER_INVALID_DEFAULT +CREATE TABLE IF NOT EXISTS t1 ( +f1 bit(2) NOT NULL default b'' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + --echo End of 5.0 tests diff --git a/sql/item.cc b/sql/item.cc index 182f4abdfe6..243c22bb7e6 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -4950,6 +4950,9 @@ int Item_hex_string::save_in_field(Field *field, bool no_conversions) ulonglong nr; uint32 length= str_value.length(); + if (!length) + return 1; + if (length > 8) { nr= field->flags & UNSIGNED_FLAG ? ULONGLONG_MAX : LONGLONG_MAX; diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 4e3d209f674..59082e0a295 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -798,7 +798,7 @@ static bool get_field_default_value(THD *thd, TABLE *table, { bool has_default; bool has_now_default; - + enum enum_field_types field_type= field->type(); /* We are using CURRENT_TIMESTAMP instead of NOW because it is more standard @@ -806,7 +806,7 @@ static bool get_field_default_value(THD *thd, TABLE *table, has_now_default= table->timestamp_field == field && field->unireg_check != Field::TIMESTAMP_UN_FIELD; - has_default= (field->type() != FIELD_TYPE_BLOB && + has_default= (field_type != FIELD_TYPE_BLOB && !(field->flags & NO_DEFAULT_VALUE_FLAG) && field->unireg_check != Field::NEXT_NUMBER && !((thd->variables.sql_mode & (MODE_MYSQL323 | MODE_MYSQL40)) @@ -821,7 +821,19 @@ static bool get_field_default_value(THD *thd, TABLE *table, { // Not null by default char tmp[MAX_FIELD_WIDTH]; String type(tmp, sizeof(tmp), field->charset()); - field->val_str(&type); + if (field_type == MYSQL_TYPE_BIT) + { + longlong dec= field->val_int(); + char *ptr= longlong2str(dec, tmp + 2, 2); + uint32 length= (uint32) (ptr - tmp); + tmp[0]= 'b'; + tmp[1]= '\''; + tmp[length]= '\''; + type.length(length + 1); + quoted= 0; + } + else + field->val_str(&type); if (type.length()) { String def_val; From 681a2d1a53999f70e5437f62d8478caade48f3b3 Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Tue, 9 Dec 2008 14:00:43 +0400 Subject: [PATCH 16/36] bug#35558 Wrong server metadata blows up the client the problem: FORMAT func max_length value was calculated incorrectly the fix: correct calculation of max_length mysql-test/r/func_str.result: test result mysql-test/t/func_str.test: test case sql/item_strfunc.h: the problem: FORMAT func max_length value was calculated incorrectly the fix: correct calculation of max_length --- mysql-test/r/func_str.result | 12 +++++++++--- mysql-test/t/func_str.test | 10 ++++++++++ sql/item_strfunc.h | 5 +++-- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/mysql-test/r/func_str.result b/mysql-test/r/func_str.result index d0809eca65b..c121c8937d7 100644 --- a/mysql-test/r/func_str.result +++ b/mysql-test/r/func_str.result @@ -717,8 +717,6 @@ insert(_latin2'abcd',2,3,_latin2'ef'), replace(_latin2'abcd',_latin2'b',_latin2'B'), encode('abcd','ab') ; -Warnings: -Warning 1265 Data truncated for column 'format(130,10)' at row 1 show create table t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -727,7 +725,7 @@ t1 CREATE TABLE `t1` ( `conv(130,16,10)` varchar(64) default NULL, `hex(130)` varchar(6) NOT NULL default '', `char(130)` varbinary(4) NOT NULL default '', - `format(130,10)` varchar(4) NOT NULL default '', + `format(130,10)` varchar(16) NOT NULL default '', `left(_latin2'a',1)` varchar(1) character set latin2 NOT NULL default '', `right(_latin2'a',1)` varchar(1) character set latin2 NOT NULL default '', `lcase(_latin2'a')` varchar(1) character set latin2 NOT NULL default '', @@ -2175,4 +2173,12 @@ SELECT HEX(c1) from v1; HEX(c1) 414243 DROP VIEW v1; +create table t1(a float); +insert into t1 values (1.33); +select format(a, 2) from t1; +Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr +def format(a, 2) 253 20 4 Y 0 2 8 +format(a, 2) +1.33 +drop table t1; End of 5.0 tests diff --git a/mysql-test/t/func_str.test b/mysql-test/t/func_str.test index 1ca2bbfaf4c..8298a50c277 100644 --- a/mysql-test/t/func_str.test +++ b/mysql-test/t/func_str.test @@ -1149,4 +1149,14 @@ CREATE VIEW v1 AS SELECT CHAR(0x414243) as c1; SELECT HEX(c1) from v1; DROP VIEW v1; +# +# Bug #35558 Wrong server metadata blows up the client +# +create table t1(a float); +insert into t1 values (1.33); +--enable_metadata +select format(a, 2) from t1; +--disable_metadata +drop table t1; + --echo End of 5.0 tests diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h index 3648438a69b..23ac20a4017 100644 --- a/sql/item_strfunc.h +++ b/sql/item_strfunc.h @@ -516,8 +516,9 @@ public: { collation.set(default_charset()); uint char_length= args[0]->max_length/args[0]->collation.collation->mbmaxlen; - max_length= ((char_length + (char_length-args[0]->decimals)/3) * - collation.collation->mbmaxlen); + uint max_sep_count= char_length/3 + (decimals ? 1 : 0) + /*sign*/1; + max_length= (char_length + max_sep_count + decimals) * + collation.collation->mbmaxlen; } const char *func_name() const { return "format"; } void print(String *); From 06c4ff1c13f381130c264ba72f13009cc60528f6 Mon Sep 17 00:00:00 2001 From: Alexey Kopytov Date: Tue, 9 Dec 2008 13:19:46 +0300 Subject: [PATCH 17/36] Added a missing bit from the original patch for bug #27483 which was lost when re-applying the patch manually to another tree. --- sql/field.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/field.cc b/sql/field.cc index 8188b51d4d1..f8ab4b852ec 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -3473,7 +3473,7 @@ int Field_longlong::store(double nr) error= 1; } else - res=(longlong) (ulonglong) nr; + res=(longlong) double2ulonglong(nr); } else { From 419e053a417f4ec771cc940be3c0b924cd868f9d Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Tue, 9 Dec 2008 16:38:52 +0400 Subject: [PATCH 18/36] Bug#31291 ALTER TABLE CONVERT TO CHARACTER SET does not change some data types added ability for TINY[MEDIUM] text fields to be converted to greater subtype during alter if necessary(altered charset) mysql-test/r/alter_table.result: test result mysql-test/t/alter_table.test: test case sql/sql_table.cc: added ability for TINY[MEDIUM] text fields to be converted to greater subtype during alter if necessary(altered charset) --- mysql-test/r/alter_table.result | 16 ++++++++++++++++ mysql-test/t/alter_table.test | 13 +++++++++++++ sql/sql_table.cc | 4 +++- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/alter_table.result b/mysql-test/r/alter_table.result index 95c652055ec..d81086682f1 100644 --- a/mysql-test/r/alter_table.result +++ b/mysql-test/r/alter_table.result @@ -915,3 +915,19 @@ check table t1; Table Op Msg_type Msg_text test.t1 check status OK drop table t1; +create table t1 (a tinytext character set latin1); +alter table t1 convert to character set utf8; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` text +) ENGINE=MyISAM DEFAULT CHARSET=utf8 +drop table t1; +create table t1 (a mediumtext character set latin1); +alter table t1 convert to character set utf8; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` longtext +) ENGINE=MyISAM DEFAULT CHARSET=utf8 +drop table t1; diff --git a/mysql-test/t/alter_table.test b/mysql-test/t/alter_table.test index bcca122f9f8..18481291bba 100644 --- a/mysql-test/t/alter_table.test +++ b/mysql-test/t/alter_table.test @@ -696,3 +696,16 @@ unlock tables; select * from t1; check table t1; drop table t1; + + +# +# Bug#31291 ALTER TABLE CONVERT TO CHARACTER SET does not change some data types +# +create table t1 (a tinytext character set latin1); +alter table t1 convert to character set utf8; +show create table t1; +drop table t1; +create table t1 (a mediumtext character set latin1); +alter table t1 convert to character set utf8; +show create table t1; +drop table t1; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 8baeca9ccf7..eefe2a5596e 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -1535,7 +1535,9 @@ static bool prepare_blob_field(THD *thd, create_field *sql_field) if ((sql_field->flags & BLOB_FLAG) && sql_field->length) { - if (sql_field->sql_type == FIELD_TYPE_BLOB) + if (sql_field->sql_type == FIELD_TYPE_BLOB || + sql_field->sql_type == FIELD_TYPE_TINY_BLOB || + sql_field->sql_type == FIELD_TYPE_MEDIUM_BLOB) { /* The user has given a length to the blob column */ sql_field->sql_type= get_blob_type_from_length(sql_field->length); From 4ce563e01cffebebd5c2a436ba67bf54e27f01f4 Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Tue, 9 Dec 2008 16:59:47 +0400 Subject: [PATCH 19/36] Bug#31399 Wrong query result when doing join buffering over BIT fields if table has bit fields then uneven bits(if exist) are stored into null bits place. So we need to copy null bits in case of uneven bit field presence. mysql-test/r/type_bit.result: test result mysql-test/t/type_bit.test: test case sql/sql_select.cc: if table has bit fields then uneven bits(if exist) are stored into null bits place. So we need to copy null bits in case of uneven bit field presence. --- mysql-test/r/type_bit.result | 26 ++++++++++++++++++++++++++ mysql-test/t/type_bit.test | 30 ++++++++++++++++++++++++++++++ sql/sql_select.cc | 8 ++++++-- 3 files changed, 62 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/type_bit.result b/mysql-test/r/type_bit.result index 2a83d9b4c62..63dec0297d0 100644 --- a/mysql-test/r/type_bit.result +++ b/mysql-test/r/type_bit.result @@ -723,4 +723,30 @@ CREATE TABLE IF NOT EXISTS t1 ( f1 bit(2) NOT NULL default b'' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; ERROR 42000: Invalid default value for 'f1' +create table t1bit7 (a1 bit(7) not null) engine=MyISAM; +create table t2bit7 (b1 bit(7)) engine=MyISAM; +insert into t1bit7 values (b'1100000'); +insert into t1bit7 values (b'1100001'); +insert into t1bit7 values (b'1100010'); +insert into t2bit7 values (b'1100001'); +insert into t2bit7 values (b'1100010'); +insert into t2bit7 values (b'1100110'); +select bin(a1) from t1bit7, t2bit7 where t1bit7.a1=t2bit7.b1; +bin(a1) +1100001 +1100010 +drop table t1bit7, t2bit7; +create table t1bit7 (a1 bit(15) not null) engine=MyISAM; +create table t2bit7 (b1 bit(15)) engine=MyISAM; +insert into t1bit7 values (b'110000011111111'); +insert into t1bit7 values (b'110000111111111'); +insert into t1bit7 values (b'110001011111111'); +insert into t2bit7 values (b'110000111111111'); +insert into t2bit7 values (b'110001011111111'); +insert into t2bit7 values (b'110011011111111'); +select bin(a1) from t1bit7, t2bit7 where t1bit7.a1=t2bit7.b1; +bin(a1) +110000111111111 +110001011111111 +drop table t1bit7, t2bit7; End of 5.0 tests diff --git a/mysql-test/t/type_bit.test b/mysql-test/t/type_bit.test index 81dca17f112..bdc678688f1 100644 --- a/mysql-test/t/type_bit.test +++ b/mysql-test/t/type_bit.test @@ -367,4 +367,34 @@ CREATE TABLE IF NOT EXISTS t1 ( f1 bit(2) NOT NULL default b'' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; + +# +# Bug#31399 Wrong query result when doing join buffering over BIT fields +# +create table t1bit7 (a1 bit(7) not null) engine=MyISAM; +create table t2bit7 (b1 bit(7)) engine=MyISAM; + +insert into t1bit7 values (b'1100000'); +insert into t1bit7 values (b'1100001'); +insert into t1bit7 values (b'1100010'); +insert into t2bit7 values (b'1100001'); +insert into t2bit7 values (b'1100010'); +insert into t2bit7 values (b'1100110'); + +select bin(a1) from t1bit7, t2bit7 where t1bit7.a1=t2bit7.b1; +drop table t1bit7, t2bit7; + +create table t1bit7 (a1 bit(15) not null) engine=MyISAM; +create table t2bit7 (b1 bit(15)) engine=MyISAM; + +insert into t1bit7 values (b'110000011111111'); +insert into t1bit7 values (b'110000111111111'); +insert into t1bit7 values (b'110001011111111'); +insert into t2bit7 values (b'110000111111111'); +insert into t2bit7 values (b'110001011111111'); +insert into t2bit7 values (b'110011011111111'); + +select bin(a1) from t1bit7, t2bit7 where t1bit7.a1=t2bit7.b1; +drop table t1bit7, t2bit7; + --echo End of 5.0 tests diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 2ac33c4e07f..b080fff8725 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -13233,6 +13233,7 @@ join_init_cache(THD *thd,JOIN_TAB *tables,uint table_count) length=0; for (i=0 ; i < table_count ; i++) { + bool have_bit_fields= FALSE; uint null_fields=0,used_fields; Field **f_ptr,*field; @@ -13247,13 +13248,16 @@ join_init_cache(THD *thd,JOIN_TAB *tables,uint table_count) length+=field->fill_cache_field(copy); if (copy->blob_field) (*blob_ptr++)=copy; - if (field->maybe_null()) + if (field->real_maybe_null()) null_fields++; + if (field->type() == MYSQL_TYPE_BIT && + ((Field_bit*)field)->bit_len) + have_bit_fields= TRUE; copy++; } } /* Copy null bits from table */ - if (null_fields && tables[i].table->s->null_fields) + if (null_fields || have_bit_fields) { /* must copy null bits */ copy->str=(char*) tables[i].table->null_flags; copy->length= tables[i].table->s->null_bytes; From 667367780358ac3bba58519b07fe3476923fc4fe Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Tue, 9 Dec 2008 19:31:22 +0400 Subject: [PATCH 20/36] updated test results mysql-test/suite/parts/r/partition_bit_innodb.result: updated test result mysql-test/suite/parts/r/partition_bit_myisam.result: updated test result --- .../suite/parts/r/partition_bit_innodb.result | 18 +++++++++--------- .../suite/parts/r/partition_bit_myisam.result | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/mysql-test/suite/parts/r/partition_bit_innodb.result b/mysql-test/suite/parts/r/partition_bit_innodb.result index 2ea66592679..a9ae917f13d 100644 --- a/mysql-test/suite/parts/r/partition_bit_innodb.result +++ b/mysql-test/suite/parts/r/partition_bit_innodb.result @@ -6,7 +6,7 @@ create table t1 (a bit(0), primary key (a)) engine='INNODB' partition by key (a) show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `a` bit(1) NOT NULL DEFAULT '\0', + `a` bit(1) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) */ @@ -18,7 +18,7 @@ partition pa2); show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `a` bit(1) NOT NULL DEFAULT '\0', + `a` bit(1) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) @@ -30,7 +30,7 @@ partition by key (a) partitions 2; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `a` bit(64) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0', + `a` bit(64) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) @@ -58,7 +58,7 @@ partition pa4 max_rows=40 min_rows=2); show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `a` bit(64) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0', + `a` bit(64) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) @@ -88,7 +88,7 @@ partition by key (a) partitions 4; show create table t2; Table Create Table t2 CREATE TABLE `t2` ( - `a` bit(1) NOT NULL DEFAULT '\0', + `a` bit(1) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) @@ -102,7 +102,7 @@ alter table t2 drop primary key; show create table t2; Table Create Table t2 CREATE TABLE `t2` ( - `a` bit(1) NOT NULL DEFAULT '\0' + `a` bit(1) NOT NULL DEFAULT b'0' ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) PARTITIONS 4 */ @@ -114,7 +114,7 @@ alter table t2 add primary key (a); show create table t2; Table Create Table t2 CREATE TABLE `t2` ( - `a` bit(1) NOT NULL DEFAULT '\0', + `a` bit(1) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) @@ -133,7 +133,7 @@ partition pa4 values less than (256)); show create table t3; Table Create Table t3 CREATE TABLE `t3` ( - `a` bit(8) NOT NULL DEFAULT '\0', + `a` bit(8) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) @@ -416,7 +416,7 @@ partition pa3 values in (17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32)); show create table t4; Table Create Table t4 CREATE TABLE `t4` ( - `a` bit(8) NOT NULL DEFAULT '\0', + `a` bit(8) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) diff --git a/mysql-test/suite/parts/r/partition_bit_myisam.result b/mysql-test/suite/parts/r/partition_bit_myisam.result index c1f067d80d1..680845c9971 100644 --- a/mysql-test/suite/parts/r/partition_bit_myisam.result +++ b/mysql-test/suite/parts/r/partition_bit_myisam.result @@ -6,7 +6,7 @@ create table t1 (a bit(0), primary key (a)) engine='MyISAM' partition by key (a) show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `a` bit(1) NOT NULL DEFAULT '\0', + `a` bit(1) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) */ @@ -18,7 +18,7 @@ partition pa2); show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `a` bit(1) NOT NULL DEFAULT '\0', + `a` bit(1) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) @@ -30,7 +30,7 @@ partition by key (a) partitions 2; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `a` bit(64) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0', + `a` bit(64) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) @@ -58,7 +58,7 @@ partition pa4 max_rows=40 min_rows=2); show create table t1; Table Create Table t1 CREATE TABLE `t1` ( - `a` bit(64) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0', + `a` bit(64) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) @@ -88,7 +88,7 @@ partition by key (a) partitions 4; show create table t2; Table Create Table t2 CREATE TABLE `t2` ( - `a` bit(1) NOT NULL DEFAULT '\0', + `a` bit(1) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) @@ -102,7 +102,7 @@ alter table t2 drop primary key; show create table t2; Table Create Table t2 CREATE TABLE `t2` ( - `a` bit(1) NOT NULL DEFAULT '\0' + `a` bit(1) NOT NULL DEFAULT b'0' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) PARTITIONS 4 */ @@ -114,7 +114,7 @@ alter table t2 add primary key (a); show create table t2; Table Create Table t2 CREATE TABLE `t2` ( - `a` bit(1) NOT NULL DEFAULT '\0', + `a` bit(1) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) @@ -133,7 +133,7 @@ partition pa4 values less than (256)); show create table t3; Table Create Table t3 CREATE TABLE `t3` ( - `a` bit(8) NOT NULL DEFAULT '\0', + `a` bit(8) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) @@ -416,7 +416,7 @@ partition pa3 values in (17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32)); show create table t4; Table Create Table t4 CREATE TABLE `t4` ( - `a` bit(8) NOT NULL DEFAULT '\0', + `a` bit(8) NOT NULL DEFAULT b'0', PRIMARY KEY (`a`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) From bd8657786a185fee54cfbc35b7ef5142e8508073 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Tue, 9 Dec 2008 19:46:03 +0200 Subject: [PATCH 21/36] Bug #37936: ASSERT_COLUMN_MARKED_FOR_WRITE in Field_datetime::store , Field_varstring::store The code that temporary saved the bitmaps of the read set and the write set so that it can set it to all columns for debug purposes was not expecting that the table->read_set and table->write_set can be the same. And was always saving both in sequence. As a result the original value was never restored. Fixed by saving & restoring the original value only once if the two sets are the same (in a special set of functions). mysql-test/r/select.result: Bug #37936: test case mysql-test/t/select.test: Bug #37936: test case sql/item_cmpfunc.cc: Bug #37936: don't save/restore twice if the read and write sets are the same sql/opt_range.cc: Bug #37936: don't save/restore twice if the read and write sets are the same sql/table.h: Bug #37936: Make a designated set of functions that save/restore both the read and the write sets in a single call. --- mysql-test/r/select.result | 26 ++++++++++++++++++++++++++ mysql-test/t/select.test | 33 +++++++++++++++++++++++++++++++++ sql/item_cmpfunc.cc | 18 ++++++------------ sql/opt_range.cc | 26 +++++++++++--------------- sql/table.h | 30 ++++++++++++++++++++++++++++++ 5 files changed, 106 insertions(+), 27 deletions(-) diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index 4b2464af688..313bc9b9630 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -4358,3 +4358,29 @@ a 4 5 DROP TABLE t1; +CREATE TABLE A (date_key date); +CREATE TABLE C ( +pk int, +int_nokey int, +int_key int, +date_key date NOT NULL, +date_nokey date, +varchar_key varchar(1) +); +INSERT INTO C VALUES +(1,1,1,'0000-00-00',NULL,NULL), +(1,1,1,'0000-00-00',NULL,NULL); +SELECT 1 FROM C WHERE pk > ANY (SELECT 1 FROM C); +1 +SELECT COUNT(DISTINCT 1) FROM C +WHERE date_key = (SELECT 1 FROM A WHERE C.date_key IS NULL) GROUP BY pk; +COUNT(DISTINCT 1) +SELECT date_nokey FROM C +WHERE int_key IN (SELECT 1 FROM A) +HAVING date_nokey = '10:41:7' +ORDER BY date_key; +date_nokey +Warnings: +Warning 1292 Incorrect date value: '10:41:7' for column 'date_nokey' at row 1 +DROP TABLE A,C; +End of 5.1 tests diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index 30abb797e83..020f94699f9 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -3701,3 +3701,36 @@ SELECT a FROM t1 ORDER BY a LIMIT 2; SELECT a FROM t1 ORDER BY a LIMIT 2,4294967296; SELECT a FROM t1 ORDER BY a LIMIT 2,4294967297; DROP TABLE t1; + +# +# Bug #37936: ASSERT_COLUMN_MARKED_FOR_WRITE in Field_datetime::store , +# Field_varstring::store +# + +CREATE TABLE A (date_key date); + +CREATE TABLE C ( + pk int, + int_nokey int, + int_key int, + date_key date NOT NULL, + date_nokey date, + varchar_key varchar(1) +); + +INSERT INTO C VALUES +(1,1,1,'0000-00-00',NULL,NULL), +(1,1,1,'0000-00-00',NULL,NULL); + +SELECT 1 FROM C WHERE pk > ANY (SELECT 1 FROM C); + +SELECT COUNT(DISTINCT 1) FROM C + WHERE date_key = (SELECT 1 FROM A WHERE C.date_key IS NULL) GROUP BY pk; +SELECT date_nokey FROM C + WHERE int_key IN (SELECT 1 FROM A) + HAVING date_nokey = '10:41:7' + ORDER BY date_key; + +DROP TABLE A,C; + +--echo End of 5.1 tests diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index cefa479fea6..564632fbb9b 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -394,19 +394,16 @@ static bool convert_constant_item(THD *thd, Item_field *field_item, TABLE *table= field->table; ulong orig_sql_mode= thd->variables.sql_mode; enum_check_fields orig_count_cuted_fields= thd->count_cuted_fields; - my_bitmap_map *old_write_map; - my_bitmap_map *old_read_map; + my_bitmap_map *old_maps[2]; ulonglong orig_field_val; /* original field value if valid */ - LINT_INIT(old_write_map); - LINT_INIT(old_read_map); + LINT_INIT(old_maps[0]); + LINT_INIT(old_maps[1]); LINT_INIT(orig_field_val); if (table) - { - old_write_map= dbug_tmp_use_all_columns(table, table->write_set); - old_read_map= dbug_tmp_use_all_columns(table, table->read_set); - } + dbug_tmp_use_all_columns(table, old_maps, + table->read_set, table->write_set); /* For comparison purposes allow invalid dates like 2000-01-32 */ thd->variables.sql_mode= (orig_sql_mode & ~MODE_NO_ZERO_DATE) | MODE_INVALID_DATES; @@ -437,10 +434,7 @@ static bool convert_constant_item(THD *thd, Item_field *field_item, thd->variables.sql_mode= orig_sql_mode; thd->count_cuted_fields= orig_count_cuted_fields; if (table) - { - dbug_tmp_restore_column_map(table->write_set, old_write_map); - dbug_tmp_restore_column_map(table->read_set, old_read_map); - } + dbug_tmp_restore_column_maps(table->read_set, table->write_set, old_maps); } return result; } diff --git a/sql/opt_range.cc b/sql/opt_range.cc index bafc368e415..7d9709909c3 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -2668,7 +2668,7 @@ bool prune_partitions(THD *thd, TABLE *table, Item *pprune_cond) PART_PRUNE_PARAM prune_param; MEM_ROOT alloc; RANGE_OPT_PARAM *range_par= &prune_param.range_param; - my_bitmap_map *old_read_set, *old_write_set; + my_bitmap_map *old_sets[2]; prune_param.part_info= part_info; init_sql_alloc(&alloc, thd->variables.range_alloc_block_size, 0); @@ -2682,8 +2682,8 @@ bool prune_partitions(THD *thd, TABLE *table, Item *pprune_cond) DBUG_RETURN(FALSE); } - old_write_set= dbug_tmp_use_all_columns(table, table->write_set); - old_read_set= dbug_tmp_use_all_columns(table, table->read_set); + dbug_tmp_use_all_columns(table, old_sets, + table->read_set, table->write_set); range_par->thd= thd; range_par->table= table; /* range_par->cond doesn't need initialization */ @@ -2773,8 +2773,7 @@ all_used: retval= FALSE; // some partitions are used mark_all_partitions_as_used(prune_param.part_info); end: - dbug_tmp_restore_column_map(table->write_set, old_write_set); - dbug_tmp_restore_column_map(table->read_set, old_read_set); + dbug_tmp_restore_column_maps(table->read_set, table->write_set, old_sets); thd->no_errors=0; thd->mem_root= range_par->old_root; free_root(&alloc,MYF(0)); // Return memory & allocator @@ -11145,9 +11144,9 @@ print_key(KEY_PART *key_part, const uchar *key, uint used_length) String tmp(buff,sizeof(buff),&my_charset_bin); uint store_length; TABLE *table= key_part->field->table; - my_bitmap_map *old_write_set, *old_read_set; - old_write_set= dbug_tmp_use_all_columns(table, table->write_set); - old_read_set= dbug_tmp_use_all_columns(table, table->read_set); + my_bitmap_map *old_sets[2]; + + dbug_tmp_use_all_columns(table, old_sets, table->read_set, table->write_set); for (; key < key_end; key+=store_length, key_part++) { @@ -11173,8 +11172,7 @@ print_key(KEY_PART *key_part, const uchar *key, uint used_length) if (key+store_length < key_end) fputc('/',DBUG_FILE); } - dbug_tmp_restore_column_map(table->write_set, old_write_set); - dbug_tmp_restore_column_map(table->read_set, old_read_set); + dbug_tmp_restore_column_maps(table->read_set, table->write_set, old_sets); } @@ -11182,18 +11180,16 @@ static void print_quick(QUICK_SELECT_I *quick, const key_map *needed_reg) { char buf[MAX_KEY/8+1]; TABLE *table; - my_bitmap_map *old_read_map, *old_write_map; + my_bitmap_map *old_sets[2]; DBUG_ENTER("print_quick"); if (!quick) DBUG_VOID_RETURN; DBUG_LOCK_FILE; table= quick->head; - old_read_map= dbug_tmp_use_all_columns(table, table->read_set); - old_write_map= dbug_tmp_use_all_columns(table, table->write_set); + dbug_tmp_use_all_columns(table, old_sets, table->read_set, table->write_set); quick->dbug_dump(0, TRUE); - dbug_tmp_restore_column_map(table->read_set, old_read_map); - dbug_tmp_restore_column_map(table->write_set, old_write_map); + dbug_tmp_restore_column_maps(table->read_set, table->write_set, old_sets); fprintf(DBUG_FILE,"other_keys: 0x%s:\n", needed_reg->print(buf)); diff --git a/sql/table.h b/sql/table.h index ccd6b60664e..a89434b23ed 100644 --- a/sql/table.h +++ b/sql/table.h @@ -1692,5 +1692,35 @@ static inline void dbug_tmp_restore_column_map(MY_BITMAP *bitmap, #endif } + +/* + Variant of the above : handle both read and write sets. + Provide for the possiblity of the read set being the same as the write set +*/ +static inline void dbug_tmp_use_all_columns(TABLE *table, + my_bitmap_map **save, + MY_BITMAP *read_set, + MY_BITMAP *write_set) +{ +#ifndef DBUG_OFF + save[0]= read_set->bitmap; + save[1]= write_set->bitmap; + (void) tmp_use_all_columns(table, read_set); + (void) tmp_use_all_columns(table, write_set); +#endif +} + + +static inline void dbug_tmp_restore_column_maps(MY_BITMAP *read_set, + MY_BITMAP *write_set, + my_bitmap_map **old) +{ +#ifndef DBUG_OFF + tmp_restore_column_map(read_set, old[0]); + tmp_restore_column_map(write_set, old[1]); +#endif +} + + size_t max_row_length(TABLE *table, const uchar *data); From 979974c53ba88f66c2c00b803159599b6856ab21 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Tue, 9 Dec 2008 20:35:02 +0200 Subject: [PATCH 22/36] backported the fix for bug #34773 to 5.0 --- mysql-test/r/explain.result | 48 +++++++++++++++++++++++++++++++++++++ mysql-test/t/explain.test | 29 ++++++++++++++++++++++ sql/item.cc | 4 ++-- sql/item_sum.cc | 37 +++++++++++++++++++++++++--- sql/item_sum.h | 25 +++++++++++++------ sql/opt_range.cc | 2 +- sql/opt_sum.cc | 6 ++--- sql/sql_select.cc | 16 ++++++------- 8 files changed, 143 insertions(+), 24 deletions(-) diff --git a/mysql-test/r/explain.result b/mysql-test/r/explain.result index a4c8432d2a4..3aa189f4a9d 100644 --- a/mysql-test/r/explain.result +++ b/mysql-test/r/explain.result @@ -107,3 +107,51 @@ X X X X X X X X X X X X X X X X X X Range checked for each record (index map: 0xFFFFFFFFFF) DROP TABLE t2; DROP TABLE t1; +CREATE TABLE t1(a INT); +CREATE TABLE t2(a INT); +INSERT INTO t1 VALUES (1),(2); +INSERT INTO t2 VALUES (1),(2); +EXPLAIN EXTENDED SELECT 1 +FROM (SELECT COUNT(DISTINCT t1.a) FROM t1,t2 GROUP BY t1.a) AS s1; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY ALL NULL NULL NULL NULL 2 +2 DERIVED t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort +2 DERIVED t2 ALL NULL NULL NULL NULL 2 +Warnings: +Note 1003 select 1 AS `1` from (select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT t1.a)` from `test`.`t1` join `test`.`t2` group by `test`.`t1`.`a`) `s1` +EXPLAIN EXTENDED SELECT 1 +FROM (SELECT COUNT(DISTINCT t1.a) FROM t1,t2 GROUP BY t1.a) AS s1; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY ALL NULL NULL NULL NULL 2 +2 DERIVED t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort +2 DERIVED t2 ALL NULL NULL NULL NULL 2 +Warnings: +Note 1003 select 1 AS `1` from (select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT t1.a)` from `test`.`t1` join `test`.`t2` group by `test`.`t1`.`a`) `s1` +prepare s1 from +'EXPLAIN EXTENDED SELECT 1 + FROM (SELECT COUNT(DISTINCT t1.a) FROM t1,t2 GROUP BY t1.a) AS s1'; +execute s1; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY ALL NULL NULL NULL NULL 2 +2 DERIVED t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort +2 DERIVED t2 ALL NULL NULL NULL NULL 2 +Warnings: +Note 1003 select 1 AS `1` from (select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT t1.a)` from `test`.`t1` join `test`.`t2` group by `test`.`t1`.`a`) `s1` +prepare s1 from +'EXPLAIN EXTENDED SELECT 1 + FROM (SELECT COUNT(DISTINCT t1.a) FROM t1,t2 GROUP BY t1.a) AS s1'; +execute s1; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY ALL NULL NULL NULL NULL 2 +2 DERIVED t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort +2 DERIVED t2 ALL NULL NULL NULL NULL 2 +Warnings: +Note 1003 select 1 AS `1` from (select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT t1.a)` from `test`.`t1` join `test`.`t2` group by `test`.`t1`.`a`) `s1` +execute s1; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY ALL NULL NULL NULL NULL 2 +2 DERIVED t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort +2 DERIVED t2 ALL NULL NULL NULL NULL 2 +Warnings: +Note 1003 select 1 AS `1` from (select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT t1.a)` from `test`.`t1` join `test`.`t2` group by `test`.`t1`.`a`) `s1` +DROP TABLE t1,t2; diff --git a/mysql-test/t/explain.test b/mysql-test/t/explain.test index c9ae8aceaf6..0247aca82df 100644 --- a/mysql-test/t/explain.test +++ b/mysql-test/t/explain.test @@ -94,4 +94,33 @@ EXPLAIN SELECT 1 FROM DROP TABLE t2; DROP TABLE t1; +# +# Bug #34773: query with explain extended and derived table / other table +# crashes server +# + +CREATE TABLE t1(a INT); +CREATE TABLE t2(a INT); +INSERT INTO t1 VALUES (1),(2); +INSERT INTO t2 VALUES (1),(2); + +EXPLAIN EXTENDED SELECT 1 + FROM (SELECT COUNT(DISTINCT t1.a) FROM t1,t2 GROUP BY t1.a) AS s1; + +EXPLAIN EXTENDED SELECT 1 + FROM (SELECT COUNT(DISTINCT t1.a) FROM t1,t2 GROUP BY t1.a) AS s1; + +prepare s1 from +'EXPLAIN EXTENDED SELECT 1 + FROM (SELECT COUNT(DISTINCT t1.a) FROM t1,t2 GROUP BY t1.a) AS s1'; +execute s1; + +prepare s1 from +'EXPLAIN EXTENDED SELECT 1 + FROM (SELECT COUNT(DISTINCT t1.a) FROM t1,t2 GROUP BY t1.a) AS s1'; +execute s1; +execute s1; + +DROP TABLE t1,t2; + # End of 5.0 tests. diff --git a/sql/item.cc b/sql/item.cc index 243c22bb7e6..2a89c86cd88 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -6795,7 +6795,7 @@ enum_field_types Item_type_holder::get_real_type(Item *item) */ Item_sum *item_sum= (Item_sum *) item; if (item_sum->keep_field_type()) - return get_real_type(item_sum->args[0]); + return get_real_type(item_sum->get_arg(0)); break; } case FUNC_ITEM: @@ -7059,7 +7059,7 @@ void Item_type_holder::get_full_info(Item *item) if (item->type() == Item::SUM_FUNC_ITEM && (((Item_sum*)item)->sum_func() == Item_sum::MAX_FUNC || ((Item_sum*)item)->sum_func() == Item_sum::MIN_FUNC)) - item = ((Item_sum*)item)->args[0]; + item = ((Item_sum*)item)->get_arg(0); /* We can have enum/set type after merging only if we have one enum|set field (or MIN|MAX(enum|set field)) and number of NULL fields diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 91320d6b56b..d33d92a5238 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -370,6 +370,10 @@ Item_sum::Item_sum(List &list) :arg_count(list.elements), args[i++]= item; } } + if (!(orig_args= (Item **) sql_alloc(sizeof(Item *) * arg_count))) + { + args= NULL; + } mark_as_sum_func(); list.empty(); // Fields are used } @@ -380,18 +384,28 @@ Item_sum::Item_sum(List &list) :arg_count(list.elements), */ Item_sum::Item_sum(THD *thd, Item_sum *item): - Item_result_field(thd, item), arg_count(item->arg_count), + Item_result_field(thd, item), aggr_sel(item->aggr_sel), nest_level(item->nest_level), aggr_level(item->aggr_level), - quick_group(item->quick_group), used_tables_cache(item->used_tables_cache), + quick_group(item->quick_group), + arg_count(item->arg_count), orig_args(NULL), + used_tables_cache(item->used_tables_cache), forced_const(item->forced_const) { if (arg_count <= 2) + { args=tmp_args; + orig_args=tmp_orig_args; + } else + { if (!(args= (Item**) thd->alloc(sizeof(Item*)*arg_count))) return; + if (!(orig_args= (Item**) thd->alloc(sizeof(Item*)*arg_count))) + return; + } memcpy(args, item->args, sizeof(Item*)*arg_count); + memcpy(orig_args, item->orig_args, sizeof(Item*)*arg_count); } @@ -426,12 +440,13 @@ void Item_sum::make_field(Send_field *tmp_field) void Item_sum::print(String *str) { + Item **pargs= orig_args; str->append(func_name()); for (uint i=0 ; i < arg_count ; i++) { if (i) str->append(','); - args[i]->print(str); + pargs[i]->print(str); } str->append(')'); } @@ -532,6 +547,13 @@ void Item_sum::update_used_tables () } +Item *Item_sum::set_arg(int i, THD *thd, Item *new_val) +{ + thd->change_item_tree(args + i, new_val); + return new_val; +} + + String * Item_sum_num::val_str(String *str) { @@ -583,6 +605,7 @@ Item_sum_num::fix_fields(THD *thd, Item **ref) if (check_sum_func(thd, ref)) return TRUE; + memcpy (orig_args, args, sizeof (Item *) * arg_count); fixed= 1; return FALSE; } @@ -670,6 +693,7 @@ Item_sum_hybrid::fix_fields(THD *thd, Item **ref) if (check_sum_func(thd, ref)) return TRUE; + orig_args[0]= args[0]; fixed= 1; return FALSE; } @@ -3107,6 +3131,12 @@ Item_func_group_concat(Name_resolution_context *context_arg, sizeof(ORDER*)*arg_count_order))) return; + if (!(orig_args= (Item **) sql_alloc(sizeof(Item *) * arg_count))) + { + args= NULL; + return; + } + order= (ORDER**)(args + arg_count); /* fill args items of show and sort */ @@ -3334,6 +3364,7 @@ Item_func_group_concat::fix_fields(THD *thd, Item **ref) if (check_sum_func(thd, ref)) return TRUE; + memcpy (orig_args, args, sizeof (Item *) * arg_count); fixed= 1; return FALSE; } diff --git a/sql/item_sum.h b/sql/item_sum.h index d39fc96e254..51a1eff9bbf 100644 --- a/sql/item_sum.h +++ b/sql/item_sum.h @@ -228,10 +228,8 @@ public: VARIANCE_FUNC, SUM_BIT_FUNC, UDF_SUM_FUNC, GROUP_CONCAT_FUNC }; - Item **args, *tmp_args[2]; Item **ref_by; /* pointer to a ref to the object used to register it */ Item_sum *next; /* next in the circular chain of registered objects */ - uint arg_count; Item_sum *in_sum_func; /* embedding set function if any */ st_select_lex * aggr_sel; /* select where the function is aggregated */ int8 nest_level; /* number of the nesting level of the set function */ @@ -248,24 +246,32 @@ public: List outer_fields; protected: + uint arg_count; + Item **args, *tmp_args[2]; + /* + Copy of the arguments list to hold the original set of arguments. + Used in EXPLAIN EXTENDED instead of the current argument list because + the current argument list can be altered by usage of temporary tables. + */ + Item **orig_args, *tmp_orig_args[2]; table_map used_tables_cache; bool forced_const; public: void mark_as_sum_func(); - Item_sum() :arg_count(0), quick_group(1), forced_const(FALSE) + Item_sum() :quick_group(1), arg_count(0), forced_const(FALSE) { mark_as_sum_func(); } - Item_sum(Item *a) :args(tmp_args), arg_count(1), quick_group(1), - forced_const(FALSE) + Item_sum(Item *a) :quick_group(1), arg_count(1), args(tmp_args), + orig_args(tmp_orig_args), forced_const(FALSE) { args[0]=a; mark_as_sum_func(); } - Item_sum( Item *a, Item *b ) :args(tmp_args), arg_count(2), quick_group(1), - forced_const(FALSE) + Item_sum( Item *a, Item *b ) :quick_group(1), arg_count(2), args(tmp_args), + orig_args(tmp_orig_args), forced_const(FALSE) { args[0]=a; args[1]=b; mark_as_sum_func(); @@ -374,6 +380,10 @@ public: bool register_sum_func(THD *thd, Item **ref); st_select_lex *depended_from() { return (nest_level == aggr_level ? 0 : aggr_sel); } + + Item *get_arg(int i) { return args[i]; } + Item *set_arg(int i, THD *thd, Item *new_val); + uint get_arg_count() { return arg_count; } }; @@ -981,6 +991,7 @@ public: if (udf.fix_fields(thd, this, this->arg_count, this->args)) return TRUE; + memcpy (orig_args, args, sizeof (Item *) * arg_count); return check_sum_func(thd, ref); } enum Sumfunctype sum_func () const { return UDF_SUM_FUNC; } diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 204ebdb6f33..7d9b1179d87 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -7735,7 +7735,7 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree) DBUG_RETURN(NULL); /* The argument of MIN/MAX. */ - Item *expr= min_max_item->args[0]->real_item(); + Item *expr= min_max_item->get_arg(0)->real_item(); if (expr->type() == Item::FIELD_ITEM) /* Is it an attribute? */ { if (! min_max_arg_item) diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc index 3fc62d05ae5..39db1344588 100644 --- a/sql/opt_sum.cc +++ b/sql/opt_sum.cc @@ -160,7 +160,7 @@ int opt_sum_query(TABLE_LIST *tables, List &all_fields,COND *conds) to the number of rows in the tables if this number is exact and there are no outer joins. */ - if (!conds && !((Item_sum_count*) item)->args[0]->maybe_null && + if (!conds && !((Item_sum_count*) item)->get_arg(0)->maybe_null && !outer_tables && is_exact_count) { ((Item_sum_count*) item)->make_const(count); @@ -176,7 +176,7 @@ int opt_sum_query(TABLE_LIST *tables, List &all_fields,COND *conds) parts of the key is found in the COND, then we can use indexes to find the key. */ - Item *expr=item_sum->args[0]; + Item *expr=item_sum->get_arg(0); if (expr->real_item()->type() == Item::FIELD_ITEM) { byte key_buff[MAX_KEY_LENGTH]; @@ -319,7 +319,7 @@ int opt_sum_query(TABLE_LIST *tables, List &all_fields,COND *conds) parts of the key is found in the COND, then we can use indexes to find the key. */ - Item *expr=item_sum->args[0]; + Item *expr=item_sum->get_arg(0); if (expr->real_item()->type() == Item::FIELD_ITEM) { byte key_buff[MAX_KEY_LENGTH]; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index b080fff8725..48276170caf 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -9444,11 +9444,11 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List &fields, } if (type == Item::SUM_FUNC_ITEM && !group && !save_sum_fields) { /* Can't calc group yet */ - ((Item_sum*) item)->result_field=0; - for (i=0 ; i < ((Item_sum*) item)->arg_count ; i++) + Item_sum *sum_item= (Item_sum *) item; + sum_item->result_field=0; + for (i=0 ; i < sum_item->get_arg_count() ; i++) { - Item **argp= ((Item_sum*) item)->args + i; - Item *arg= *argp; + Item *arg= sum_item->get_arg(i); if (!arg->const_item()) { uint field_index= (uint) (reg_field - table->field); @@ -9478,7 +9478,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List &fields, string_total_length+= new_field->pack_length(); } thd->mem_root= mem_root_save; - thd->change_item_tree(argp, new Item_field(new_field)); + arg= sum_item->set_arg(i, thd, new Item_field(new_field)); thd->mem_root= &table->mem_root; if (!(new_field->flags & NOT_NULL_FLAG)) { @@ -9487,7 +9487,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List &fields, new_field->maybe_null() is still false, it will be changed below. But we have to setup Item_field correctly */ - (*argp)->maybe_null=1; + arg->maybe_null=1; } new_field->query_id= thd->query_id; } @@ -13922,9 +13922,9 @@ count_field_types(SELECT_LEX *select_lex, TMP_TABLE_PARAM *param, param->quick_group=0; // UDF SUM function param->sum_func_count++; - for (uint i=0 ; i < sum_item->arg_count ; i++) + for (uint i=0 ; i < sum_item->get_arg_count() ; i++) { - if (sum_item->args[0]->real_item()->type() == Item::FIELD_ITEM) + if (sum_item->get_arg(i)->real_item()->type() == Item::FIELD_ITEM) param->field_count++; else param->func_count++; From 8d4b41605b0bbc731dafc7bd8a9f850eaf06f552 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Wed, 10 Dec 2008 13:05:57 +0400 Subject: [PATCH 23/36] Bug#38227 EXTRACTVALUE doesn't work with DTD declarations Problem: XML syntax parser allowed to use quoted strings as attribute names, and tried to put them into parser state stack instead of identifiers. After that parser failed, if quoted string contained some slash characters. Fix: - Disallowing quoted strings in regular tags. - Allowing quoted string in DOCTYPE declararion, but don't push it into parse state stack (just skip it). --- mysql-test/r/xml.result | 24 ++++++++++++++++++++++++ mysql-test/t/xml.test | 25 +++++++++++++++++++++++++ strings/xml.c | 13 +++++++++++-- 3 files changed, 60 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/xml.result b/mysql-test/r/xml.result index 56c884343e3..41c0d6bee21 100644 --- a/mysql-test/r/xml.result +++ b/mysql-test/r/xml.result @@ -1029,4 +1029,28 @@ SELECT 1 FROM t1 ORDER BY(UPDATEXML(a, '1', '1')); 1 1 DROP TABLE t1; +SET @xml= +' + + + Title - document with document declaration + + Hi, Im a webpage with document a declaration +'; +SELECT ExtractValue(@xml, 'html/head/title'); +ExtractValue(@xml, 'html/head/title') + Title - document with document declaration +SELECT ExtractValue(@xml, 'html/body'); +ExtractValue(@xml, 'html/body') + Hi, Im a webpage with document a declaration +SELECT ExtractValue('CharData', '/xml'); +ExtractValue('CharData', '/xml') +NULL +Warnings: +Warning 1525 Incorrect XML value: 'parse error at line 1 pos 11: STRING unexpected ('>' wanted)' +SELECT ExtractValue('CharData', '/xml'); +ExtractValue('CharData', '/xml') +NULL +Warnings: +Warning 1525 Incorrect XML value: 'parse error at line 1 pos 17: STRING unexpected ('>' wanted)' End of 5.1 tests diff --git a/mysql-test/t/xml.test b/mysql-test/t/xml.test index 5ca9c7afd76..d840e14ba5f 100644 --- a/mysql-test/t/xml.test +++ b/mysql-test/t/xml.test @@ -551,4 +551,29 @@ INSERT INTO t1 VALUES (0), (0); SELECT 1 FROM t1 ORDER BY(UPDATEXML(a, '1', '1')); DROP TABLE t1; +# +# BUG#38227 EXTRACTVALUE doesn't work with DTD declarations +# +# Check that quoted strings work fine in DOCTYPE declaration. +# + +SET @xml= +' + + + Title - document with document declaration + + Hi, Im a webpage with document a declaration +'; + +SELECT ExtractValue(@xml, 'html/head/title'); +SELECT ExtractValue(@xml, 'html/body'); + +# These two documents will fail. +# Quoted strings are not allowed in regular tags +# +SELECT ExtractValue('CharData', '/xml'); +SELECT ExtractValue('CharData', '/xml'); + + --echo End of 5.1 tests diff --git a/strings/xml.c b/strings/xml.c index 5c62a8e8603..1b697ec6b26 100644 --- a/strings/xml.c +++ b/strings/xml.c @@ -328,7 +328,7 @@ int my_xml_parse(MY_XML_PARSER *p,const char *str, size_t len) } while ((MY_XML_IDENT == (lex=my_xml_scan(p,&a))) || - (MY_XML_STRING == lex)) + ((MY_XML_STRING == lex && exclam))) { MY_XML_ATTR b; if (MY_XML_EQ == (lex=my_xml_scan(p,&b))) @@ -349,13 +349,22 @@ int my_xml_parse(MY_XML_PARSER *p,const char *str, size_t len) return MY_XML_ERROR; } } - else if ((MY_XML_STRING == lex) || (MY_XML_IDENT == lex)) + else if (MY_XML_IDENT == lex) { p->current_node_type= MY_XML_NODE_ATTR; if ((MY_XML_OK != my_xml_enter(p,a.beg,(size_t) (a.end-a.beg))) || (MY_XML_OK != my_xml_leave(p,a.beg,(size_t) (a.end-a.beg)))) return MY_XML_ERROR; } + else if ((MY_XML_STRING == lex) && exclam) + { + /* + We are in , e.g. + + + Just skip "SystemLiteral" and "PublicidLiteral" + */ + } else break; } From 3f2f3d84de0700a2651b1a7ff33b45016b97ff0e Mon Sep 17 00:00:00 2001 From: Alexey Kopytov Date: Wed, 10 Dec 2008 16:07:32 +0300 Subject: [PATCH 24/36] Fix for a test failure on Solaris/x86/gcc introduced by the patch for bug #27483. Removed values with more than 15 significant digits from the test case. Results of reading/printing such values using system library functions depend on implementation and thus are not portable. mysql-test/r/type_float.result: Removed values with more than 15 significant digits from the test case. mysql-test/t/type_float.test: Removed values with more than 15 significant digits from the test case. --- mysql-test/r/type_float.result | 6 +----- mysql-test/t/type_float.test | 4 +--- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/mysql-test/r/type_float.result b/mysql-test/r/type_float.result index d86c515062a..8caabbff047 100644 --- a/mysql-test/r/type_float.result +++ b/mysql-test/r/type_float.result @@ -393,15 +393,11 @@ f1 + 0e0 -1.0000000150475e+30 drop table t1; create table t1(d double, u bigint unsigned); -insert into t1(d) values (9.2233720368547777e+18), -(9.223372036854779e18), -(9.22337203685479e18), +insert into t1(d) values (9.22337203685479e18), (1.84e19); update t1 set u = d; select u from t1; u -9223372036854775808 -9223372036854779904 9223372036854790144 18400000000000000000 drop table t1; diff --git a/mysql-test/t/type_float.test b/mysql-test/t/type_float.test index 3ceef129912..53bcf44061d 100644 --- a/mysql-test/t/type_float.test +++ b/mysql-test/t/type_float.test @@ -259,9 +259,7 @@ drop table t1; create table t1(d double, u bigint unsigned); -insert into t1(d) values (9.2233720368547777e+18), - (9.223372036854779e18), - (9.22337203685479e18), +insert into t1(d) values (9.22337203685479e18), (1.84e19); update t1 set u = d; From 84de3b930bcae8af7a7b5613dd8be514afbb8661 Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Wed, 10 Dec 2008 18:13:11 +0400 Subject: [PATCH 25/36] Bug#37956 memory leak and / or crash with geometry and prepared statements! Bug#37671 crash on prepared statement + cursor + geometry + too many open files! if mysql_execute_command() returns error then free materialized_cursor object. is_rnd_inited is added to satisfy rnd_end() assertion (handler may be uninitialized in some cases) sql/sql_cursor.cc: if mysql_execute_command() returns error then free materialized_cursor object. is_rnd_inited is added to satisfy rnd_end() assertion (handler may be uninitialized in some cases) sql/sql_select.cc: added result check tests/mysql_client_test.c: test case --- sql/sql_cursor.cc | 18 +++++++++---- sql/sql_select.cc | 7 +++-- tests/mysql_client_test.c | 54 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 7 deletions(-) diff --git a/sql/sql_cursor.cc b/sql/sql_cursor.cc index 16567765ba6..83c60814cf3 100644 --- a/sql/sql_cursor.cc +++ b/sql/sql_cursor.cc @@ -85,6 +85,7 @@ class Materialized_cursor: public Server_side_cursor List item_list; ulong fetch_limit; ulong fetch_count; + bool is_rnd_inited; public: Materialized_cursor(select_result *result, TABLE *table); @@ -191,7 +192,11 @@ int mysql_open_cursor(THD *thd, uint flags, select_result *result, such command is SHOW VARIABLES or SHOW STATUS. */ if (rc) + { + if (result_materialize->materialized_cursor) + delete result_materialize->materialized_cursor; goto err_open; + } if (sensitive_cursor->is_open()) { @@ -532,7 +537,8 @@ Materialized_cursor::Materialized_cursor(select_result *result_arg, :Server_side_cursor(&table_arg->mem_root, result_arg), table(table_arg), fetch_limit(0), - fetch_count(0) + fetch_count(0), + is_rnd_inited(0) { fake_unit.init_query(); fake_unit.thd= table->in_use; @@ -589,11 +595,12 @@ int Materialized_cursor::open(JOIN *join __attribute__((unused))) THD *thd= fake_unit.thd; int rc; Query_arena backup_arena; - thd->set_n_backup_active_arena(this, &backup_arena); /* Create a list of fields and start sequential scan */ - rc= (result->prepare(item_list, &fake_unit) || - table->file->ha_rnd_init(TRUE)); + rc= result->prepare(item_list, &fake_unit); + if (!rc && !(rc= table->file->ha_rnd_init(TRUE))) + is_rnd_inited= 1; + thd->restore_active_arena(this, &backup_arena); if (rc == 0) { @@ -673,7 +680,8 @@ void Materialized_cursor::close() { /* Free item_list items */ free_items(); - (void) table->file->ha_rnd_end(); + if (is_rnd_inited) + (void) table->file->ha_rnd_end(); /* We need to grab table->mem_root to prevent free_tmp_table from freeing: the cursor object was allocated in this memory. diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 48276170caf..d2c469f99da 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -1599,8 +1599,11 @@ JOIN::exec() (zero_result_cause?zero_result_cause:"No tables used")); else { - result->send_fields(*columns_list, - Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF); + if (result->send_fields(*columns_list, + Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF)) + { + DBUG_VOID_RETURN; + } /* We have to test for 'conds' here as the WHERE may not be constant even if we don't have any tables for prepared statements or if diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index ee3a053f8bd..ea4d363bdac 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -15899,6 +15899,59 @@ static void test_bug28934() } +/** + Bug#37956 memory leak and / or crash with geometry and prepared statements! +*/ + +static void test_bug37956(void) +{ + const char *query="select point(?,?)"; + MYSQL_STMT *stmt=NULL; + unsigned int val=0; + MYSQL_BIND bind_param[2]; + unsigned char buff[2]= { 134, 211 }; + DBUG_ENTER("test_bug37956"); + myheader("test_bug37956"); + + stmt= mysql_simple_prepare(mysql, query); + check_stmt(stmt); + + val=1; + mysql_stmt_attr_set(stmt, STMT_ATTR_UPDATE_MAX_LENGTH, (void *)&val); + val=CURSOR_TYPE_READ_ONLY; + mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (void *)&val); + val=0; + mysql_stmt_attr_set(stmt, STMT_ATTR_PREFETCH_ROWS, (void *)&val); + + memset(bind_param, 0, sizeof(bind_param)); + bind_param[0].buffer_type=MYSQL_TYPE_TINY; + bind_param[0].buffer= (void *)buff; + bind_param[0].is_null=NULL; + bind_param[0].error=NULL; + bind_param[0].is_unsigned=1; + bind_param[1].buffer_type=MYSQL_TYPE_TINY; + bind_param[1].buffer= (void *)(buff+1); + bind_param[1].is_null=NULL; + bind_param[1].error=NULL; + bind_param[1].is_unsigned=1; + + if (mysql_stmt_bind_param(stmt, bind_param)) + { + mysql_stmt_close(stmt); + DIE_UNLESS(0); + } + + if (mysql_stmt_execute(stmt)) + { + mysql_stmt_close(stmt); + DBUG_VOID_RETURN; + } + /* Should never reach here: execution returns an error. */ + mysql_stmt_close(stmt); + DIE_UNLESS(0); + DBUG_VOID_RETURN; +} + /* Bug#27592 (stack overrun when storing datetime value using prepared statements) */ @@ -16595,6 +16648,7 @@ static struct my_tests_st my_tests[]= { { "test_bug32265", test_bug32265 }, { "test_bug38486", test_bug38486 }, { "test_bug40365", test_bug40365 }, + { "test_bug37956", test_bug37956 }, { 0, 0 } }; From 52fffecb5b6a6794c56cb75289b9c2b5f97d8bf1 Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Wed, 10 Dec 2008 18:38:27 +0400 Subject: [PATCH 26/36] Bug#35275 INFORMATION_SCHEMA.TABLES.CREATE_OPTIONS omits KEY_BLOCK_SIZE Added KEY_BLOCK_SIZE option to I_S.TABLES.CREATE_OPTIONS field mysql-test/r/information_schema.result: test result mysql-test/t/information_schema.test: test case sql/sql_show.cc: Added KEY_BLOCK_SIZE option to I_S.TABLES.CREATE_OPTIONS field --- mysql-test/r/information_schema.result | 5 +++++ mysql-test/t/information_schema.test | 7 +++++++ sql/sql_show.cc | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index 85af461eb14..4fd0bdde063 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -1707,4 +1707,9 @@ where a.VARIABLE_NAME = b.VARIABLE_NAME; a.VARIABLE_VALUE - b.VARIABLE_VALUE 2 drop table t0; +CREATE TABLE t1(a INT) KEY_BLOCK_SIZE=1; +SELECT CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='t1'; +CREATE_OPTIONS +KEY_BLOCK_SIZE=1 +DROP TABLE t1; End of 5.1 tests. diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index bcb22c44076..3dbdf76c220 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -1383,4 +1383,11 @@ select a.VARIABLE_VALUE - b.VARIABLE_VALUE from t0 b, information_schema.global_ where a.VARIABLE_NAME = b.VARIABLE_NAME; drop table t0; +# +# Bug#35275 INFORMATION_SCHEMA.TABLES.CREATE_OPTIONS omits KEY_BLOCK_SIZE +# +CREATE TABLE t1(a INT) KEY_BLOCK_SIZE=1; +SELECT CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='t1'; +DROP TABLE t1; + --echo End of 5.1 tests. diff --git a/sql/sql_show.cc b/sql/sql_show.cc index a506429fb97..3fd06aba672 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -3589,6 +3589,11 @@ static int get_schema_tables_record(THD *thd, TABLE_LIST *tables, (share->transactional == HA_CHOICE_YES ? "1" : "0"), NullS); } + if (share->key_block_size) + { + ptr= strmov(ptr, " KEY_BLOCK_SIZE="); + ptr= longlong10_to_str(share->key_block_size, ptr, 10); + } #ifdef WITH_PARTITION_STORAGE_ENGINE if (is_partitioned) ptr= strmov(ptr, " partitioned"); From 207d519a080e6df0d2ec57a1abc784f2043f366c Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Wed, 10 Dec 2008 19:29:22 +0100 Subject: [PATCH 27/36] post push fix for test case for bug#39084. mysql-test/t/partition_innodb_stmt.test: post push fix for test case for bug#39084. (must have partitioning...) --- mysql-test/t/partition_innodb_stmt.test | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/t/partition_innodb_stmt.test b/mysql-test/t/partition_innodb_stmt.test index 2ed5baee0ac..d6181ce068e 100644 --- a/mysql-test/t/partition_innodb_stmt.test +++ b/mysql-test/t/partition_innodb_stmt.test @@ -1,3 +1,4 @@ +--source include/have_partition.inc --source include/have_binlog_format_statement.inc --source include/have_innodb.inc From 7f5d980af70c2d7c8ba88a3ef8bef45fca4e635b Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Thu, 11 Dec 2008 12:57:59 +0400 Subject: [PATCH 28/36] disable bug37956 test if geometry package is not enabled --- tests/mysql_client_test.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index ea4d363bdac..79d188c252c 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -15899,6 +15899,7 @@ static void test_bug28934() } +#ifdef HAVE_SPATIAL /** Bug#37956 memory leak and / or crash with geometry and prepared statements! */ @@ -15951,6 +15952,7 @@ static void test_bug37956(void) DIE_UNLESS(0); DBUG_VOID_RETURN; } +#endif /* Bug#27592 (stack overrun when storing datetime value using prepared statements) @@ -16648,7 +16650,9 @@ static struct my_tests_st my_tests[]= { { "test_bug32265", test_bug32265 }, { "test_bug38486", test_bug38486 }, { "test_bug40365", test_bug40365 }, +#ifdef HAVE_SPATIAL { "test_bug37956", test_bug37956 }, +#endif { 0, 0 } }; From d2cd545b53397f36572001def335cf75c86570cf Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Thu, 11 Dec 2008 14:37:18 +0400 Subject: [PATCH 29/36] fix for pushbuild failure on 64 linux --- tests/mysql_client_test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 79d188c252c..50f03a1a086 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -15908,7 +15908,7 @@ static void test_bug37956(void) { const char *query="select point(?,?)"; MYSQL_STMT *stmt=NULL; - unsigned int val=0; + ulong val=0; MYSQL_BIND bind_param[2]; unsigned char buff[2]= { 134, 211 }; DBUG_ENTER("test_bug37956"); From ac27e637badd31ee2dca9a7852fbb5ec0a5c11d0 Mon Sep 17 00:00:00 2001 From: Luis Soares Date: Thu, 11 Dec 2008 11:06:50 +0000 Subject: [PATCH 30/36] Fix PB warnings for parenthesis and valgrind leak report. BUG#38826 --- sql/log.cc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/sql/log.cc b/sql/log.cc index 477cb21b2f3..c411f7c8238 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1146,7 +1146,7 @@ int MYSQL_LOG::purge_first_log(struct st_relay_log_info* rli, bool included) * Need to update the log pos because purge logs has been called * after fetching initially the log pos at the begining of the method. */ - if(error=find_log_pos(&rli->linfo, rli->event_relay_log_name, 0)) + if((error=find_log_pos(&rli->linfo, rli->event_relay_log_name, 0))) { char buff[22]; sql_print_error("next log error: %d offset: %s log: %s included: %d", @@ -1234,8 +1234,8 @@ int MYSQL_LOG::purge_logs(const char *to_log, */ if (!my_b_inited(&purge_temp)) { - if (error=open_cached_file(&purge_temp, mysql_tmpdir, TEMP_PREFIX, - DISK_BUFFER_SIZE, MYF(MY_WME))) + if ((error=open_cached_file(&purge_temp, mysql_tmpdir, TEMP_PREFIX, + DISK_BUFFER_SIZE, MYF(MY_WME)))) { sql_print_error("MYSQL_LOG::purge_logs failed to open purge_temp"); goto err; @@ -1243,7 +1243,7 @@ int MYSQL_LOG::purge_logs(const char *to_log, } else { - if (error=reinit_io_cache(&purge_temp, WRITE_CACHE, 0, 0, 1)) + if ((error=reinit_io_cache(&purge_temp, WRITE_CACHE, 0, 0, 1))) { sql_print_error("MYSQL_LOG::purge_logs failed to reinit purge_temp " "for write"); @@ -1274,7 +1274,7 @@ int MYSQL_LOG::purge_logs(const char *to_log, } /* We know how many files to delete. Update index file. */ - if (error=update_log_index(&log_info, need_update_threads)) + if ((error=update_log_index(&log_info, need_update_threads))) { sql_print_error("MSYQL_LOG::purge_logs failed to update the index file"); goto err; @@ -1283,7 +1283,7 @@ int MYSQL_LOG::purge_logs(const char *to_log, DBUG_EXECUTE_IF("crash_after_update_index", abort();); /* Switch purge_temp for read. */ - if (error=reinit_io_cache(&purge_temp, READ_CACHE, 0, 0, 0)) + if ((error=reinit_io_cache(&purge_temp, READ_CACHE, 0, 0, 0))) { sql_print_error("MSYQL_LOG::purge_logs failed to reinit purge_temp " "for read"); @@ -1409,6 +1409,7 @@ int MYSQL_LOG::purge_logs(const char *to_log, } err: + close_cached_file(&purge_temp); if (need_mutex) pthread_mutex_unlock(&LOCK_index); DBUG_RETURN(error); From d84690c92d165e0335da16a7e95b10ac5684420e Mon Sep 17 00:00:00 2001 From: Chad MILLER Date: Thu, 11 Dec 2008 12:26:03 -0500 Subject: [PATCH 31/36] Bug#33812: mysql client incorrectly parsing DELIMITER Fix parsing of mysql client commands, especially in relation to single-line comments when --comments was specified. This is a little tricky, because we need to allow single-line comments in the middle of statements, but we don't want to allow client commands in the middle of statements. So in comment-preservation mode, we go ahead and send single-line comments to the server immediately when we encounter them on their own. This is still slightly flawed, in that it does not handle a single-line comment with leading spaces, followed by a client-side command when --comment has been enabled. But this isn't a new problem, and it is quite an edge condition. Fixing it would require a more extensive overall of how the mysql client parses commands. --- client/mysql.cc | 49 ++++++++++++++------------------------- mysql-test/r/mysql.result | 6 +++++ mysql-test/t/mysql.test | 19 +++++++++++++++ 3 files changed, 42 insertions(+), 32 deletions(-) diff --git a/client/mysql.cc b/client/mysql.cc index 9b14f9fb3ef..20f87d5cdcd 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -1998,7 +1998,7 @@ static bool add_line(String &buffer,char *line,char *in_string, { if (!preserve_comments) { - // Skip spaces at the beggining of a statement + // Skip spaces at the beginning of a statement if (my_isspace(charset_info,inchar) && (out == line) && buffer.is_empty()) continue; @@ -2081,37 +2081,6 @@ static bool add_line(String &buffer,char *line,char *in_string, continue; } } - else if (!*ml_comment && !*in_string && - (end_of_line - pos) >= 10 && - !my_strnncoll(charset_info, (uchar*) pos, 10, - (const uchar*) "delimiter ", 10)) - { - // Flush previously accepted characters - if (out != line) - { - buffer.append(line, (uint32) (out - line)); - out= line; - } - - // Flush possible comments in the buffer - if (!buffer.is_empty()) - { - if (com_go(&buffer, 0) > 0) // < 0 is not fatal - DBUG_RETURN(1); - buffer.length(0); - } - - /* - Delimiter wants the get rest of the given line as argument to - allow one to change ';' to ';;' and back - */ - buffer.append(pos); - if (com_delimiter(&buffer, pos) > 0) - DBUG_RETURN(1); - - buffer.length(0); - break; - } else if (!*ml_comment && !*in_string && is_prefix(pos, delimiter)) { // Found a statement. Continue parsing after the delimiter @@ -2174,8 +2143,24 @@ static bool add_line(String &buffer,char *line,char *in_string, // comment to end of line if (preserve_comments) + { + bool started_with_nothing= !buffer.length(); + buffer.append(pos); + /* + A single-line comment by itself gets sent immediately so that + client commands (delimiter, status, etc) will be interpreted on + the next line. + */ + if (started_with_nothing) + { + if (com_go(&buffer, 0) > 0) // < 0 is not fatal + DBUG_RETURN(1); + buffer.length(0); + } + } + break; } else if (!*in_string && inchar == '/' && *(pos+1) == '*' && diff --git a/mysql-test/r/mysql.result b/mysql-test/r/mysql.result index eded1a3fc3b..95bdcab6ba1 100644 --- a/mysql-test/r/mysql.result +++ b/mysql-test/r/mysql.result @@ -180,4 +180,10 @@ ERROR at line 1: DELIMITER cannot contain a backslash character 1 This is a file starting with UTF8 BOM 0xEFBBBF This is a file starting with UTF8 BOM 0xEFBBBF +delimiter +1 +2 +2 +2 +2 End of 5.0 tests diff --git a/mysql-test/t/mysql.test b/mysql-test/t/mysql.test index 182b292c817..76941af893a 100644 --- a/mysql-test/t/mysql.test +++ b/mysql-test/t/mysql.test @@ -290,4 +290,23 @@ EOF --exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug29323.sql 2>&1 remove_file $MYSQLTEST_VARDIR/tmp/bug29323.sql; +# +# Bug #33812: mysql client incorrectly parsing DELIMITER +# +# The space and ; after delimiter are important +--exec $MYSQL -e "select 1 delimiter ;" + +# +# Bug #38158: mysql client regression, can't read dump files +# +--write_file $MYSQLTEST_VARDIR/tmp/bug38158.sql +-- Testing +-- +delimiter || +select 2 || +EOF +--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug38158.sql 2>&1 +--exec $MYSQL -c < $MYSQLTEST_VARDIR/tmp/bug38158.sql 2>&1 +remove_file $MYSQLTEST_VARDIR/tmp/bug38158.sql; + --echo End of 5.0 tests From ffe23f0eb736609915d3c201c3f2556819698dc1 Mon Sep 17 00:00:00 2001 From: Gleb Shchepa Date: Fri, 12 Dec 2008 00:57:32 +0400 Subject: [PATCH 32/36] Bug #40761: Assert on sum function on IF(..., CAST(longtext AS UNSIGNED), signed_val) (was: LEFT JOIN on inline view crashes server) Select from a LONGTEXT column wrapped with an expression like "IF(..., CAST(longtext_column AS UNSIGNED), smth_signed)" failed an assertion or crashed the server. IFNULL function was affected too. LONGTEXT column item has a maximum length of 32^2-1 bytes, at the same time this is a maximum possible length of any MySQL item. CAST(longtext_column AS UNSIGNED) returns some unsigned numeric result of length 32^2-1, so the result of IF/IFNULL function of this number and some other signed number will have text length of (32^2-1)+1=32^2 (one byte for the minus sign) - there is integer overflow, and the length is equal to zero. That caused assert/crash. The bug has been fixed by the same solution as in the CASE function implementation. mysql-test/r/func_if.result: Added test case for bug #40761. mysql-test/t/func_if.test: Added test case for bug #40761. sql/item_cmpfunc.cc: Bug #40761: Assert on sum function on IF(..., CAST(longtext AS UNSIGNED), signed_val) 1. Item_func_case::agg_str_lengths method has been moved to the Item_func superclass. 2. Item_func_ifnull/Item_func_if::fix_length_and_dec methods have been updated to calculate max_length, decimals and unsigned flag like Item_func_case. sql/item_cmpfunc.h: Bug #40761: Assert on sum function on IF(..., CAST(longtext AS UNSIGNED), signed_val) Item_func_case::agg_str_lengths method has been moved to the Item_func superclass. sql/item_func.cc: Bug #40761: Assert on sum function on IF(..., CAST(longtext AS UNSIGNED), signed_val) Item_func_case::agg_str_lengths method has been moved to the Item_func superclass. sql/item_func.h: Bug #40761: Assert on sum function on IF(..., CAST(longtext AS UNSIGNED), signed_val) Item_func_case::agg_str_lengths method has been moved to the Item_func superclass. --- mysql-test/r/func_if.result | 9 +++++++ mysql-test/t/func_if.test | 13 ++++++++++ sql/item_cmpfunc.cc | 50 ++++++++++++++++--------------------- sql/item_cmpfunc.h | 1 - sql/item_func.cc | 10 ++++++++ sql/item_func.h | 2 ++ 6 files changed, 56 insertions(+), 29 deletions(-) diff --git a/mysql-test/r/func_if.result b/mysql-test/r/func_if.result index 7ffc957e285..16d6b435dc7 100644 --- a/mysql-test/r/func_if.result +++ b/mysql-test/r/func_if.result @@ -176,4 +176,13 @@ IF((ROUND(t1.a,2)=1), 2, IF((ROUND(t1.a,2)=1), 2, IF((R DROP TABLE t1; +CREATE TABLE t1 (c LONGTEXT); +INSERT INTO t1 VALUES(1), (2), (3), (4), ('12345678901234567890'); +SELECT * FROM (SELECT MAX(IF(1, CAST(c AS UNSIGNED), 0)) FROM t1) AS te; +MAX(IF(1, CAST(c AS UNSIGNED), 0)) +12345678901234567890 +SELECT * FROM (SELECT MAX(IFNULL(CAST(c AS UNSIGNED), 0)) FROM t1) AS te; +MAX(IFNULL(CAST(c AS UNSIGNED), 0)) +12345678901234567890 +DROP TABLE t1; End of 5.0 tests diff --git a/mysql-test/t/func_if.test b/mysql-test/t/func_if.test index 8da10f36cbe..68728d6697e 100644 --- a/mysql-test/t/func_if.test +++ b/mysql-test/t/func_if.test @@ -150,4 +150,17 @@ FROM t1; DROP TABLE t1; +# +# Bug #40761: Assert on sum func on IF(..., CAST(longtext AS UNSIGNED), signed) +# (was: LEFT JOIN on inline view crashes server) +# + +CREATE TABLE t1 (c LONGTEXT); +INSERT INTO t1 VALUES(1), (2), (3), (4), ('12345678901234567890'); + +SELECT * FROM (SELECT MAX(IF(1, CAST(c AS UNSIGNED), 0)) FROM t1) AS te; +SELECT * FROM (SELECT MAX(IFNULL(CAST(c AS UNSIGNED), 0)) FROM t1) AS te; + +DROP TABLE t1; + --echo End of 5.0 tests diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 3b1d18b4252..759e912cc82 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -2069,21 +2069,23 @@ Item_func_ifnull::fix_length_and_dec() { agg_result_type(&hybrid_type, args, 2); maybe_null=args[1]->maybe_null; - decimals= max(args[0]->decimals, args[1]->decimals); - unsigned_flag= args[0]->unsigned_flag && args[1]->unsigned_flag; if (hybrid_type == DECIMAL_RESULT || hybrid_type == INT_RESULT) { - int len0= args[0]->max_length - args[0]->decimals - - (args[0]->unsigned_flag ? 0 : 1); - - int len1= args[1]->max_length - args[1]->decimals - - (args[1]->unsigned_flag ? 0 : 1); - - max_length= max(len0, len1) + decimals + (unsigned_flag ? 0 : 1); + max_length= 0; + decimals= 0; + unsigned_flag= TRUE; + agg_num_lengths(args[0]); + agg_num_lengths(args[1]); + max_length= my_decimal_precision_to_length(max_length + decimals, decimals, + unsigned_flag); } else + { max_length= max(args[0]->max_length, args[1]->max_length); + decimals= max(args[0]->decimals, args[1]->decimals); + unsigned_flag=args[0]->unsigned_flag && args[1]->unsigned_flag; + } switch (hybrid_type) { case STRING_RESULT: @@ -2238,8 +2240,6 @@ void Item_func_if::fix_length_and_dec() { maybe_null=args[1]->maybe_null || args[2]->maybe_null; - decimals= max(args[1]->decimals, args[2]->decimals); - unsigned_flag=args[1]->unsigned_flag && args[2]->unsigned_flag; enum Item_result arg1_type=args[1]->result_type(); enum Item_result arg2_type=args[2]->result_type(); @@ -2276,16 +2276,20 @@ Item_func_if::fix_length_and_dec() if ((cached_result_type == DECIMAL_RESULT ) || (cached_result_type == INT_RESULT)) { - int len1= args[1]->max_length - args[1]->decimals - - (args[1]->unsigned_flag ? 0 : 1); - - int len2= args[2]->max_length - args[2]->decimals - - (args[2]->unsigned_flag ? 0 : 1); - - max_length=max(len1, len2) + decimals + (unsigned_flag ? 0 : 1); + max_length= 0; + decimals= 0; + unsigned_flag= TRUE; + agg_num_lengths(args[1]); + agg_num_lengths(args[2]); + max_length= my_decimal_precision_to_length(max_length + decimals, decimals, + unsigned_flag); } else + { max_length= max(args[1]->max_length, args[2]->max_length); + decimals= max(args[1]->decimals, args[2]->decimals); + unsigned_flag=args[1]->unsigned_flag && args[2]->unsigned_flag; + } } @@ -2633,16 +2637,6 @@ void Item_func_case::agg_str_lengths(Item* arg) } -void Item_func_case::agg_num_lengths(Item *arg) -{ - uint len= my_decimal_length_to_precision(arg->max_length, arg->decimals, - arg->unsigned_flag) - arg->decimals; - set_if_bigger(max_length, len); - set_if_bigger(decimals, arg->decimals); - unsigned_flag= unsigned_flag && arg->unsigned_flag; -} - - void Item_func_case::fix_length_and_dec() { Item **agg; diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index db831c7030c..6ecbfba140f 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -759,7 +759,6 @@ public: Item *find_item(String *str); CHARSET_INFO *compare_collation() { return cmp_collation.collation; } void agg_str_lengths(Item *arg); - void agg_num_lengths(Item *arg); }; diff --git a/sql/item_func.cc b/sql/item_func.cc index c0d08d9b213..c650b0ae933 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -5668,3 +5668,13 @@ void Item_func_sp::update_used_tables() const_item_cache= FALSE; } } + + +void Item_func::agg_num_lengths(Item *arg) +{ + uint len= my_decimal_length_to_precision(arg->max_length, arg->decimals, + arg->unsigned_flag) - arg->decimals; + set_if_bigger(max_length, len); + set_if_bigger(decimals, arg->decimals); + unsigned_flag= unsigned_flag && arg->unsigned_flag; +} diff --git a/sql/item_func.h b/sql/item_func.h index 6dcf32cba07..d4da0b7a853 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -193,6 +193,8 @@ public: void * arg, traverse_order order); bool is_expensive_processor(byte *arg); virtual bool is_expensive() { return 0; } +protected: + void agg_num_lengths(Item *arg); }; From 5ff1bcbc2a3cf3b28ce11673d89a1d2b3d8ad376 Mon Sep 17 00:00:00 2001 From: Gleb Shchepa Date: Fri, 12 Dec 2008 14:59:10 +0400 Subject: [PATCH 33/36] rollback of bug #40761 fix --- mysql-test/r/func_if.result | 9 ------- mysql-test/t/func_if.test | 13 ---------- sql/item_cmpfunc.cc | 50 +++++++++++++++++++++---------------- sql/item_cmpfunc.h | 1 + sql/item_func.cc | 10 -------- sql/item_func.h | 2 -- 6 files changed, 29 insertions(+), 56 deletions(-) diff --git a/mysql-test/r/func_if.result b/mysql-test/r/func_if.result index 16d6b435dc7..7ffc957e285 100644 --- a/mysql-test/r/func_if.result +++ b/mysql-test/r/func_if.result @@ -176,13 +176,4 @@ IF((ROUND(t1.a,2)=1), 2, IF((ROUND(t1.a,2)=1), 2, IF((R DROP TABLE t1; -CREATE TABLE t1 (c LONGTEXT); -INSERT INTO t1 VALUES(1), (2), (3), (4), ('12345678901234567890'); -SELECT * FROM (SELECT MAX(IF(1, CAST(c AS UNSIGNED), 0)) FROM t1) AS te; -MAX(IF(1, CAST(c AS UNSIGNED), 0)) -12345678901234567890 -SELECT * FROM (SELECT MAX(IFNULL(CAST(c AS UNSIGNED), 0)) FROM t1) AS te; -MAX(IFNULL(CAST(c AS UNSIGNED), 0)) -12345678901234567890 -DROP TABLE t1; End of 5.0 tests diff --git a/mysql-test/t/func_if.test b/mysql-test/t/func_if.test index 68728d6697e..8da10f36cbe 100644 --- a/mysql-test/t/func_if.test +++ b/mysql-test/t/func_if.test @@ -150,17 +150,4 @@ FROM t1; DROP TABLE t1; -# -# Bug #40761: Assert on sum func on IF(..., CAST(longtext AS UNSIGNED), signed) -# (was: LEFT JOIN on inline view crashes server) -# - -CREATE TABLE t1 (c LONGTEXT); -INSERT INTO t1 VALUES(1), (2), (3), (4), ('12345678901234567890'); - -SELECT * FROM (SELECT MAX(IF(1, CAST(c AS UNSIGNED), 0)) FROM t1) AS te; -SELECT * FROM (SELECT MAX(IFNULL(CAST(c AS UNSIGNED), 0)) FROM t1) AS te; - -DROP TABLE t1; - --echo End of 5.0 tests diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 759e912cc82..3b1d18b4252 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -2069,23 +2069,21 @@ Item_func_ifnull::fix_length_and_dec() { agg_result_type(&hybrid_type, args, 2); maybe_null=args[1]->maybe_null; + decimals= max(args[0]->decimals, args[1]->decimals); + unsigned_flag= args[0]->unsigned_flag && args[1]->unsigned_flag; if (hybrid_type == DECIMAL_RESULT || hybrid_type == INT_RESULT) { - max_length= 0; - decimals= 0; - unsigned_flag= TRUE; - agg_num_lengths(args[0]); - agg_num_lengths(args[1]); - max_length= my_decimal_precision_to_length(max_length + decimals, decimals, - unsigned_flag); + int len0= args[0]->max_length - args[0]->decimals + - (args[0]->unsigned_flag ? 0 : 1); + + int len1= args[1]->max_length - args[1]->decimals + - (args[1]->unsigned_flag ? 0 : 1); + + max_length= max(len0, len1) + decimals + (unsigned_flag ? 0 : 1); } else - { max_length= max(args[0]->max_length, args[1]->max_length); - decimals= max(args[0]->decimals, args[1]->decimals); - unsigned_flag=args[0]->unsigned_flag && args[1]->unsigned_flag; - } switch (hybrid_type) { case STRING_RESULT: @@ -2240,6 +2238,8 @@ void Item_func_if::fix_length_and_dec() { maybe_null=args[1]->maybe_null || args[2]->maybe_null; + decimals= max(args[1]->decimals, args[2]->decimals); + unsigned_flag=args[1]->unsigned_flag && args[2]->unsigned_flag; enum Item_result arg1_type=args[1]->result_type(); enum Item_result arg2_type=args[2]->result_type(); @@ -2276,20 +2276,16 @@ Item_func_if::fix_length_and_dec() if ((cached_result_type == DECIMAL_RESULT ) || (cached_result_type == INT_RESULT)) { - max_length= 0; - decimals= 0; - unsigned_flag= TRUE; - agg_num_lengths(args[1]); - agg_num_lengths(args[2]); - max_length= my_decimal_precision_to_length(max_length + decimals, decimals, - unsigned_flag); + int len1= args[1]->max_length - args[1]->decimals + - (args[1]->unsigned_flag ? 0 : 1); + + int len2= args[2]->max_length - args[2]->decimals + - (args[2]->unsigned_flag ? 0 : 1); + + max_length=max(len1, len2) + decimals + (unsigned_flag ? 0 : 1); } else - { max_length= max(args[1]->max_length, args[2]->max_length); - decimals= max(args[1]->decimals, args[2]->decimals); - unsigned_flag=args[1]->unsigned_flag && args[2]->unsigned_flag; - } } @@ -2637,6 +2633,16 @@ void Item_func_case::agg_str_lengths(Item* arg) } +void Item_func_case::agg_num_lengths(Item *arg) +{ + uint len= my_decimal_length_to_precision(arg->max_length, arg->decimals, + arg->unsigned_flag) - arg->decimals; + set_if_bigger(max_length, len); + set_if_bigger(decimals, arg->decimals); + unsigned_flag= unsigned_flag && arg->unsigned_flag; +} + + void Item_func_case::fix_length_and_dec() { Item **agg; diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 6ecbfba140f..db831c7030c 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -759,6 +759,7 @@ public: Item *find_item(String *str); CHARSET_INFO *compare_collation() { return cmp_collation.collation; } void agg_str_lengths(Item *arg); + void agg_num_lengths(Item *arg); }; diff --git a/sql/item_func.cc b/sql/item_func.cc index c650b0ae933..c0d08d9b213 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -5668,13 +5668,3 @@ void Item_func_sp::update_used_tables() const_item_cache= FALSE; } } - - -void Item_func::agg_num_lengths(Item *arg) -{ - uint len= my_decimal_length_to_precision(arg->max_length, arg->decimals, - arg->unsigned_flag) - arg->decimals; - set_if_bigger(max_length, len); - set_if_bigger(decimals, arg->decimals); - unsigned_flag= unsigned_flag && arg->unsigned_flag; -} diff --git a/sql/item_func.h b/sql/item_func.h index d4da0b7a853..6dcf32cba07 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -193,8 +193,6 @@ public: void * arg, traverse_order order); bool is_expensive_processor(byte *arg); virtual bool is_expensive() { return 0; } -protected: - void agg_num_lengths(Item *arg); }; From 5753307aefaf378db280fd53e2e58fa7ce3d2295 Mon Sep 17 00:00:00 2001 From: Andrei Elkin Date: Fri, 12 Dec 2008 14:52:20 +0200 Subject: [PATCH 34/36] Bug #41383 Test commit1_innodb fails with binlog-format=row The test explicitly warned on existence of a bug in its 27th part. The expected values of prepare and commit counters changed, corrected, by fixes to bug#40221. Notice, that binlog does not have to register for a statement with the statement binlog-format because the statement rollback does not need to do anything in that mode. It's not so with the ROW format which was bug#40221 concern. Fixed with correcting the expected values of the mentioned counters and explained that with comments in the test. mysql-test/include/commit.inc: Removing `Sic' that warned on a bug (The one is bug#40221). Correcting the expected values of prepare and commit counters due to fixes to bug#40221. mysql-test/r/commit_1innodb.result: results changed. --- mysql-test/include/commit.inc | 7 +++++-- mysql-test/r/commit_1innodb.result | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/mysql-test/include/commit.inc b/mysql-test/include/commit.inc index 98f9c93b25a..48b0eac12e5 100644 --- a/mysql-test/include/commit.inc +++ b/mysql-test/include/commit.inc @@ -671,8 +671,11 @@ call p_verify_status_increment(2, 2, 2, 2); savepoint a; call p_verify_status_increment(0, 0, 0, 0); insert t1 set a=4; ---echo # Sic: a bug. Binlog did not register itself this time. -call p_verify_status_increment(1, 0, 1, 0); +--echo # Binlog does not register itself this time for other than the 1st +--echo # statement of the transaction with MIXED/STATEMENT binlog_format. +--echo # It needs registering with the ROW format. Therefore 1,0,2,2 are +--echo # the correct arguments to this test after bug#40221 fixed. +call p_verify_status_increment(1, 0, 2, 2); release savepoint a; rollback; call p_verify_status_increment(0, 0, 0, 0); diff --git a/mysql-test/r/commit_1innodb.result b/mysql-test/r/commit_1innodb.result index a2c1eb9a82e..766b920f630 100644 --- a/mysql-test/r/commit_1innodb.result +++ b/mysql-test/r/commit_1innodb.result @@ -770,8 +770,11 @@ call p_verify_status_increment(0, 0, 0, 0); SUCCESS insert t1 set a=4; -# Sic: a bug. Binlog did not register itself this time. -call p_verify_status_increment(1, 0, 1, 0); +# Binlog does not register itself this time for other than the 1st +# statement of the transaction with MIXED/STATEMENT binlog_format. +# It needs registering with the ROW format. Therefore 1,0,2,2 are +# the correct arguments to this test after bug#40221 fixed. +call p_verify_status_increment(1, 0, 2, 2); SUCCESS release savepoint a; From af5cf536bc5246e49a4874a225931a838659cae0 Mon Sep 17 00:00:00 2001 From: Gleb Shchepa Date: Fri, 12 Dec 2008 17:16:25 +0400 Subject: [PATCH 35/36] Bug #40761: Assert on sum function on IF(..., CAST(longtext AS UNSIGNED), signed_val) (was: LEFT JOIN on inline view crashes server) Select from a LONGTEXT column wrapped with an expression like "IF(..., CAST(longtext_column AS UNSIGNED), smth_signed)" failed an assertion or crashed the server. IFNULL function was affected too. LONGTEXT column item has a maximum length of 32^2-1 bytes, at the same time this is a maximum possible length of any MySQL item. CAST(longtext_column AS UNSIGNED) returns some unsigned numeric result of length 32^2-1, so the result of IF/IFNULL function of this number and some other signed number will have text length of (32^2-1)+1=32^2 (one byte for the minus sign) - there is integer overflow, and the length is equal to zero. That caused assert/crash. CAST AS UNSIGNED function has been modified to limit maximal length of resulting number to 67 (maximal length of DECIMAL and two characters for minus sign and dot). mysql-test/r/func_if.result: Added test case for bug #40761. mysql-test/t/func_if.test: Added test case for bug #40761. sql/item_func.h: Bug #40761: Assert on sum function on IF(..., CAST(longtext AS UNSIGNED), signed_val) CAST AS UNSIGNED function has been modified to limit maximal length of resulting number to 67 (maximal length of DECIMAL and two characters for minus sign and dot). --- mysql-test/r/func_if.result | 9 +++++++++ mysql-test/t/func_if.test | 14 ++++++++++++++ sql/item_func.h | 5 ++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/func_if.result b/mysql-test/r/func_if.result index 7ffc957e285..16d6b435dc7 100644 --- a/mysql-test/r/func_if.result +++ b/mysql-test/r/func_if.result @@ -176,4 +176,13 @@ IF((ROUND(t1.a,2)=1), 2, IF((ROUND(t1.a,2)=1), 2, IF((R DROP TABLE t1; +CREATE TABLE t1 (c LONGTEXT); +INSERT INTO t1 VALUES(1), (2), (3), (4), ('12345678901234567890'); +SELECT * FROM (SELECT MAX(IF(1, CAST(c AS UNSIGNED), 0)) FROM t1) AS te; +MAX(IF(1, CAST(c AS UNSIGNED), 0)) +12345678901234567890 +SELECT * FROM (SELECT MAX(IFNULL(CAST(c AS UNSIGNED), 0)) FROM t1) AS te; +MAX(IFNULL(CAST(c AS UNSIGNED), 0)) +12345678901234567890 +DROP TABLE t1; End of 5.0 tests diff --git a/mysql-test/t/func_if.test b/mysql-test/t/func_if.test index 8da10f36cbe..4efea8e195e 100644 --- a/mysql-test/t/func_if.test +++ b/mysql-test/t/func_if.test @@ -150,4 +150,18 @@ FROM t1; DROP TABLE t1; +# +# Bug #40761: Assert on sum func on IF(..., CAST(longtext AS UNSIGNED), signed) +# (was: LEFT JOIN on inline view crashes server) +# + +CREATE TABLE t1 (c LONGTEXT); +INSERT INTO t1 VALUES(1), (2), (3), (4), ('12345678901234567890'); + +SELECT * FROM (SELECT MAX(IF(1, CAST(c AS UNSIGNED), 0)) FROM t1) AS te; +SELECT * FROM (SELECT MAX(IFNULL(CAST(c AS UNSIGNED), 0)) FROM t1) AS te; + +DROP TABLE t1; + + --echo End of 5.0 tests diff --git a/sql/item_func.h b/sql/item_func.h index 6dcf32cba07..89c841abb75 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -351,7 +351,10 @@ public: Item_func_unsigned(Item *a) :Item_func_signed(a) {} const char *func_name() const { return "cast_as_unsigned"; } void fix_length_and_dec() - { max_length=args[0]->max_length; unsigned_flag=1; } + { + max_length= min(args[0]->max_length, DECIMAL_MAX_PRECISION + 2); + unsigned_flag=1; + } longlong val_int(); void print(String *str); }; From 54bf3474dc60aa3ba2edfa9ac16ca6d9e2694e8e Mon Sep 17 00:00:00 2001 From: Andrei Elkin Date: Fri, 12 Dec 2008 21:15:56 +0200 Subject: [PATCH 36/36] Bug #41003 log_bin_trust_function_creators_func test explicitly warns on a bug in it The test 1. did not verify that CREATE FUNCTION shall fails in a case of active binlog and @@log_bin_trust_function_creators is zero if there is no DETERMINISTIC qualifier and super user privilege; 2. contained an explit warning on that CREATE FUNCTION actually succeeded whereas it was supposed to fail; 3. did not demand the bin-log be set ON even though it has contained the opt file explictily setting the name for the binlog file. Fixed 1-3 with modifying the test accordingly. mysql-test/r/log_bin_trust_function_creators_func.result: Bug #41003 changed results. mysql-test/t/log_bin_trust_function_creators_func-master.opt: removed unnecessary file, the specificly requested binlog file name was not used in the test. mysql-test/t/log_bin_trust_function_creators_func.test: corrected the test that previously: 1. did not verify that CREATE FUNCTION shall fail in some cases; 2. contained an explit warning on that CREATE FUNCTION actually --- ...og_bin_trust_function_creators_func.result | 25 +++++++++++---- ...in_trust_function_creators_func-master.opt | 1 - .../log_bin_trust_function_creators_func.test | 32 ++++++++++++++++--- 3 files changed, 47 insertions(+), 11 deletions(-) delete mode 100644 mysql-test/t/log_bin_trust_function_creators_func-master.opt diff --git a/mysql-test/r/log_bin_trust_function_creators_func.result b/mysql-test/r/log_bin_trust_function_creators_func.result index e109b53a8e7..50de0466a0d 100644 --- a/mysql-test/r/log_bin_trust_function_creators_func.result +++ b/mysql-test/r/log_bin_trust_function_creators_func.result @@ -10,10 +10,7 @@ create table t2 (a INT); SELECT @@log_bin_trust_function_creators; @@log_bin_trust_function_creators 0 -SELECT @@sql_log_bin; -@@sql_log_bin -1 -## Creating new function f1 ## +## Creating new function f1 fails because no DETERMINISTIC ### CREATE FUNCTION f1(a INT) RETURNS INT BEGIN IF (a < 3) THEN @@ -21,8 +18,24 @@ INSERT INTO t2 VALUES (a); END IF; RETURN 1; END| -'Bug: Create Function should give error here because non-super user'; -'is creating function here'; +ERROR HY000: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) +## Creating new function f1 fails because non-super user ## +CREATE FUNCTION f1(a INT) RETURNS INT DETERMINISTIC +BEGIN +IF (a < 3) THEN +INSERT INTO t2 VALUES (a); +END IF; +RETURN 1; +END| +ERROR HY000: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) +## Creating new function f1 succeeds ## +CREATE FUNCTION f1(a INT) RETURNS INT DETERMINISTIC +BEGIN +IF (a < 3) THEN +INSERT INTO t2 VALUES (a); +END IF; +RETURN 1; +END| ## Creating new table t1 ## CREATE TABLE t1 (a INT); ## Inserting some records in t1 ## diff --git a/mysql-test/t/log_bin_trust_function_creators_func-master.opt b/mysql-test/t/log_bin_trust_function_creators_func-master.opt deleted file mode 100644 index 2dd562ea1aa..00000000000 --- a/mysql-test/t/log_bin_trust_function_creators_func-master.opt +++ /dev/null @@ -1 +0,0 @@ ---log-bin=test.log diff --git a/mysql-test/t/log_bin_trust_function_creators_func.test b/mysql-test/t/log_bin_trust_function_creators_func.test index db91128b225..38207babc03 100644 --- a/mysql-test/t/log_bin_trust_function_creators_func.test +++ b/mysql-test/t/log_bin_trust_function_creators_func.test @@ -20,6 +20,8 @@ # # ############################################################################### +source include/have_log_bin.inc; + --disable_warnings drop table if exists t1; --enable_warnings @@ -45,10 +47,10 @@ connect (test_con1,localhost,tt,,); connection test_con1; SELECT @@log_bin_trust_function_creators; -SELECT @@sql_log_bin; ---echo ## Creating new function f1 ## +--echo ## Creating new function f1 fails because no DETERMINISTIC ### delimiter |; +--error ER_BINLOG_UNSAFE_ROUTINE CREATE FUNCTION f1(a INT) RETURNS INT BEGIN IF (a < 3) THEN @@ -58,8 +60,30 @@ BEGIN END| delimiter ;| ---echo 'Bug: Create Function should give error here because non-super user'; ---echo 'is creating function here'; +--echo ## Creating new function f1 fails because non-super user ## +delimiter |; +--error ER_BINLOG_CREATE_ROUTINE_NEED_SUPER +CREATE FUNCTION f1(a INT) RETURNS INT DETERMINISTIC +BEGIN + IF (a < 3) THEN + INSERT INTO t2 VALUES (a); + END IF; + RETURN 1; +END| +delimiter ;| + +connection default; + +--echo ## Creating new function f1 succeeds ## +delimiter |; +CREATE FUNCTION f1(a INT) RETURNS INT DETERMINISTIC +BEGIN + IF (a < 3) THEN + INSERT INTO t2 VALUES (a); + END IF; + RETURN 1; +END| +delimiter ;| --echo ## Creating new table t1 ## CREATE TABLE t1 (a INT);